[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 69

 
Notter:

Добрый день,

 

Так же на реальном счёте, при исполнении торговых приказов возникает много ошибок. К примеру сегодня:

 

 2013.01.10 13:46:09 '15082': instant order buy 0.15 EURUSD at 1.30844 sl: 1.30758 tp: 0.00000
 2013.01.10 13:46:10 '15082': request was accepted by server
 2013.01.10 13:46:10 '15082': requote 1.30843 / 1.30858 for open buy 0.15 EURUSD at 1.30844 sl: 1.30758 tp: 0.00000
 2013.01.10 13:46:11 '15082': instant order buy 0.15 EURUSD at 1.30869 sl: 1.30785 tp: 0.00000
 2013.01.10 13:46:11 '15082': request was accepted by server
 2013.01.10 13:46:11 '15082': request in process
 2013.01.10 13:46:13 '15082': order was opened : #12941470 buy 0.15 EURUSD at 1.30869 sl: 1.30785 tp: 0.00000

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

Причина задержки в том, что ордер был реквотирован на 15 пунктов.

Как с этим бороться? Вот хрен с ними с этими 15 пунктами. Я хочу открыть ордер по рынку и не важно изменение цены за секунду прохождения запроса. Ведь в итоге я открылся ещё выше на  1.30869 , а должен был на 1.30858. Этот вопрос может стать критичным для прибыльности\убыточности эксперта, если он не может открыться на сигнале и дожидается начала коррекции.

 

Спасибо. 

 



Настоятельно рекомендую сменить ДЦ. Можете скинуть название этого ДЦ мне в личку?
 
tara:

Размер "хрена с ним" задается параметром ордера, который называется "проскальзывание". В Вашем случае он был равен 0, поэтому уход котировки на 1 пт привел к реквоту.


Как-бе там нет 1 пункта.. не выдумывайте.
 

Heroix

 

Я про ДЦ мало понимаю, Договор с Финамом, торгую через модем и в какой ДЦ уходят мои приказы не в курсе... головы пока на всё не хватает.

О проскальзывании. Я  еххго задал равным двум спредам. Так как на евре спред плавающий, то может и случилось меньше 15 пунктв, хотя врядли. Подумываю о 30 пунктах.

И при закрытии части позы тоже не всё обошлось гладко, как только возникули условия для закрытия, так терминал завис с сообщением

 2013.01.10 14:47:45 TradeContext: ping error
 2013.01.10 14:48:50 '15082': ping failed

потом через несколько попыток перелогиниться ордер всё же закрылся :)

 

Вообще весёлая торговля, автоматизированная, блин, только руками надо постоянно ошибки исправлять :) 

 

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

Народ, пожалуйста, подскажите как решить проблему в следующем коде:

       double sSup=Sup-(Udal*Point);                           // Sup - это уровень поддержки, Udal - расстояние от него
       zapS=0;
       for(int iS=0; iS<=OrdersTotal(); iS++)                  // перебор открытых ордеров
         {
          if(OrderSelect(iS,SELECT_BY_POS,MODE_TRADES)==true)  // выбор рыночного ордера
            {
             if(OrderSymbol()!=Symb) continue;                 // только нужный инструмент
             if(OrderType()>1) continue;                       // только рыночные
             sPO=OrderOpenPrice();                             // его цена
             sellTip=OrderType();                              // его тип
             if(sPO==sSup && sellTip==1) zapS=1;               // если цена открытого ордера совпадает с sSup и уровень является Sell, то поднять флаг
            }
         }
Проблема в строке  if(sPO==sSup && sellTip==1) zapS=1; (а если быть точным, то в фрагменте sPO==sSup ) . Проблема следующего характера: например если  sPO=1,3100 и sSup=1,3100, то флаг все равно остается равен 0 (значения 1,3100 выводится через Print у обоих значений) . Где я совершаю ошибку? Почему zapS не становится равен 1?
 
WindSW:

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

Народ, пожалуйста, подскажите как решить проблему в следующем коде:

Проблема в строке  if(sPO==sSup && sellTip==1) zapS=1; (а если быть точным, то в фрагменте sPO==sSup ) . Проблема следующего характера: например если  sPO=1,3100 и sSup=1,3100, то флаг все равно остается равен 0 (значения 1,3100 выводится через Print у обоих значений) . Где я совершаю ошибку? Почему zapS не становится равен 1?

 


https://www.mql5.com/ru/articles/1561
 
Спасибо! Попробую исправить
 
WindSW:

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

Народ, пожалуйста, подскажите как решить проблему в следующем коде:

Проблема в строке  if(sPO==sSup && sellTip==1) zapS=1; (а если быть точным, то в фрагменте sPO==sSup ) . Проблема следующего характера: например если  sPO=1,3100 и sSup=1,3100, то флаг все равно остается равен 0 (значения 1,3100 выводится через Print у обоих значений) . Где я совершаю ошибку? Почему zapS не становится равен 1?

 

Загляните сюда...
 

Всем привет! Не могу понять что не так одновременно работают несколько экспертов, ордер открывает только один, остальные игнарируют сигналы, подскажите что не так? Orders - функция определения количества ордеров по магику

   total=OrdersTotal();

   if(total >=-1 && total == Orders(symbol,operation,magic))

 
dimarik0000:

Всем привет! Не могу понять что не так одновременно работают несколько экспертов, ордер открывает только один, остальные игнарируют сигналы, подскажите что не так? Orders - функция определения количества ордеров по магику

   total=OrdersTotal();

   if(total >=-1 && total == Orders(symbol,operation,magic))


что это за такое дикое условие?! :)

Напишите по-русски этот оператор, попробую исправить строчку.  

 
hoz:
Появилась мысль использовать, в общем то, всем известные паттерны из ряда Price Action, которые называются DBLHC и DBHLC.




Условия его формирования:

DBLHC (Бычий сетап) - бары с одинаковыми минимумами и более высоким закрытием.
Два (могут быть три и более) последовательных бара с одинаковыми минимумами, при этом цена закрытия последнего больше максимума предыдущего. Разница минимумов смежных баров не должна превышать 3 пунктов. Чем больше баров составляют сетап, тем сильнее сигнал, генерируемый им.

DBHLC (Медвежий сетап) - бары с одинаковым максимумом и более низким закрытием.
Два (три и более) последовательных бара с одинаковыми максимумами, при этом цена закрытия последнего ниже минимума предыдущего. Разница максимумов смежных баров не должна превышать 3 пунктов. Чем больше баров составляют сетап, тем сильнее сигнал, генерируемый им.

Возьмём, например, вариант DBLHC (Бычий сетап)

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

Я предполагаю что нужно брать цикл по барам от прошлого к настоящему:

Дальше нужно как-то задать условие, что если минимум следующего бара тоже равен минимуму предыдущего (предыдущих), то.. дальше сравниваем.. Как это реализовать?

Дам наводку:

NormalizeDouble(Low[i]-Low[i+1],Digits)<=3*Point  --- разница смежных баров. Если условие не выполняется -> Return(False); (Возвращаем ложь)

После прохождения всего цикла возвращаем истину

Можно сделать иначе:

При истинности условия NormalizeDouble(Low[i]-Low[i+1],Digits)<=3*Point увеличиваем счётчик смежных баров (изначально равный нулю) на 1,

при ложности данного условия возвращаем значение счётчика смежных баров.

Чем большее число вернёт функция, тем большую силу имеет сетап. При возврате ноля - сетапа нет.

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