欢迎光临散文网 会员登陆 & 注册

MT5交易 期货回测EA代码例子

2023-09-27 12:42 作者:wewin28  | 我要投稿

期货 EA回测的写法和外汇EA一样。 该EA是判断如果当前没有仓位的话就买入,设置止盈为卖一价加上10个跳,设置止损为卖一价减去10个跳,如果当前已经持仓了就等待仓位止盈或者止损。 首先引入Trade.mqh头文件,定义仓位,报单和报单返回结果的对象。

#include

CPositionInfo m_position;

MqlTradeRequest m_request;

MqlTradeResult m_result;

double tickSize=0;

获得当前图表品种每一跳的大小

int OnInit()

{

//---

//获得该品种每跳

tickSize=SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_SIZE);

//---

return(INIT_SUCCEEDED);

}

判断如果当前没有仓位的话就买入1手,设置止盈为卖一价加上10个跳,设置止损为卖一价减去10个跳,如果当前已经持仓了就等待仓位止盈或者止损。

void OnTick()

{

if(m_position.Select(Symbol())) //持仓中

{

}

else //没有持仓就对价开多仓

{

m_request.action =TRADE_ACTION_DEAL;

m_request.symbol =Symbol();

m_request.volume =1;

m_request.type =ORDER_TYPE_BUY;

m_request.price =SymbolInfoDouble(Symbol(),SYMBOL_ASK); //printf("price " + m_request.price );

m_request.deviation=0;

m_request.sl =m_request.price -10*tickSize; //10个跳止损

m_request.tp =m_request.price +10*tickSize; //10个跳止盈

if(!OrderSend(m_request,m_result))

{

printf("TRADE_RETCODE_REQUOTE %d %s %d", m_result.retcode, m_result.comment,m_result.retcode_external);

Print("request.price = ",m_request.price," result.ask = ", m_result.ask," result.bid = ",m_result.bid);

}

}

}

MT5交易 期货回测EA代码例子的评论 (共 条)

分享到微博请遵守国家法律