|
|
#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); } } |
|