Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1862

 
Artyom Trishkin #:
Break

А вопрос-то в чём?:)))

 
Alexey Viktorov #:

А вопрос-то в чём?:)))

Видимо в том чтобы вы с Андреем прекращали троллить...

Действительно какая-то недружелюбная атмосфера получается (как уже было замечено выше). Я зашел сюда вопросы MQL обсудить. Но читаю нечто совсем не про MQL. Что вы, так же нельзя!

Пускай какой-нибудь новичок вопрос задаст что ли... А может быть он побоится?... Потеряется среди вашего с Андреем срача... :)
 

Всем добрый день.

Подскажите как правильно написать код. 
Закрываю сразу несколько ордеров в разных направлениях, разные валютные пары, по определенным условиям. Но иногда из-за ДЦ команда не исполняется, и часть ордеров остается открытыми. Могу прописать Sleep по каждому ордера. Но хотелось что нить по короче.

if ( NormalizeDouble((MaxOpenSell(2) + MaxOpenBuy(2) + MinOpenSell(2))*Point,Digits) >= Profit1 && FindLastSell() >= Block 
         && FindLastBuy() >= 1 && MaxOpenSell(2) > 0 && MA1 < MA2)
      {
         LockTicket = 0;
         CalProfHis = 0;
         bool close =  OrderClose((int)MaxOpenSell(5),MaxOpenSell(3), Ask, Slippage, clrPink);
              close =  OrderClose((int)MinOpenSell(5),MinOpenSell(3), Ask, Slippage, clrPink);
              close =  OrderClose((int)MaxOpenBuy(5),MaxOpenBuy(3), Bid, Slippage, clrBlue);

      }
 
makssub #:

Всем добрый день.

Подскажите как правильно написать код. 
Закрываю сразу несколько ордеров в разных направлениях, разные валютные пары, по определенным условиям. Но иногда из-за ДЦ команда не исполняется, и часть ордеров остается открытыми. Могу прописать Sleep по каждому ордера. Но хотелось что нить по короче.

https://book.mql4.com/ru/trading/orderclose

Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
  • book.mql4.com
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
 
makssub #:

Всем добрый день.

Подскажите как правильно написать код. 
Закрываю сразу несколько ордеров в разных направлениях, разные валютные пары, по определенным условиям. Но иногда из-за ДЦ команда не исполняется, и часть ордеров остается открытыми. Могу прописать Sleep по каждому ордера. Но хотелось что нить по короче.

При возникновении условия выхода/закрытия добавить тикеты в массив. Затем если массив непустой проходить циклом по нему, вызывая OrderClose для каждого тикета. Далее проверять существование каждого тикета и закрытие удалять из списка. Повторять данные действия с интервалом в 1-3 секунды пока список не окажется пустым.

 

Здравствуйте.

Нужно посчитать чистую прибыль советника в конце работы. Запускаю цикл по кол-ву OrdersHistoryTotal() в OnDeinit и складываю OrderProfit().

Прибыль=Прибыль+OrderProfit();

Но в итоге прибыль отличается от той, что в отчете в тестере. Поразбиравшись выяснил, что отличается стоимость пункта на части ордеров.

Из-за чего так получается? Спред в тестере установлен вручную.

 
AlexandrVV #:

Здравствуйте.

Нужно посчитать чистую прибыль советника в конце работы. Запускаю цикл по кол-ву OrdersHistoryTotal() в OnDeinit и складываю OrderProfit().

Прибыль=Прибыль+OrderProfit();

Но в итоге прибыль отличается от той, что в отчете в тестере. Поразбиравшись выяснил, что отличается стоимость пункта на части ордеров.

Из-за чего так получается? Спред в тестере установлен вручную.

Своп и комиссию забыли прибавить! Спред и так учтен, поскольку он всегда между ценой входа и ценой выхода.

 
Mihail Matkovskij #:

Своп и комиссию забыли прибавить! Спред и так учтен, поскольку он всегда между ценой входа и ценой выхода.

О, точно! Спасибо большое!!! )

 
Здравствуйте уважаемые. Подскажите где я могу найти скрипт или индикатор который отправляет уведомление на телефон,при достижении цены определенного уровня ,указаного мной. чтоб всё время не следить за терминалом.Спасибо
 

Подскажите в чем проблема, Код должен закрывать ордера и если их нет то открывать новый.

Но почему то, он закрывает только 1 ордер и останавливается до следующего сигнала.  

2022.01.17 16:22:08.389 2022.01.04 08:00:00 e: Signal 1.1322 < clos 1.1304 ExistPosSell 0
2022.01.17 16:22:08.389 2022.01.04 08:00:00 e: Signal 1.1322 > clos 1.1304 ExistPosBuy 1
2022.01.17 16:22:08.366 2022.01.04 04:00:00 e: Signal 1.1325 < clos 1.1306 ExistPosSell 0
2022.01.17 16:22:08.366 2022.01.04 04:00:00 e: Signal 1.1325 > clos 1.1306 ExistPosBuy 1
2022.01.17 16:22:08.327 2022.01.04 00:00:00 e: Signal 1.1326 < clos 1.1296 ExistPosSell 0
2022.01.17 16:22:08.327 2022.01.04 00:00:00 e: Signal 1.1326 > clos 1.1296 ExistPosBuy 1
2022.01.17 16:22:08.298 2022.01.03 20:00:00 e: Signal 1.1328 < clos 1.1283 ExistPosSell 0
2022.01.17 16:22:08.298 2022.01.03 20:00:00 e: close #1 buy 0.01 EURUSD at 1.13598 at price 1.12831

2022.01.17 16:22:08.298 2022.01.03 20:00:00 e: Signal 1.1328 > clos 1.1283 ExistPosBuy 1
2022.01.17 16:22:08.190 2022.01.03 16:00:00 e: open #4 buy 0.01 EURUSD at 1.13512 ok
2022.01.17 16:22:08.190 2022.01.03 16:00:00 e: Signal 1.134 < clos 1.135 ExistPosSell 0
2022.01.17 16:22:08.190 2022.01.03 16:00:00 e: Signal 1.134 > clos 1.135 ExistPosBuy 1

if(isNewBar()==true) {  
if(Signal > clos ) {  //--------------------- МА выше цены закрытия предыдущего бара.
     if(ExistPositions( NULL, OP_BUY, Magic) == true) //---------------- Если есть позиция BUY то
ClosePosWithMaxProfitInCurrency(); //--------  закрытие одной позиции с максимальным профитом в валюте депозита.
         if(ExistPositions( NULL, OP_BUY, Magic) == False) //----------- если позиции BUY отсутствуют то
   ticket=OpenPosition(NULL,OP_SELL, NDLot(Lot),0,0, Magic, Com);} //------------ открываем позицию SELL

if(Signal < clos ) { //--------------------- МА ниже цены закрытия предыдущего бара.
    if(ExistPositions( NULL, OP_SELL, Magic) == true) //---------------- Если есть позиция SELL то
 ClosePosWithMaxProfitInCurrency(); //---------------------закрытие одной позиции с максимальным профитом в валюте депозита.
        if(ExistPositions( NULL, OP_SELL, Magic) == False)  //----------- если позиции SELL отсутствуют то
  ticket=OpenPosition(NULL,OP_BUY, NDLot(Lot),0,0, Magic, Com);} //------------ открываем позицию BUY

} return; 
Причина обращения: