如何在 MQL4 Metatrader 4 中打开多个 OrderSend()?

How to open multiple OrderSend() in MQL4 Metatrader 4?

我正在尝试使用 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/script 时,它会使用有关图表的信息(代码、时间范围和其他 - 它们在编辑器中通常是粉红色的)

因此,当您部署 EA 时,假设 EURUSD,图表,它转到线:

profitlvl_buy = Ask+takeprofit*Point;

并认为“Ask”绝对是 EURUSDAsk(或者换句话说,Ask 价格图表 _Symbol ) 然后 您请求在 GBPUSD 上发送交易,具有 takeprofitstoploss 是为 EURUSD 计算的,所以我认为 takeprofit 是不正确的。 IE。 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 );

另外,确保票 returns int number(如果成功)或 -1 并且在这种情况会打印错误代码,在这种情况下 - error#130