Как открыть несколько OrderSend() в MQL4 Metatrader 4?

Я пытаюсь одновременно открыть несколько сделок на MQL4 с помощью советника или скрипта. Однако, когда я перетаскиваю советник на график, он открывает только один ордер, а не второй (или третий, четвертый и т. д.)

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()?


person rainerbrunotte    schedule 07.09.2016    source источник


Ответы (1)


В порядке. Когда вы размещаете свой советник/скрипт на графике, он использует информацию о графике (символ, таймфрейм и прочее - в редакторе они, как правило, розовые)

Итак, когда вы размещаете советник, допустим, на EURUSD, графике, он переходит в строку:

profitlvl_buy = Ask+takeprofit*Point;

и считает, что "Ask" определенно Ask из EURUSD (или, другими словами, Ask цена графика _Symbol ), то вы запрашиваете отправку сделок на GBPUSD, имея takeprofit и stoploss рассчитаны для EURUSD, поэтому я полагаю, что takeprofit неверно. т.е. Ask равно 1,12, а takeprofit равно 1000 тиков, поэтому tp = 1,13, а цена GBP 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

person Daniel Kniaz    schedule 07.09.2016