我正在尝试使用 ExpertAdvisor 或脚本在 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
”肯定是EURUSD
的Ask
(或者换句话说,询问
图表价格 _Symbol
)
然后
您请求以GBPUSD
发送交易,并设置止盈
和止损
针对 EURUSD
计算,因此我认为 takeprofit
不正确。 IE。 卖价
为 1.12,止盈
为 1000 个报价点,因此 tp = 1.13,英镑价格为 1.33,止盈
不能低于(对于市场订单)交易条目。
为了修复:
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
通常是一个很好的做法case 打印错误代码,在本例中 - error#130
关于mql4 - 如何在 MQL4 Metatrader 4 中打开多个 OrderSend()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39376405/