下载MetaTrader 5
要添加评论,请登录注册
如何在 MetaTrader应用商店购买产品?阅读该文章!
zheling
20
zheling 2009.03.29 14:16 
我想做个指标:1.首先确定当前20均线的底部. 2.再确定上一次20均线的底部. 3.再比较两次底部值的差小于一个值,做一个箭头提示. 请高手帮忙,先谢谢了!
okwh
1629
okwh 2009.03.30 09:11  
底部? 底部的数学表达式是什么?
zheling
20
zheling 2009.03.30 12:29  

我想在EA中调用上一次底部数值,不想用zig指标,就用ma指标判断底部.

底部表达式:当前的ma值>5天前的ma值 && 5天前的ma值<10天前的ma值.

这是当前底部的判断和d值:

int start()

{

int d=0;

double maCurrent=iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,0);

double ma1Previous=iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,4);

double ma2Previous=iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,9);

...............

for(int i=0;i<limit;i++)
{
if(maCurrent>ma1Previous && ma1Previous<ma2Previous)
{
d=ma1Previous ;
}

break;
}

我想知道如何调用上次底部d的值?请帮忙写下,谢谢!

zheling
20
zheling 2009.03.30 14:55  

纠正一下,break放到if里:
for(int i=0;i<limit;i++)
{
if(maCurrent>ma1Previous && ma1Previous<ma2Previous)
{
d=ma1Previous ;
break;
}

}

我想知道如何调用上次底部d的值和当前的d值比较?

okwh
1629
okwh 2009.03.31 06:04  

int d0=0,d1=0;

double dd0=0,dd1=0;

double maCurrent=iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,0);

double ma1Previous=iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,4);

double ma2Previous=iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,9);

...............

for(int i=0;i<limit;i++)
{

maCurrent=iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,i);

ma1Previous=iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,i+4);

ma2Previous=iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,i+9);

if(maCurrent>ma1Previous && ma1Previous<ma2Previous)
{
d0=i;

dd0=ma1Previous ;

break;

}

}

既然知道了底部,再往前搜就是上次的了

for(int i=d0+10;i<limit;i++)
{

maCurrent=iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,i);

ma1Previous=iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,i+4);

ma2Previous=iMA(NULL,0,5,0,MODE_SMA,PRICE_LOW,i+9);

if(maCurrent>ma1Previous && ma1Previous<ma2Previous)
{
d1=i;

dd1=ma1Previous ;

break;


}

}

zheling
20
zheling 2009.03.31 13:39  
太感谢了!果真是高手!用for语句可以做到这点.不知道有没有更好的方法做到这点?再次感谢你的帮助!
/
要添加评论,请登录注册