句号 发表于 2011-9-30 08:37:28

求解析程式容

各位大大好:
   本人在其他中找到,1段程式,想把它改成VT程式,但本人MT4程式不懂,可否高手忙用白解析以下各程式之作用,或有人可直接它改成VT程式,惑激不!
//+------------------------------------------------------------------+
//| PriceChannel_Stop_v1                                             |
//+------------------------------------------------------------------+
int start()
    {
   int    i,shift,trend;
   double high, low, price;
   double smax,smin,bsmax,bsmin;
   
   for (shift=Nbars-1;shift>=0;shift--)
   {
   UpTrendBuffer=EMPTY_VALUE;
   DownTrendBuffer=EMPTY_VALUE;
   UpTrendSignal=EMPTY_VALUE;
   DownTrendSignal=EMPTY_VALUE;
   UpTrendLine=EMPTY_VALUE;
   DownTrendLine=EMPTY_VALUE;
   }
   for (shift=Nbars-ChannelPeriod-1;shift>=0;shift--)
   {      
      high=High; low=Low; i=shift-1+ChannelPeriod;
      while(i>=shift)
          {
         price=High<i>;
         if(highprice)low=price;
         i--;
          }
       smax=high;
       smin=low;
      
       bsmax=smax-(smax-smin)*Risk;
            bsmin=smin+(smax-smin)*Risk;
      
       if (Close>bsmax)trend=1;
            if (Close0 && bsmin0)
            {
               if (Signal>0 && UpTrendBuffer==-1.0)
               {
               UpTrendSignal=bsmin;
               if(Line>0) UpTrendLine=bsmin;
               }
               else
               {
               UpTrendBuffer=bsmin;
               if(Line>0) UpTrendLine=bsmin;
               UpTrendSignal=-1;
               }
            if (Signal==2) UpTrendBuffer=0;   
            DownTrendBuffer=-1.0;
            DownTrendLine=EMPTY_VALUE;
            }
            if (trend0 && DownTrendBuffer==-1.0)
               {
               DownTrendSignal=bsmax;
               if(Line>0) DownTrendLine=bsmax;
               }
               else
               {
               DownTrendBuffer=bsmax;
               if(Line>0)DownTrendLine=bsmax;
               DownTrendSignal=-1;
               }
            if (Signal==2) DownTrendBuffer=0;   
            UpTrendBuffer=-1.0;
            UpTrendLine=EMPTY_VALUE;
            }
            
         
   }
   return(0);
    }
//+------------------------------------------------------------------+

搁浅 发表于 2012-11-25 16:59:05

(*^__^*) 嘻嘻……   

盛满我的思念 发表于 2012-11-25 16:59:05

经过你的指点 我还是没找到在哪 ~~~

wenken123 发表于 2012-11-25 18:27:51

晕死也不多加点分

pop 发表于 2012-11-25 18:27:51

呵呵,找个机会...

dmpdc 发表于 2012-11-25 18:27:51

就为赚分嘛

汇眼识金 发表于 2012-11-25 18:27:51

似曾相识的感觉

gp123456789 发表于 2012-11-25 18:27:51

楼主有没有好的EA推荐

fuckqq 发表于 2012-11-25 18:27:51

资金量设置的是10000美元啊,

ea专业户 发表于 2012-11-26 09:05:00

//+------------------------------------------------------------------+
//| PriceChannel_Stop_v1 |
//+------------------------------------------------------------------+
int start()
{
int i,shift,trend;
double high, low, price;
double smax,smin,bsmax,bsmin;
//数组初始化 全部设为 空值 其实这段没啥用
for (shift=Nbars-1;shift>=0;shift--)
{
UpTrendBuffer=EMPTY_VALUE;
DownTrendBuffer=EMPTY_VALUE;
UpTrendSignal=EMPTY_VALUE;
DownTrendSignal=EMPTY_VALUE;
UpTrendLine=EMPTY_VALUE;
DownTrendLine=EMPTY_VALUE;
}
//循环计算数组数值
for (shift=Nbars-ChannelPeriod-1;shift>=0;shift--)//大循环是计算最近未计算过的K线的对应数组数值
{ //提取当前K线的最高最低 并赋值while循环开始的位置为当前K线往右第ChannelPeriod个位置
high=High; low=Low; 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=high;//记录到数组中,等于数组中存储着每一K线到其右侧ChannelPeriod个位置之间的最大值和最小值
smin=low;

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

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

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

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


}
return(0);
}
//+------------------------------------------------------------------+
页: [1]
查看完整版本: 求解析程式容