Мой эксперт выполняет двойную запись - страница 2

 
angevoyageur:

Это кажется возможным объяснением, но если это так, то это ненормально. Используете ли вы асинхронный режим? Если нет, то ваш советник должен ждать ответа сервера, а затем только продолжать и обрабатывать следующий тик.

Если я правильно понимаю, это случайная проблема, и вы не можете ее воспроизвести?

Вы можете попробовать вывести больше отладочной информации, добавив эту строку после объявления m_Trade:


Привет

После моего решения, описанного в постеhttps://www.mql5.com/en/forum/14327, у меня была еще одна двойная сделка.

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

Живой сервер (ECN) брокера X генерирует так много тиков во время макроэкономических новостей, что на каждый тик, который вы видите на симуляционном сервере metaquotes, этот сервер генерирует 20, 30 или 40 тиков!


PositionSelect(Symbol());

// Check of het model al LONG zit.             
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
      {
                                                           
// Check of het model al de maximale size in positie zit.                     
      if(PositionGetDouble(POSITION_VOLUME) >= MAX_Trade_Size)
            {
            return;
            }
      } 


Мой советник автоматически разворачивает двойную позицию для получения правильного размера позиции в качестве дополнительного резерва.

Problem: Multiple Trades at brokerX
Problem: Multiple Trades at brokerX
  • www.mql5.com
Problem: Multiple Trades at brokerX.
 
snelle_moda:
....

Живой сервер (ECN) брокера X генерирует так много тиков во время макроэкономических новостей, что на каждый тик, который вы видите на симуляционном сервере metaquotes, этот сервер генерирует 20, 30 или 40 тиков!

Да, это происходит потому, что DOM активен.

....

Мой советник автоматически разворачивает двойную позицию для получения правильного размера позиции в качестве дополнительного резерва.

Спасибо за ваш вклад. У вас есть эта проблема на том же брокере, что и у других, или она не зависит от брокера?
 
angevoyageur:
Да, это потому что DOM активен.
Спасибо за ваш вклад. У Вас эта проблема на том же брокере, что и у других, или она не зависит от брокера?


Что такое "DOM"?


Только на этом брокерском сервере, я никогда не испытывал этого на сервере симуляции (Metaquotes) с тех пор, как была начата эта тема https://www.mql5.com/en/forum/14327.

До этого периода сервер брокера X генерировал примерно такое же количество тиков, как и сервер Metaquotes.

Problem: Multiple Trades at brokerX
Problem: Multiple Trades at brokerX
  • www.mql5.com
Problem: Multiple Trades at brokerX.
 
snelle_moda:


Что такое "DOM"?


Только на сервере этого брокера, я никогда не сталкивался с этим на сервере симуляции с момента начала этой темы https://www.mql5.com/en/forum/14327.

До этого периода сервер брокера X генерировал примерно такое же количество тиков, как и сервер Metaquotes.

DOM = Depth of Market, когда он активирован, происходит гораздо больше тиковых событий.
 
angevoyageur:
DOM = Depth of Market, когда он активирован, происходит гораздо больше событий Tick.


Возможно ли это отключить?

 
snelle_moda:


Можно ли его отключить?

Я так не думаю, насколько я знаю, это включается на стороне брокера. Возможно, вы можете обратиться к брокеру.
 

Я минимизировал количество входящих тиков, разрешив тики только тогда, когда изменилась сама цена.


// De sum van de BID/LAST 
   static double dPriceSum;   
   double dOldPriceSum = dPriceSum;
   
// To be used for getting recent/latest price quotes
   MqlTick Latest_Price;      
   SymbolInfoTick(Symbol() ,Latest_Price);

   dPriceSum = Latest_Price.bid + Latest_Price.last; 

// Check if the price is (not)changed.
   if(dPriceSum == dOldPriceSum)
         {
         return;
         }
 
snelle_moda:

Я минимизировал количество входящих тиков, разрешив тики только тогда, когда изменилась сама цена.


а что если цена спроса меняется или цена предложения увеличивается на 1 пункт, а цена последнего уменьшается на 1 пункт? Нормальный" тик - это изменение Bid и/или Ask.
 
angevoyageur:
а что если цена спроса меняется или бид увеличивается на 1 пункт, а последняя уменьшается на 1 пункт? Нормальный" тик - это изменение Bid и/или Ask.

Это хорошая мысль. Может быть, мне следует использовать только изменение цены BID?

BAR на графике также основан на цене BID?


Для триггерного сигнала моего эксперта меня интересует только изменение цены, на которой основан 1-минутный BAR.

 
Омг. Значит, сон не помогает?

Что мы можем сделать, чтобы избежать этого?