客服热线:18391752892

求解析程式容

   日期:2019-01-12     浏览:588    
马上注册,结交更多好友,下载更多资源

您需要 登录 才可以下载或查看,没有帐号?注册 各位大大好:
   本人在其他中找到,1段程式,想把它改成VT程式,但本人MT4程式不懂,可否高手忙用白解析以下各程式之作用,或有人可直接它改成VT程式,惑激不!
 //+------------------------------------------------------------------+
 //| PriceChannel_Stop_v1                               |
 //+------------------------------------------------------------------+
 int start()
    {
   int    i,shift,trend;
   double high, low, price;
   double smax[5000],smin[5000],bsmax[5000],bsmin[5000];
   
   for (shift=Nbars-1;shift shift--)
   {
   UpTrendBuffer[shift]=EMPTY_VALUE;
   DownTrendBuffer[shift]=EMPTY_VALUE;
   UpTrendSignal[shift]=EMPTY_VALUE;
   DownTrendSignal[shift]=EMPTY_VALUE;
   UpTrendLine[shift]=EMPTY_VALUE;
   DownTrendLine[shift]=EMPTY_VALUE;
   }
   for (shift=Nbars-ChannelPeriod-1;shift shift--)
   {     
     high=High[shift]; low=Low[shift]; i=shift-1+ChannelPeriod;
     while(i =shift)
        {
       price=High i
       if(highprice) low=price;
       i--;
        }
      smax[shift]=high;
      smin[shift]=low;
     
      bsmax[shift]=smax[shift]-(smax[shift]-smin[shift])*Risk;
         bsmin[shift]=smin[shift]+(smax[shift]-smin[shift])*Risk;
     
      if (Close[shift] bsmax[shift+1]) trend=1;
         if (Close[shift]0 bsmin[shift]0)
         {
           if (Signal 0 UpTrendBuffer[shift+1]==-1.0)
           {
           UpTrendSignal[shift]=bsmin[shift];
           if(Line 0) UpTrendLine[shift]=bsmin[shift];
           }
           else
           {
           UpTrendBuffer[shift]=bsmin[shift];
           if(Line 0) UpTrendLine[shift]=bsmin[shift];
           UpTrendSignal[shift]=-1;
           }
         if (Signal==2) UpTrendBuffer[shift]=0;   
         DownTrendBuffer[shift]=-1.0;
         DownTrendLine[shift]=EMPTY_VALUE;
         }
         if (trend0 DownTrendBuffer[shift+1]==-1.0)
           {
           DownTrendSignal[shift]=bsmax[shift];
           if(Line 0) DownTrendLine[shift]=bsmax[shift];
           }
           else
           {
           DownTrendBuffer[shift]=bsmax[shift];
           if(Line 0)DownTrendLine[shift]=bsmax[shift];
           DownTrendSignal[shift]=-1;
           }
         if (Signal==2) DownTrendBuffer[shift]=0;   
         UpTrendBuffer[shift]=-1.0;
         UpTrendLine[shift]=EMPTY_VALUE;
         }
         
       
   }
   return(0);
    }
 //+------------------------------------------------------------------+[/td][/tr]
//+------------------------------------------------------------------+
//| PriceChannel_Stop_v1 |
//+------------------------------------------------------------------+
int start()
{
int i,shift,trend;
double high, low, price;
double smax[5000],smin[5000],bsmax[5000],bsmin[5000];
//数组初始化 全部设为 空值 其实这段没啥用
for (shift=Nbars-1;shift shift--)
{
UpTrendBuffer[shift]=EMPTY_VALUE;
DownTrendBuffer[shift]=EMPTY_VALUE;
UpTrendSignal[shift]=EMPTY_VALUE;
DownTrendSignal[shift]=EMPTY_VALUE;
UpTrendLine[shift]=EMPTY_VALUE;
DownTrendLine[shift]=EMPTY_VALUE;
}
//循环计算数组数值
for (shift=Nbars-ChannelPeriod-1;shift shift--)//大循环是计算最近未计算过的K线的对应数组数值
{ //提取当前K线的最高最低 并赋值while循环开始的位置为当前K线往右第ChannelPeriod个位置
high=High[shift]; low=Low[shift]; i=shift-1+ChannelPeriod;
while(i =shift)//循环从当前K线往右第ChannelPeriod个位置 递减到当前K线位置
{
price=High;//这地方High好像错的 应该有参数的
if(high price) high=price;
price=Low;//这地方Low好像错的 应该有参数的
if(low price) low=price;
i--;
} //上面是循环找出从当前K线往右第ChannelPeriod个位置 递减到当前K线位置之间的最高价和最低价,这里这样计算似乎是很笨的办法,应该用iHightest iLowest直接一句话就可以算出来
smax[shift]=high;//记录到数组中,等于数组中存储着每一K线到其右侧ChannelPeriod个位置之间的最大值和最小值
smin[shift]=low;

bsmax[shift]=smax[shift]-(smax[shift]-smin[shift])*Risk;//Risk是作者表达的风险百分比的意思 将最大值数组和最小值数组按风险比例计算出另一种状态,并存储在新的数组中
bsmin[shift]=smin[shift]+(smax[shift]-smin[shift])*Risk;

if (Close[shift] bsmax[shift+1]) trend=1; //标记每一K线收盘价与风险比例计算后的 最大值数组进行比较,大于最大值数组数值的标记为1
if (Close[shift] bsmin[shift+1]) trend=-1;//标记每一K线收盘价与风险比例计算后的 最小值数组进行比较,小于最小值数组数值的标记为-1

if(trend 0 bsmin[shift] bsmin[shift+1]) bsmin[shift]=bsmin[shift+1];//如果当前K线满足最大值的比较条件,且对应最小值数据递减。则重置最小值数组当前数据
if(trend 0 bsmax[shift] bsmax[shift+1]) bsmax[shift]=bsmax[shift+1];

if (trend 0) //这里Signal Line都没说是什麽,所以不知道细节该如何说明
{
if (Signal 0 UpTrendBuffer[shift+1]==-1.0)
{
UpTrendSignal[shift]=bsmin[shift];
if(Line 0) UpTrendLine[shift]=bsmin[shift];
}
else
{
UpTrendBuffer[shift]=bsmin[shift];
if(Line 0) UpTrendLine[shift]=bsmin[shift];
UpTrendSignal[shift]=-1;
}
if (Signal==2) UpTrendBuffer[shift]=0;
DownTrendBuffer[shift]=-1.0;
DownTrendLine[shift]=EMPTY_VALUE;
}
if (trend 0)
{
if (Signal 0 DownTrendBuffer[shift+1]==-1.0)
{
DownTrendSignal[shift]=bsmax[shift];
if(Line 0) DownTrendLine[shift]=bsmax[shift];
}
else
{
DownTrendBuffer[shift]=bsmax[shift];
if(Line 0)DownTrendLine[shift]=bsmax[shift];
DownTrendSignal[shift]=-1;
}
if (Signal==2) DownTrendBuffer[shift]=0;
UpTrendBuffer[shift]=-1.0;
UpTrendLine[shift]=EMPTY_VALUE;
}


}
return(0);
}
//+------------------------------------------------------------------+复制代码
外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!


特别提示:本信息由相关企业自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关行情
推荐行情
点击排行