Закрывайте только прибыльные сделки, достигая цели по прибыли - страница 4

 
af1:

Хорошо, Раптор, я попробую сделать этот цикл, но прежде чем сделать это, что если я просто изменю

с этого:
на это:


Это может помочь?

Нет, вы ДОЛЖНЫ вести обратный отсчет при закрытии/удалении заказов.
 
RaptorUK:
Нет, вы ДОЛЖНЫ вести обратный отсчет при закрытии/удалении ордеров.


Привет, Раптор!

Я проверил код и, честно говоря, я не вижу большой разницы между строкой кода, предложенной в вашем посте:

for(PositionIndex = TotalNumberOfOrders - 1; PositionIndex >= 0 ; PositionIndex --)

и строкой кода ea, которую я тестирую:

for(i=OrdersTotal()-1;i>=0;i--)

Единственная разница, которую я вижу, это то, что вы добавили MODE_TRADES, и вы не добавили sleep. Имеет ли это значение?

Не могли бы вы подсказать, что нужно изменить в коде?

 
af1:


Привет Раптор!

Я проверил код и, честно говоря, не вижу большой разницы между строкой кода, предложенной в вашем посте:

и строкой кода ea, которую я тестирую:

Единственная разница, которую я вижу, это то, что вы добавили MODE_TRADES, и вы не добавили sleep. Имеет ли это значение?

Не могли бы вы подсказать, что нужно изменить в коде?

Извините, я увидел этот ...

for(int i=0;i<OrdersTotal();i++)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
         if(OrderType()==OP_SELL)  
         {
            OrdersSELL++;
            SellLots += OrderLots();
            double ThisTradeProfit=OrderProfit() + OrderCommission() + OrderSwap();
            if(ThisTradeProfit>0)
            BuyProfit += ThisTradeProfit;
         }

... и ваш пост и предположил, что это ваш код OrderClose(). . .

 
af1:


Я не добавлял 2 extern bool, я просто изменил это, чтобы закрыть "только ордера на покупку".

и изменить это на закрытие "только ордера на продажу".

Так что теперь у меня есть два советника. Один для закрытия покупок, а другой для закрытия продаж. Это нормально для меня.


Я тестировал на обоих счетах, демо и реальном. На демо все работает нормально, но на реальном счете, как только цель прибыли достигнута, он начинает закрывать позиции, но затем он прекращает закрывать позиции, когда оставшиеся ордера падают ниже цели прибыли. Это происходит, если цена меняется в момент закрытия. Поэтому он склонен оставлять открытыми прибыльные ордера, вместо того чтобы закрыть их все (прибыльные ордера).

Я читал этот пост от RaptorUK https://www.mql5.com/en/forum/139654. Это что-то вроде этого, но я действительно не знаю, что может быть лучшим решением для этой проблемы.



Только сейчас заметил это - не знаю, будет ли это иметь большое значение, но это неправильно.

for(int i=0;i<OrdersTotal();i++)

      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
         if(OrderType()==OP_SELL)  
         {
            OrdersSELL++;
            SellLots += OrderLots();
            double ThisTradeProfit=OrderProfit() + OrderCommission() + OrderSwap();
            if(ThisTradeProfit>0)
            BuyProfit += ThisTradeProfit;
         }
 
af1:


Я не добавлял 2 extern bool, я просто изменил это, чтобы закрыть "только ордера на покупку".

и изменить это на закрытие "только ордера на продажу".

Так что теперь у меня есть два советника. Один для закрытия покупок, а другой для закрытия продаж. Это нормально для меня.


Я тестировал на обоих счетах, демо и реальном. На демо все работает нормально, но на реальном счете, как только цель прибыли достигнута, он начинает закрывать позиции, но затем он прекращает закрывать позиции, когда оставшиеся ордера падают ниже цели прибыли. Это происходит, если цена меняется в момент закрытия. Поэтому он склонен оставлять открытыми прибыльные ордера, вместо того чтобы закрыть их все (прибыльные ордера).

Я читал этот пост от RaptorUK https://www.mql5.com/en/forum/139654. Это что-то вроде этого, но я действительно не знаю, что может быть лучшим решением для этой проблемы.



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

Может быть, ваше проскальзывание всего в 5 пунктов слишком мало?

 
RaptorUK:

Извините, я увидел это...

... и ваш пост и предположил, что это ваш код OrderClose(). . .

Нет проблем.

GumRai:


Только сейчас заметил вот это - не знаю, будет ли это иметь большое значение, но это неправильно.

for(int i=0;i<OrdersTotal();i++)

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

Позвольте мне протестировать еще раз с этим изменением и я сообщу вам результаты.

GumRai:


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

Может быть, ваше проскальзывание всего в 5 пунктов слишком мало?

Ошибок в журнале нет.

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

 

Здравствуйте друзья

Есть ли где-нибудь советник для MT5, который закрывает все сделки при достижении прибыли.

 
BobyGill:

Здравствуйте друзья

Есть ли где-нибудь советник для MT5 для закрытия всех сделок при достижении прибыли.

Почему вы подняли тему 6-летней давности в разделе MT4, чтобы спросить об MT5?

 
Ребята...
Просто интересно...
Можно ли использовать ту же логику, но только когда общее количество сделок достигнет, скажем, 200 сделок , тогда будет срабатывать закрытие прибыли.
Причина обращения: