我正在尝试同时使用ExpertAdvisor或Script在MQL4中开设多个交易。但是,当我将EA拖到图表上时,它只会打开一个订单,而不打开第二个订单(或第三个订单,等等)。
extern double lots = 0.01;
extern int takeprofit = 40;
extern int stoploss = 40;
void OnStart(){
double profitlvl_buy;
double losslvl_buy;
profitlvl_buy = Ask+takeprofit*Point;
losslvl_buy = Ask-stoploss*Point;
int ticket1;
int ticket2;
ticket1 = OrderSend("EURUSD", OP_BUY, lots, MarketInfo("EURUSD", MODE_ASK), 10, losslvl_buy, profitlvl_buy, NULL);
ticket2 = OrderSend("GBPUSD", OP_BUY, lots, MarketInfo("GBPUSD", MODE_ASK), 10, losslvl_buy, profitlvl_buy, NULL);
}
我需要做什么才能使其执行多个OrderSend()
调用?
好的。在图表上部署EA /脚本时,它会使用有关图表的信息(符号,时间范围和其他信息-在编辑器中通常为粉红色)
因此,在假设EURUSD
,图表上部署EA时,它会如下所示:
profitlvl_buy = Ask+takeprofit*Point;
并认为“ Ask
”绝对Ask
是EURUSD
(或换句话说,Ask
图表的价格_Symbol
),那么你请求发送GBPUSD
,具有takeprofit
和stoploss
计算的交易EURUSD
,因此我认为takeprofit
是不正确的。即Ask
1.12,takeprofit
是1000滴答,所以tp = 1.13,英镑价格为1.33,takeprofit
不能(在市场定单上)低于交易条目。
为了解决:
double ask = MarketInfo( "EURUSD", MODE_ASK );
int ticket1 = OrderSend( "EURUSD", OP_BUY, lots, ask, 10, ask-stoploss*Point, ask+takeprofit*Point, NULL );
ask = MarketInfo( "GBPUSD", MODE_ASK );
int ticket2 = OrderSend( "GBPUSD", OP_BUY, lots, ask, 10, ask-stoploss*Point, ask+takeprofit*Point, NULL );
同样,通常一种好的方法是确保票务退回int number
(成功的情况下),或者-1
在这种情况下打印错误代码,在这种情况下为error#130