您需要 登录 才可以下载或查看,没有帐号?注册
各位大大好:
本人在其他中找到,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);
}
//+------------------------------------------------------------------+复制代码
外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!