//+------------------------------------------------------------------+
//| MyEMA.mq4 |
//| Copyright 2021, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
//--- input parameters
extern double MyLot=0.01; //下单量
string MySymbol="0"; //货币对
extern int EMA1=14; //EMA1
extern int EMA2=42; //EMA2
extern int TimeF=PERIOD_M30; //图表周期
extern int SLPoint=0; //止损点数
extern int TPPoint=0; //止盈点数
double TPPrice=0.0; //止盈价格
double SLPrice=0.0; //止损价格
int Slippage; //滑点
int Magic=356735; //魔术号
int ticket; //买卖信号
bool Alarm=false; //启动警报
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
int start()
{
//主程序
double maShort;
double maLong;
double maShort1;
double maLong2;
int i,r,total;
int BuyTypelot=0;
int SellTypelot=0;
bool result=false;
MySymbol=Symbol();
maShort=iMA(MySymbol,TimeF,EMA1,0,MODE_SMA,PRICE_CLOSE,0);
maLong=iMA(MySymbol,TimeF,EMA2,0,MODE_SMA,PRICE_CLOSE,0);
maShort1=iMA(MySymbol,TimeF,EMA1,0,MODE_SMA,PRICE_CLOSE,1);
maLong2=iMA(MySymbol,TimeF,EMA2,0,MODE_SMA,PRICE_CLOSE,1);
total=OrdersTotal();
//统计多单、空单的数量
for(i=0; i<total; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==MySymbol&&OrderMagicNumber()==Magic)
{
if(OrderType()<=OP_BUY)
{
BuyTypelot++;
Print("多单数量:", BuyTypelot);
return(0);
}
else
{
SellTypelot++;
Print("空单数量:",SellTypelot);
return(0);
}
}
}
}
//如果多单小于1,金叉时下多单
if(BuyTypelot<1)
{
if(maShort>maLong&&maShort1<maLong2&&Close[0]>maShort)
{
ticket=OrderSend(MySymbol,OP_BUY,MyLot,MarketInfo(MySymbol,MODE_ASK),Slippage,SLPrice,TPPrice,"下多单",Magic,0,SYMBOL_ARROWUP);
if(ticket<0)
{
if(Alarm)
{Alert("下多单没有成功!",GetLastError());}
}
else
{
if(Alarm)
{Alert("已经成功下了多单!");}
}
return(0);
}
}
//如果空单小于1,死叉时下空单
if(SellTypelot<1)
{
if(maShort<maLong&&maShort1>maLong2&&Close[0]<maShort)
{
ticket=OrderSend(MySymbol,OP_SELL,MyLot,MarketInfo(MySymbol,MODE_BID),Slippage,SLPrice,TPPrice,"下空单",Magic,0,SYMBOL_ARROWDOWN);
if(ticket<0)
{
if(Alarm)
{Alert("下空单没有成功!",GetLastError());}
}
else
{
if(Alarm)
{Alert("已经成功下了空单!");}
}
return(0);
}
}
total=OrdersTotal();
for(r=0; r<total; r++)
{
if(OrderSelect(r,SELECT_BY_POS,MODE_TRADES))
{
//选择符合要求的订单
if(OrderSymbol()==MySymbol&&OrderMagicNumber()==Magic)
{
//如果出现死叉信号,卖出
if(maShort<maLong && maShort1>maLong2 &&Close[0]<maShort&& OrderType()==OP_BUY)
{
result=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
if(result=false)
{
Print("多单平仓未成功!",GetLastError());
return(0);
}
}
if(maShort>maLong && maShort1<maLong2&&Close[0]<maShort&& OrderType()==OP_SELL)
{
result=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Yellow);
if(result=false)
{
Print("空单平仓未成功!",GetLastError());
return(0);
}
}
}
}
}
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
- EA不会在多对上运行,需要帮助
- 如何编码?
- 看看这个怎么样!!!!!~~~