По одному ордеру на каждую пару - страница 3

 

rid Спасибо все работает

Буду изучать язык программирования MQL4.

 
Dharma писал (а) >>
Второй способ от Nadejnie я сделал без ошибок, но он так же включает один ордер ждет пока он выключится.

В моем способе слежение за ордерами там все просто.. с ним может разобраться даже школьник.но дело не в том.. там также ты можеш подставить не тока Опен Бай или Опен Сел, но и проверку на магическое число.. или на символ.. просто если ты разрешил проверять все.. даже те ордера которые ты открыл в ручную .. кстати на счет ручных ордеров.. у них нету магика )).. так что для работы корректно можно тока проверку по символлу делать.. в моем теле примера эксперт расчитан на Н.. ордеров которое ты открыл или открыл советник. если не сможеш всетаки делать проверку по символу или опо мейджику напиши.. разжую ) если ты заметил в коде есть 2 параметра еше на открытие.. это SignalBuyClose && AllowBuyClose это 2 параметра для открытия или закрытия ордеров. можно по имени разодраться.. типа Сигнал Бай Слосе - получен сигнал на закрытие Бай позиции. Алов Бай клосе - Разрешение закрывать позиции тоесть если эти 2 сигнала True то на выходе получиш что он будет независимо сколько ты откроеш или советник ордеров но он будет их закрывать именно по Бай.. тоесть если вдруг рынок идет в Селл.. такде и по другим параметрам.. которые там есть.. я в своих экспертах разрешаю устанавливать и закрывть ордера.. так что все сигналы начинающиеся с Allow, а именно

AllowBuyClosse=true;
AllowSellClosse=true;
AllowBuyOpen=true;
AllowSellOpen=true;
После чего я делаю аннализ и на основе него перевожу сигнал
if (xxx>0 && yyy==1 or zzz<0)
{
SignalBuyClosse=true;
SignalSellOpen=true;
SignalBuyOpen=false;
SignalSellClosse=false;
}
все очень просто как в танке.
 
Nadejnie Спасибо попробую
 
незачто.. пробуй.. язык прост) тем более форум для тех кто тока что пришел и тем кто профи тут
 
int mn=34115956; //обьявляем переменнную "MagicNumber" магический номер

int total = OrdersTotal(); // обьявляем и присваиваем к переменной total количество открытых ордеров

for (int i = 0; i < total; i++) // входим в цикл перебора всех ордеров

{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES); // выбираем ордера
if (OrderSymbol() == Symbol() && OrderMagicNumber() == mn) // проверяем их на соответствие тому символу на котором стоит эксперт и магический номер

{

return(0); // совпало.. выходим из цикла и делаем програму дальше
} 

}
 
ну как ты понял.. вот работающий у меня такой пример..
 

точ то ты и просил в начале.. как проверить ордер если он не с той пары..

if (OrderSymbol() == Symbol())
{
//если с той пары на котором стоит експерт выполнит это
}

тока незыбывай делать перебор ордеров так как ордеров может быть и более одного.

int total = OrdersTotal(); // обьявляем и присваиваем к переменной total количество открытых ордеров

for (int i = 0; i < total; i++) // входим в цикл перебора всех ордеров

{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES); // выбираем ордера
if (OrderSymbol() == Symbol()) // проверяем их на соответствие тому символу на котором стоит эксперт

{

return(0); // совпало.. выходим из цикла и делаем програму дальше
} 

}
 

точ то ты и просил в начале.. как проверить ордер если он не с той пары..

if (OrderSymbol() == Symbol())
{
//если с той пары на котором стоит експерт выполнит это
}

тока незыбывай делать перебор ордеров так как ордеров может быть и более одного.

int total = OrdersTotal(); // обьявляем и присваиваем к переменной total количество открытых ордеров

for (int i = 0; i < total; i++) // входим в цикл перебора всех ордеров

{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES); // выбираем ордера
if (OrderSymbol() == Symbol()) // проверяем их на соответствие тому символу на котором стоит эксперт

{

return(0); // совпало.. выходим и делаем програму дальше
} 

}
 
Nadejnie Спасибо скопирую код.