如何在 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
”绝对是 EURUSD
的 Ask
(或者换句话说,Ask
价格图表 _Symbol
)
然后
您请求在 GBPUSD
上发送交易,具有 takeprofit
和 stoploss
是为 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
我正在尝试使用 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
”绝对是 EURUSD
的 Ask
(或者换句话说,Ask
价格图表 _Symbol
)
然后
您请求在 GBPUSD
上发送交易,具有 takeprofit
和 stoploss
是为 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