Пригоден ли советник для реала? - страница 35

 
borilunad:

1) Нормализовывать все условия и действия;


Ещё нужно нормализовывать лот, если он меняется и(или) высчитывается. Что ещё можно?
 
FOReignEXchange:

1) Нормализовывать надо стопы, когда они высчитываются отдельно. Это написано в справке. Зачем нормализовывать всё другое, что не надо нормализовывать? Пусть там хоть 150 знаков после запятой. Если это ни на что не может повлиять, то и не надо нормализовывать. Вот например код.

Зачем нормализовывать a и b? Я это не могу понять. Пример конечно упрощённый. Но смысл в том, что если в коде Вы занимаетесь математикой, то зачем всё подряд нормализовывать? Нужно нормализовывать только топы, если они получены в результате такой математики.

2) Условия несколько раз провеял. Щас проверяю ещё. Может что не углядел.

3) В моём коде возникают только 2 ошибки. Ошибка 130 - неправильные стопы, и Инвалидные параметры при удалении отложенника. С первой всё понятно и разобрался с ней. С инвалидными параметрами при улалении ордера тоже.

4) Чтобы открывать позицию без СЛ и ТП нету времени, так как выставляется минимальный профит и потом он может и не выставиться та как цена движется быстро. Это четвёртое правило судя по всему пошло с того, что раньше на терминалах БРОКО нельзя было открывать сделки со стопами. Сейчас можно. Так что не вижу смысла в этом правиле.


Как вижу, Вам виднее...

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

Время покажет и расставит всё по своим местам!

 
FOReignEXchange:

Ещё нужно нормализовывать лот, если он меняется и(или) высчитывается. Что ещё можно?

Конечно! И всё, связанное с расчётами, касающимися быстро меняющихся норм ДЦ в условиях рынка.
 
borilunad:


Как вижу, Вам виднее...

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

Время покажет и расставит всё по своим местам!


Главное чтобы код в реале работал и зарабатывал без сбоев. Всё остальное не важно.

Ощибка НЕПРАВИЛЬНЫЕ СТОПЫ из-за устаревания цены. Ошибка 130. Просто повторная попытка всё исправляет. В этом нету проблемм. Больше никаких ошибок в журнале нет.

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

 

FOReignEXchange:

Вопрос, оглашённый в названии топика, будет исчерпан.

Еще бы это означало рост депозита, такой же, как и в тестере)

Ну не поверю, что есть такая точка на графике, где можно было бы с уверенностью выставить тейк 11 и стоп 15 и знать, что пойдет именно к тейку)

Не мартышка, не локер, одиночными позы открываете, как я понял.

Ну не существует такого правила, да еще входя именно на открытии свечи. Фантастика и фикция все это. Цена ничего никому не обязана. Ни возвращаться, куда мы запланировали, ни идти дальше, потому что мы так решили. Какой бы супер-пупер индикатор нам это ни показывал.

 
FOReignEXchange:


Главное чтобы код в реале работал и зарабатывал без сбоев. Всё остальное не важно.

Ощибка НЕПРАВИЛЬНЫЕ СТОПЫ из-за устаревания цены. Ошибка 130. Просто повторная попытка всё исправляет. В этом нету проблемм. Больше никаких ошибок в журнале нет.

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


Извините, ещё одно уточнение! Все меняющиеся параметры ДЦ должны освежаться от МаrketInfo() в начале старта.

И слипаж должен быть не менее 20 на 5 знаках (Ошибка 130).

В тестере ни они, ни другие не меняются, поэтому меньше всего доверяюсь распрекрасным результатам теста.

 
borilunad:


Извините, ещё одно уточнение! Все меняющиеся параметры ДЦ должны освежаться от МаrketInfo() в начале старта.

В тестере ни они, ни другие не меняются, поэтому меньше всего доверяюсь распрекрасным результатам теста.


Какие параметры? Должны меняться только Bid, Ask и всё вроде. Ещё MODEFREEZELEVEL - единственное, что услышал сегодня полезного. Спасибо ещё раз.

Какие ещё параметры ДЦ могут меняться? Минимальный шаг изменения цены, чтоли или

Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах
или
Количество цифр после десятичного точки в цене инструмента
или
Размер пункта в валюте котировки

Спред может меняться наверное, хотя ни разу не замечал на евро у себя. А как он повлияет? В моих условиях он может повлиять только на возможность выставления отложенника. Если

OrderOpenPrice()=Bid+MODE_SPREAD)=меньше допустимого расстояния, то ордер не откроется. Я об этом знаю. Но таких ошибок ни разу не было.

 
FOReignEXchange:


Какие параметры? Должны меняться только Bid, Ask и всё вроде. Ещё MODEFREEZELEVEL - единственное, что услышал сегодня полезного. Спасибо ещё раз.

Какие ещё параметры ДЦ могут меняться? Минимальный шаг изменения цены, чтоли или

Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах
или
Количество цифр после десятичного точки в цене инструмента
или
Размер пункта в валюте котировки

Спред может меняться наверное, хотя ни разу не замечал на евро у себя. А как он повлияет? В моих условиях он может повлиять только на возможность выставления отложенника. Если

OrderOpenPrice()=Bid+MODE_SPREAD)=меньше допустимого расстояния, то ордер не откроется. Я об этом знаю. Но таких ошибок ни разу не было.


Смотрите: https://docs.mql4.com/ru/constants/marketinfo начиная с Бида до "полезного" Вам ФрицЛевела, возрастающего в моменты экстремальной волатильности. Также СтопЛевел и т.д.

Bid+Spread=Ask Так лучше просто сразу употреблять Ask в этом случае, естественно, если Аsk также опробован функцией MarketInfo() в начале старта.

 

Извините, должен отлучиться ненадолго!

У меня, например, в начале старта и после уточнений лота, согласно ММ:

  RefreshRates();
  ASK = NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),Digits);
  BID = NormalizeDouble(MarketInfo(Symbol(),MODE_BID),Digits);
  double spread = NormalizeDouble(ASK-BID,Digits);
  StopLevel = NormalizeDouble(MarketInfo(Symbol(),MODE_STOPLEVEL),Digits);
  double step = NormalizeDouble(Step*Point,Digits);
  if(step < StopLevel) step = StopLevel;
И потом всё остальное...
 

Вот на этом коде вывел следующее

if (//Условие//)
   {
   if (OrderSelect(ticket_sell,SELECT_BY_TICKET)==true)
      if (OrderType()==OP_SELLSTOP) 
         {
         Print ("Заморозка: ",MarketInfo (Symbol(), MODE_FREEZELEVEL),", Bid: ",Bid,", Open=",OrderOpenPrice());
         if (Bid<=(OrderOpenPrice()+4*Point)) 
            {
            Comment ("1");                         
            i=0;
            while (i<10)
               {
               if (i>0) Sleep(500);      
               RefreshRates(); OrderDelete(ticket_sell); 
               err=GetLastError();
               if (err==0)
                  {
                  ticket_sell=0; return;
                  }
               i++;
               }
            }
         }
   }

18:34:14 505 000 $ EURUSD,M1: Заморозка: 0, Bid: 1.3436, Open=1.3436
18:34:14 505 000 $ EURUSD,M1: market order #26398219 cannot be deleted
18:34:14 505 000 $ EURUSD,M1: market order #26398219 cannot be deleted
18:34:15 505 000 $ EURUSD,M1: market order #26398219 cannot be deleted
18:34:15 505 000 $ EURUSD,M1: market order #26398219 cannot be deleted
18:34:16 505 000 $ EURUSD,M1: market order #26398219 cannot be deleted
18:34:16 505 000 $ EURUSD,M1: market order #26398219 cannot be deleted
18:34:17 505 000 $ EURUSD,M1: market order #26398219 cannot be deleted
18:34:17 505 000 $ EURUSD,M1: market order #26398219 cannot be deleted
18:34:18 505 000 $ EURUSD,M1: market order #26398219 cannot be deleted
18:34:19 505 000 $ EURUSD,M1: market order #26398219 cannot be deleted

10 раз вывел ошибку. Столько же сколько по i цикл. В данном случае он просто не успел удалить, так как цена Бид уже была равна цене открытия ордера. Первый раз заметил такой случай. Попробую найти другой. Этот в плюс сработал. Отклонение от сигнала по системе в доли секунды, не страшно. Думаю есть другой случай, буду ждать его. Бывает, что нет реакции 10-15 секунд.

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