Трейлинг-стопы и трейлинг-профит - страница 3

 
deVries:


Спасибо за исправления.

Если мы используем count=count-1; тогда нет необходимости использовать цикл 'for', который я пытался очистить два сообщения назад.

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

Еще раз спасибо. Часть Take Profit работает до сих пор, как и ожидалось.

 
Arav007:


Спасибо за исправления.

Если мы используем count=count-1; тогда нет необходимости использовать цикл 'for', который я пытался очистить два сообщения назад.

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

Еще раз спасибо. Часть Take Profit работает до сих пор, как и ожидалось.


продолжайте тестировать и читать коды, которые вы видите, и вы многому научитесь,

Вы можете многому научиться.

если вы попытаетесь понять и изучить то.

с тестированием и созданием на собственном "демо" тестовом счете.

 
deVries:


продолжайте тестировать и читать коды, которые вы видите, и вы многому научитесь,

вы можете многому научиться.

если вы попытаетесь понять и изучить вещи

с тестированием и созданием на собственном "демо" счете для тестирования.


Да, я пытаюсь понять, что я понял.

Теперь о части'Stop Loss Trailing' я кое-что придумал.

Условие для запуска цикла "Трейлинг Стоп":

if(OrdersTotal()>0){

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

{

Трейлинг-стопы;

}

}

Теперь я подумал, что этот цикл будет выполняться столько раз, сколько всего открытых ордеров. И моя цель - "Не ставить трейлинг стопы" для последнего/третьего ордера.

Так что если я остановлю цикл на "втором" ордере, как это будет?

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

 
Arav007:


Да, я пытаюсь понять, что я имею в виду.

Теперь о части 'Stop Loss Trailing' я кое-что придумал.

Условие для запуска цикла 'Трейлинг стоп':

if(OrdersTotal()>0){

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

{

Трейлинг-стопы;

}

}

Теперь я подумал, что этот цикл будет выполняться столько раз, сколько всего открытых ордеров. И моя цель - "Не ставить трейлинг стопы" для последнего/третьего ордера.

Так что если я остановлю цикл на "втором" ордере, как это будет?

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


найти нужный символ и нужное магическое число

теперь проверьте, находится ли Bid/Ask на расстоянии xx пунктов от orderopenprice().

поищите здесь, и вы найдете примеры, которые сможете использовать

 
deVries:


найдите правильный символ и правильное магическое число

теперь проверьте, находится ли Bid/Ask на расстоянии xx пунктов от orderopenprice().

поищите здесь, и вы найдете примеры, которые сможете использовать.


У меня есть проверка и условная часть.

 if(OrdersTotal()>0){



        for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

        

        if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;

        if(OrderSymbol() == Symbol() && OrderMagicNumber() ==  MagicNumber){

sl     = OrderStopLoss(); // Stop Loss. 

                tStopLoss = NormalizeDouble(OrderStopLoss(), Digits); // Stop Loss. 

                

                if(OrderType()==OP_BUY){

                

                        if(Ask> NormalizeDouble(OrderOpenPrice()+TrailingStart* vPoint,Digits)

                        && tStopLoss < NormalizeDouble(Bid-(TrailingStop+TrailingStep)*vPoint,Digits)){

 tStopLoss = NormalizeDouble(Bid-TrailingStop*vPoint,Digits); 

}

}

Но здесь я не понимаю, как различать сделки. Функция 'Trailing Stop' вызывается в начале программы.

 

*После достижения определенного предела прибыли, скажем, 10 пунктов, Стоп Лосс переместится на 5 пунктов. Если сделка вернется к 5 пунктам, то "две трети" сделки будут закрыты.

*Оставшаяся "одна треть" будет продолжать работать, и "трейлинг-стоп" для нее применяться не будет.

У вас есть три сделки, так как вы хотите управлять этими тремя сделками?

чтобы они работали так, как вы хотели?

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

 
deVries:

*После достижения определенного предела прибыли, скажем, 10 пунктов, Стоп Лосс переместится на 5 пунктов. Если сделка вернется к 5 пунктам, то "две трети" сделки будут закрыты.

*Оставшаяся "одна треть" будет продолжать работать, и "трейлинг-стоп" для нее применяться не будет.

У вас есть три сделки, так как вы хотите управлять этими тремя сделками?

чтобы они работали так, как вы хотели?

Или какая из них должна быть изменена после получения определенной прибыли...


Чтобы упростить дело, я решил пойти с "тремя" отдельными сделками одного лота, таким образом, если две из них будут закрыты, "две трети" всех сделок (лотов) будут закрыты.

А оставшаяся сделка (одна треть) будет продолжать работать, т.е. для нее не будет применяться "трейлинг стоп".

Стоп-лосс будет перемещен на определенное количество пунктов в прибыли для первых двух сделок, но для третьей сделки он не будет перемещен.

 
Arav007:


Чтобы упростить дело, я решил пойти с "тремя" отдельными сделками одного лота, таким образом, если две из них будут закрыты, "две трети" всех сделок (лотов) будут закрыты.

А оставшаяся сделка (Третья) будет продолжать работать, т.е. для нее не будет применяться "трейлинг-стоп".

Стоп-лосс будет перемещен на определенное количество пунктов в прибыли для первых двух сделок, но для третьей сделки он не будет перемещен.


Чтобы правильно выполнить модификацию, необходимо использовать некоторые функции

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

проверьте функции здесь Trade Functions и посмотрите, можете ли вы выбрать сделку 1.

 
deVries:


Вы должны использовать некоторые функции, чтобы сделать модификацию правильно

в данный момент вам нужно как-то проверить способ выбора сделки, которую вы должны модифицировать

проверьте функции здесь Торговые функции и посмотрите, можете ли вы выбрать сделку 1.


Можно ли сравнить номер индекса с номером билета?

   if (count==3) 

    {

  SellOrder_1=OrderSend(Symbol() , iOrderType_Sell , LotSize,OpenPrice,Slippage ,dStopLossPrice ,dTakeProfitPrice_1 , "Sell Order",MagicNumber , 0,Red);

                

    if (SellOrder_1>0) //Checking if the order was opened or not

      { 

      sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Sell order 1 sent successfully. Ticket=" + SellOrder_1;

      Sell_Order_Ticket_1=SellOrder_1;

      count = count - 1; 

      }

     else {

          iLastError = GetLastError();                               

          sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Error sending sell order 1. Error code=" + ErrorDescription(iLastError);



} 

} 

//Trailing Stop Function 

if(OrdersTotal()>0){

//

        for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

        

        if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;

        if(OrderSymbol() == Symbol() && OrderMagicNumber() ==  MagicNumber){

                sl     = OrderStopLoss(); // Stop Loss. 

                tStopLoss = NormalizeDouble(OrderStopLoss(), Digits); // Stop Loss. 

                

                if(OrderType()==OP_BUY){

if (cnt==Sell_Order_Ticket_1){

Proceed to Next 

} 

Пожалуйста, обратитесь к Цветные блокированные части выше.

Спасибо

 
Arav007:


Можно ли сравнить номер индекса с номером билета?

Пожалуйста, обратитесь к деталям Color Blocked выше.

Спасибо


for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

сумма ваших заказов составляет 3 сделки

сделайте это

//for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

for(cnt= 3 -1;cnt>=0;cnt--)
   {
   Print ("cnt =  ",cnt);
   }

Что вы читаете, если вы откроете терминал и посмотрите на экспертов?

будет ли Sell_Order_Ticket_1 иметь такое же значение, как cnt?

если да, можете ли вы доказать мне, что это так...

если нет, то почему?

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