EA模版分享 解决重复下单,开单不能下止损单等…,附带源码
//EA 模版功能
//1.同一标识不会重复下单
//2.止损止盈可以设置为0
//3.兼容有些平台 开单不能下止损的问题
//
#property copyright “wangyu”
//定义全局变量
double ema10_15M;
double ema20_15M;
double ema10_30M;
double ema20_30M;
double k;
double d;
double prevK;
double prevD;
//+——————————————————————+
//| expert initialization function |
//+——————————————————————+
int init()
{
return(0);
}
//+——————————————————————+
//| expert deinitialization function |
//+——————————————————————+
int deinit()
{
return(0);
}
//+——————————————————————+
//| expert start function |
//+——————————————————————+
int start()
{
int buyTicket=0;
int sellTicket=0;
getData();
if(needOpenBuy())
{
buyTicket = buy(0.01,250,250,”buy”,0);
if(buyTicket>0)
{
Alert(“多单下单成功,订单号码是:”+buyTicket);
}else if(buyTicket<0)
{
Alert(“多单下单失败”);
}
}
if(needOpenSell())
{
sellTicket = sell(0.01,300,200,”sell”,0);
if(sellTicket>0)
{
Alert(“空单下单成功,订单号码是:”+sellTicket);
}else if(buyTicket<0)
{
Alert(“空单下单失败”);
}
}
return(0);
}
//+——————————————————————+
//get data
void getData()
{
//获取 均线 数据
ema10_15M = iMA(Symbol(),PERIOD_M15,10,0,MODE_EMA,PRICE_CLOSE,0);//最后一根k线
ema20_15M = iMA(Symbol(),PERIOD_M15,20,0,MODE_EMA,PRICE_CLOSE,0);//最后一根k线
ema10_30M = iMA(Symbol(),PERIOD_M30,10,0,MODE_EMA,PRICE_CLOSE,0);//最后一根k线
ema20_30M = iMA(Symbol(),PERIOD_M30,10,0,MODE_EMA,PRICE_CLOSE,0);//最后一根k线
//获取 kdj 数据
k = iStochastic(Symbol(),PERIOD_M15,8,5,5,MODE_SMA,0,MODE_MAIN,0);//最后一根k线 主线 蓝色
d = iStochastic(Symbol(),PERIOD_M15,8,5,5,MODE_SMA,0,MODE_SIGNAL,0);//最后一根k线 线号线 红色
prevK = iStochastic(Symbol(),PERIOD_M15,8,5,5,MODE_SMA,0,MODE_MAIN,1);//上一根k线 主线 蓝色
prevD = iStochastic(Symbol(),PERIOD_M15,8,5,5,MODE_SMA,0,MODE_SIGNAL,1);//上一根k线 线号线 红色
}
// open sell contidion
bool needOpenSell()
{
bool result = FALSE;
if((ema10_15M<ema20_15M)&&(ema10_30M<ema20_30M))
{
if((k<d)&&(prevK>prevD))
{
result = TRUE;
}
}
return (result);
}
// open buy contidion
bool needOpenBuy()
{
bool result = FALSE;
if((ema10_15M>ema20_15M)&&(ema10_30M>ema20_30M))
{
if((k>d)&&(prevK<prevD))
{
result = TRUE;
}
}
return (result);
}
int buy(double lots,int stopLoss,int stopProfit,string comment,int magic)
{
int ticket = 0;
int findBuyNum =0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderComment()==comment)
{
findBuyNum++;
}
}
}
if(findBuyNum==0) //避免同一标识 重复下单
{
ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,30,0,0,comment,magic,0,White); //适应开单不能下止盈止损的平台
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET)==true)
{
int stopLossValue=OrderOpenPrice()-stopLoss*Point;
int stopProfitValue=OrderOpenPrice()+stopProfit*Point;
if(stopLoss==0)
{
stopLossValue=0;
}
if(stopProfit==0)
{
stopProfitValue=0;
}
if(OrderModify(OrderTicket(),OrderOpenPrice(),stopLossValue,stopProfitValue,0,White)==true) //下单成功没问题,修改订单成功后在返回
{
return (ticket);
}
}
}
}
return (0);
}
int sell(double lots,int stopLoss,int stopProfit,string comment,int magic) //magic 暂时没有用到
{
int ticket = 0;
int findSellNum =0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderComment()==comment)
{
findSellNum++;
}
}
}
if(findSellNum==0) //避免同一标识 重复下单
{
ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,30,0,0,comment,magic,0,Red); //适应开单不能下止盈止损的平台
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET)==true)
{
int stopLossValue=OrderOpenPrice()+stopLoss*Point;
int stopProfitValue=OrderOpenPrice()-stopProfit*Point;
if(stopLoss==0)
{
stopLossValue=0;
}
if(stopProfit==0)
{
stopProfitValue=0;
}
if(OrderModify(OrderTicket(),OrderOpenPrice(),stopLossValue,stopProfitValue,0,Red)==true) //下单成功没问题,修改订单成功后在返回
{
return (ticket);
}
}
}
}
return (0);
}
●点击查看《EA安装及运行教程》.
●玩转策略正确流程:①复盘回测,判定策略质量→②加载虚拟盘检验,检测策略的原理可行性→③加载美分实盘试验,测试EA风险值→④实盘运行,注意风控!
.友情提醒:外汇EA网提供的资源,都不包含技术服务,请大家谅解!部分资源来源于用户上传和网络,如有侵权请邮件联系站长!外汇EA网资源售价只是赞助,收取费用仅维持本站的日常运营所需!外汇EA网不保证所提供下载的资源的准确性、安全性和完整性,策略资源仅供下载学习之用,如用于商业或者非法用途,与本站无关,一切后果请用户自负!
· 版权信息:本站所有资源仅供学习与参考,请勿用于商业用途,如有侵犯您的版权,请及时联系官网客服,我们将尽快处理。
· 免责声明:投资有风险,本网站所包含之所有信息均不构成任何投资的建议或意见,网站内容仅供参考。不适合所有投资者,客户需根据自身情况选择,网站访问者不应依赖本网站信息并将其视爲作爲或不作爲之依据。 对于任何个人依据本网站或网站的信息采取的作爲或不作爲所导致的结果,我们将毋须承担任何责任。
iMQL5自动外汇EA交易与EA指标 » EA模版分享 解决重复下单,开单不能下止损单等…,附带源码
