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

 

Да, я понял. Сравнение невозможно, так как cnt будет иметь значение 3,2,1, а номер билета - это нечто другое.

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. 

                Order Ticket=OrderTicket(); 

                

                if(OrderType()==OP_SLL){ 

                if( Order Ticket== Sell_Order_Ticket_1){ Do the Normal Trailing Stop}

                if( Order Ticket== Sell_Order_Ticket_2){ Do the Normal Trailing Stop}

                if( Order Ticket== Sell_Order_Ticket_3){ Don't move the Stop Loss} 

Могу ли я сравнить номер билета таким образом?

С уважением,

 
Arav007:

Да, я понял. Сравнение невозможно, так как cnt будет иметь значение 3,2,1, а номер билета - это нечто другое.

Могу ли я сравнить номер билета таким образом?

С уважением,

нет
если ваш компьютер перезагрузится, то значение Sell_Order_Ticket_1 (2 и 3 также) будет потеряно.

проверьте orderopenprice и ordertakeprofit

 
deVries:

нет
если ваш компьютер перезагрузится, то значение Sell_Order_Ticket_1 (2 и 3 тоже) будет потеряно

проверьте orderopenprice и ordertakeprofit.


Я не понял, почему значение Sell_Order_Ticket_1 будет потеряно после перезапуска терминала?

Это переменная, и она не перезаписывается, пока не открывается новый ордер на продажу.

Это то, что я понимаю, но есть логика за вашим комментарием. Поэтому, пожалуйста, объясните немного.

И я посмотрел функции OrderOpenPrice и OrderTakeProfit. Что с ними делать?

 
Arav007:


Я не понял, почему значение Sell_Order_Ticket_1 будет потеряно после перезапуска терминала?

Это переменная, и она не перезаписывается, пока не открывается новый ордер на продажу.

Это то, что я понимаю, но за вашим комментарием есть логика. Поэтому, пожалуйста, объясните немного.

И я посмотрел функции OrderOpenPrice и OrderTakeProfit. Что с ними делать?


Все переменные теряются при перезапуске терминала.

Можно получить только глобальные переменные клиентского терминала.

 
Arav007:


Я не понял, почему значение Sell_Order_Ticket_1 теряется после перезапуска терминала?

Это переменная, и она не перезаписывается, пока не открывается новый ордер на продажу.

Это то, что я понимаю, но за вашим комментарием есть логика. Поэтому, пожалуйста, объясните немного.

И я посмотрел функции OrderOpenPrice и OrderTakeProfit. Что с ними делать?


сделайте еще несколько тестов, создав свои файлы

откройте 3 сделки

обратите внимание на полученные цифры

затем закройте metatrader4 и запустите его снова, проверьте значения Sell_Order_Ticket_1, Sell_Order_Ticket_2 и Sell_Order_Ticket_3.

одинаковы ли они? Если нет, то какое значение вы получаете?

 

Хорошо, понял. Эта информация о "Переменной" будет полезна и для будущего.

if(OrdersTotal()>0){

        for(cnt=3;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==3) { Do the Normal Trailing Stop}

if (cnt==2) { Do the Normal Trailing Stop}

if (cnt==1) { Don't move the Stop Loss}

}

}

} 

Как насчет этого?

 
Arav007:

Хорошо, понял. Эта информация о "Переменной" будет полезна и для будущего.

Как насчет этого?


можем ли мы сначала снова посмотреть на ваш код открытия сделок?

проверьте стоплосс и тейкпрофит этих сделок, там все еще что-то не так, вы видите?

 
deVries:


можем ли мы сначала посмотреть на ваш код открытия сделок снова?

проверьте стоплосс и тейкпрофит этих сделок, там все еще что-то не так, вы видите?


Ооо, это из-за неправильного кода. После исправления недочетов, часть тейк-профита теперь в порядке, а вот со стоп-лоссом проблема.

Логика:

if (Fast_EMA>Slow_SMA)

{

if (MA_Difference_1>=Value_Diff && iOpenOrders_Buy ==0)

{

Покупаем

}

}

 
Arav007:


ох, это из-за неправильного кода. После исправления недочетов, часть тейк-профита теперь в порядке, а вот со стоп-лоссом проблема.

Какой стоплосс вы хотели установить для этих сделок?
 
deVries:
Какой стоплосс вы хотели установить для этих сделок?


Как здесь для сделок по USDJPY:

TP 1-й сделки (здесь последняя из-за обратного расположения времени) = 103,636

TP второй сделки = 103.736

TP третьей сделки = 108.536 [ Я установил этот TP на таком расстоянии, что он будет работать так, как будто TP отсутствует].

Теперь, в соответствии с моим требованием, когда цена будет в прибыли, скажем, 7 пунктов [103.603], стоп-лосс для

1-ой и 2-ой сделок станет скажем 1 пункт прибыли [103.543], а Stop Loss 3-ей сделки останется на 103.386.

Как на рисунке ниже:

1-й ордер GBPUSD закрылся с прибылью 10 пунктов.

2-й ордер все еще работает, но его SL был перемещен.

Для третьей сделки SL тоже был перемещен, чего я не хочу.