1.SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);求的是什么,和MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);有什么关系和区别;
2.柱子的开盘价怎么求??
1.SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);求的是什么,和MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);有什么关系和区别;
2.柱子的开盘价怎么求??
int buyorsell() //在这个函数计算设置你的交易信号 这里使用MACD 和MA 做例子
{
double MacdCurrent, MacdPrevious, SignalCurrent;
double SignalPrevious, MaCurrent, MaPrevious;
MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);
if(MacdCurrent<0 & MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious
& MaCurrent>MaPrevious)
return (1); // 买 Ma在上升,Macd在0线上,并且两线上交叉
if(MacdCurrent>0 & MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious
& MaCurrent<MaPrevious)
return (-1); // 卖
return (0); //不交易
}
Buffer1[ i ]=iMACD(NULL,0,Fast,Slow,Signal,PRICE_CLOSE,MODE_MAIN,i); //调用MACD指标函数为Buffer1数组负值。
看下iMACD()这个内置指标函数的定义。
iMACD( string symbol, int timeframe, int fast_ema_period, int slow_ema_period, int signal_period, int applied_price, int mode, int shift)
symbol: 货币标识。通用指标用NULL常量。
timeframe: 计算所依据的图表时间周期 。0表示依据当前图表周期。
fast_ema_period: 快线周期
slow_ema_period: 慢线周期
signal_period: 信号线周期
applied_price: 计算所用价格模式
mode: 指标索引模式。MACD指标有两条线,因此这个位置有0,1两个选择。也可以用mt4预定义常量。
shift: 索引号
这里Buffer1取macd主线数据。Buffer2取macd信号线数据。
具体教程参考这里 http://bbs.forex.com.cn/showtopic-68436.aspx
还有可参考MetaTrader编程入门教程 http://bbs.forex.com.cn/attachment.aspx?attachmentid=1640
最详尽的解释在这 http://articles.mql4.com/cn/399