MT5编程实例课程(阿郎)第三讲:均线交叉EA

2019-09-01 03:23:10 阅读 :
#property copyright "Simon Yau"

#property link "http://www.xxxxxx.com"

#property version "1.00"

int maFastHandle, maSlowHandle; //定义两个指标操作句柄,用来操作两条均线

double maFast[], maSlow[]; //定义两个数组,用于保存均线的数值

//+------------------------------------------------------------------+

//| Expert initialization function |

//+------------------------------------------------------------------+

int OnInit()

{

//---

//在初始化函数OnInit中,分别指定两个操作句柄所对应的均线指标

maFastHandle = iMA(Symbol(), PERIOD_CURRENT, 5, 0, MODE_SMA, PRICE_CLOSE); //对应5期均线

maSlowHandle = iMA(Symbol(), PERIOD_CURRENT, 10, 0, MODE_SMA, PRICE_CLOSE); //对应10期均线

 

ArraySetAsSeries(maFast, true); //将数组设置为倒序保存,即图表上方向由右向左

ArraySetAsSeries(maSlow, true); //同上

//---

return(0);

}

//+------------------------------------------------------------------+

//| Expert deinitialization function |

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| Expert tick function |

//+------------------------------------------------------------------+

void OnTick()

{

//---

MqlTradeRequest request;

MqlTradeResult result;

 

CopyBuffer(maFastHandle, 0, 0, 3, maFast); //将句柄对应的指标数值复制入数组

CopyBuffer(maSlowHandle, 0, 0, 3, maSlow); //同上

 

if (maFast[1]>maSlow[1] && maFast[2]<=maSlow[2]) //数组获得指标的数值后,就可以进行均线交叉的判定了

{

request.action = TRADE_ACTION_DEAL;

request.symbol = Symbol();

request.volume = 0.1;

request.price = SymbolInfoDouble(Symbol(), SYMBOL_ASK);

request.type = ORDER_TYPE_BUY;

 

OrderSend(request, result); //下单

}

else if (maFast[1]<maSlow[1] && maFast[2]>=maSlow[2])

{

request.action = TRADE_ACTION_DEAL;

request.symbol = Symbol();

request.volume = 0.1;

request.price = SymbolInfoDouble(Symbol(), SYMBOL_BID);

request.type = ORDER_TYPE_SELL;

 

OrderSend(request, result); 

}

作者:阿郎(shawnyau)

本文标题:MT5编程实例课程(阿郎)第三讲:均线交叉EA - 外汇智能交易编程
本文地址:http://www.newsqg.com/fxschool/autotrading/8145.html

相关文章

你可能感兴趣