[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 486

 
abolk:

покажите как вы считываете глобальнукю переменную global_trailing_SP


На данный момент для основной позиции трейлинг считается по ATR вот так:

void Trailing_Stop_by_ATR_SP(int Timeframe,int Period_ATR_SP,double Multiply_SP,int digits_symbol,int Magic)
{  
   double High_1     = NormalizeDouble(iHigh(Symbol(),Timeframe,1),Digits);
   double Low_1      = NormalizeDouble(iLow(Symbol(),Timeframe,1),Digits);
   double atr        = iATR(Symbol(),Timeframe,Period_ATR_SP,1);
   double new_trail  = Low_1 + NormalizeDouble(((Multiply_SP*atr)*digits_symbol)*Point,Digits);
    
   for(int count = OrdersTotal()-1; count >= 0; count--)
      {  OrderSelect(count,SELECT_BY_POS,MODE_TRADES);
      
         if (OrderType() == OP_SELL && OrderMagicNumber() == Magic)
            {  double Op_Price = NormalizeDouble(OrderOpenPrice(),Digits);
               double Stp_Loss = NormalizeDouble(OrderStopLoss(),Digits);
               
               if (new_trail < Stp_Loss && new_trail > High_1)
                  {  
                     OrderModify(OrderTicket(),Op_Price,new_trail,0,0,White);
                  }
            }
      }
}
Но с этим проблем не возникает никаких, так как основная позиция трейлингуется без ошибок. Проблема присвоить это же значение другой позиции(ям).
 
FOReignEXchange:

Так я чёта не понял. Отложенный ордер на момент модификации основного ордера существует?

Если существует, то модификация основного ордера и модификация отложенного проходит в одном блоке. И если основной ордер модифицировался, то и отложенный тоже должен, если Вы так задумали.

Другуе дело,что задуманое не получается. Значит ошибка в условии. Попробуйте сделать всё также как и в условии для модификации основного ордера, как я показал выше. Мне кажется ошибка в логике. Не удивительно. Что-то у Вас всё сложно. Проще надо делать.


Вполне возможно, что нужно делать проще. Это по неопытности.))

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

 
FOReignEXchange:

Не удивительно. Что-то у Вас всё сложно. Проще надо делать.

Сделал проще. Вроде проблема пока исчезла. Объединил трейлинг для всех позиций. А модификацию отложенных ордеров буду делать в отдельной функции. Спасибо.)))
 
tol64:
Сделал проще. Вроде проблема пока исчезла. Спасибо.)))


Что отложка замодифицировалась чтоли? :)

Почерк надо менять. Чем понятнее почерк, тем меньше допускается ошибок. Старайтесь всё в одну кучу не пихать, как можно меньше переменных и всяких ненужных вещей. Фигурные скобки пишите всегда с новой строки, чтобы блоки отчётливо были видны.

 
FOReignEXchange:

Что отложка замодифицировалась чтоли?


Да, в представленной выше функции, трейлинг по ATR, исключил проверку по мэджику и добавил отложки:

if (OrderType() == OP_SELL || OrderType() == OP_SELLSTOP) 
 
FOReignEXchange:


Почерк надо менять. Чем понятнее почерк, тем меньше допускается ошибок. Старайтесь всё в одну кучу не пихать, как можно меньше переменных и всяких ненужных вещей. Фигурные скобки пишите всегда с новой строки, чтобы блоки отчётливо были видны.

Спасибо за советы. Самые лучшие из них я выгравировываю в своих нейронах.)))
 
tol64:


Да, в представленной выше функции, трейлинг по ATR, исключил проверку по мэджику и добавил отложки:


Да. Всё верно, я как раз хотел про Магик сказать. Вот видите. Лишние переменные ни к чему. До встречи.
 
FOReignEXchange:

Да. Всё верно, я как раз хотел про Магик сказать. Вот видите. Лишние переменные ни к чему. До встречи.


мудрая мысль - "лишние переменные ни к чему"
да и магик "ни к чему" - зачем проверять ордер на магик?
ну смодифицируете ордер от другого советника - ничего страшного.
вообще магик исключить как класс - зря разработчики его вводили - только время потеряли - и нам мозги заколапоцкали всякими магиками

p.s. да и танцору, то что мешает - лучше обрезать

 
abolk:


мудрая мысль - "лишние переменные ни к чему"
да и магик "ни к чему" - зачем проверять ордер на магик?
ну смодифицируете ордер от другого советника - ничего страшного.
вообще магик исключить как класс


)))) Нет, всё же магик лучше оставить. А оставить просто отложенные ордера.

Точнее оставить те магики, которые нужны. А если используется несколько советников на разных графиках, то нужно ещё и символы включить в проверку. Но до этого я пока ещё не дошёл. ))

 

Я вообще магиками никогда не пользуюсь. Хотя бывает,что по нескольку позиций. Пользуюсь тикетами. Намного проще проверять через ОрдерСелект. И функция ОрдерСенд становится понятнее. Ну каждый сам хозяин своего почерка. Лично у меня без магиков никаких проблемм никогда не было.

Тикет никогда никуда не денется. С ним удобно.

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