求解析程式容
各位大大好:本人在其他中找到,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);
}
//+------------------------------------------------------------------+ (*^__^*) 嘻嘻…… 经过你的指点 我还是没找到在哪 ~~~ 晕死也不多加点分 呵呵,找个机会... 就为赚分嘛 似曾相识的感觉 楼主有没有好的EA推荐 资金量设置的是10000美元啊, //+------------------------------------------------------------------+
//| 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]