Ошибка #1 при модификации ордеров - страница 5

 
borilunad:

Виктор, а зачем ты занялся модификацией СЛ и ТП в отложках?! Вообще, имеет смысл ставить СЛ только после открытия позиции, а ТП после перевода СЛ в Б/У! Так зачем так надоедать серверу понапрасну и тебе эта мука?! 

Надо до минимума сократить и упростить код, чтобы работал быстро и чётко, и потом легче будет его подправлять из-за капризов рынка! Продумай хорошенько все нюансы, связанные с реалиями рынка!

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

если все нормально, то после срабатывания ордера я ставлю стоп на нужный уровень.

 
Stells:

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

если все нормально, то после срабатывания ордера я ставлю стоп на нужный уровень.

В этом Вы правы, если согласно ТС свой СЛ ставите близко к цене открытия! Но модифицировать несколько раз цену открытия, СЛ и ТП неразумно расстрачивает столько усилий и усложняет код, что называется, не стоит игра свеч!
 

Виктор, если тебе уж так это необходимо, можно сделать проще! Проверяй только цену открытия, а СЛ и ТП обозначь также как при постановки отложки со СЛ и ТП!

То есть для СЛ пиши Ask-SL или Bid+SL и для ТП, соответственно, Ask+TP или Bid-TP! Попробуй, это должно сработать хорошо! Так что нет ничего невозможного! :)

 
borilunad:

Хочешь функцию Modify()? 

Не откажусь. И даже где-то жду.. Этак с вчерашнего вечера.

 

keekkenen:
код вроде вполне.. а на реале (не демо) это работает ?
Да. Во многих экспертах, где не приходилось модить сразу 3 входных параметра работает. Замечу, что я скинул вариант для тестера, а есть ещё и для реала.

 

borilunad:

Виктор, а зачем ты занялся модификацией СЛ и ТП в отложках?! Вообще, имеет смысл ставить СЛ только после открытия позиции, а ТП после перевода СЛ в Б/У! Так зачем так надоедать серверу понапрасну и тебе эта мука?! 

Надо до минимума сократить и упростить код, чтобы работал быстро и чётко, и потом легче будет его подправлять из-за капризов рынка! Продумай хорошенько все нюансы, связанные с реалиями рынка!

Борис, если согласно документации одновременно можно модифицировать 3 параметра, то почему бы этим не пользоваться? Ведь это удобно! Я думаю над изменением вариантов расстановки стопов и тейков, но хотелось бы, чтоб и этот вариант работал как нужно, если эта возможность завялена документацией. А если нет, нужно было б написать, что это не возможно. И вопрос отпадёт сам собой.
 
borilunad:
В этом Вы правы, если согласно ТС свой СЛ ставите близко к цене открытия! Но модифицировать несколько раз цену открытия, СЛ и ТП неразумно расстрачивает столько усилий и усложняет код, что называется, не стоит игра свеч!

Борис, а кто сказал, что я долблю сервер очень часто? Ведь я о торговой системе не говорил. Есть разные варианты. Бывает, чаще всего, что переносится только СТОП, бывает и СТОП и ТЕЙК. Разные варианты. Но у меня, в данном случае, отложки переносятся, в среднем, раз в несколько часов... Ну или в час. Это по Вашему сильно усложняет код?

Наоборот, код становится проще. Вызвали функцию модификации... загнали туда 3 параметра и модифицировали... Это в идеале, не считая глюков терминала.

 А если не так. То придётся модифицировать ЦЕНУ ОТКРЫТИЯ, потом условия выполнились.. цену СТОПА, и по выполнению каких-то условий  или истечении некоторого времени изменять ТЕЙК. Это типа упрощение кода?

 
hoz:

Не откажусь. И даже где-то жду.. Этак с вчерашнего вечера.

 

Да. Во многих экспертах, где не приходилось модить сразу 3 входных параметра работает. Замечу, что я скинул вариант для тестера, а есть ещё и для реала.

 

Борис, если согласно документации одновременно можно модифицировать 3 параметра, то почему бы этим не пользоваться? Ведь это удобно! Я думаю над изменением вариантов расстановки стопов и тейков, но хотелось бы, чтоб и этот вариант работал как нужно, если эта возможность завялена документацией. А если нет, нужно было б написать, что это не возможно. И вопрос отпадёт сам собой.

 

Виктор, посмотри следущий мой пост, где я тебе подкинул идею проверять только цену открытия, а СЛ и ТП устанавливать заново от цены без заморочек!

А функцию сейчас выложу! Я ведь тоже "где-то жд"ал, что ты вчера отозвался! Будем попроще!

#include <stderror.mqh>//штатные инклюдники, чтобы 
#include <stdlib.mqh>  //вызывался ErrorDescription()



//------------------------/  Modify Order  \------------------------\\
void ModifyOrder(int ticket,double price,double stoploss,double takeprofit,datetime e,color arrow_color)
{
  int ModifyCnt = 0, err;
  while(ModifyCnt < 3) {
    if(OrderModify(ticket,NormalizeDouble(price,Digits),NormalizeDouble(stoploss,Digits),
    NormalizeDouble(takeprofit,Digits),0,arrow_color))
    ModifyCnt = 3;
    else err = GetLastError();
    if(err > 0) { 
      Print(ModifyCnt," #",ticket," Error modifing order: (", err , ") " , ErrorDescription(err));
      Sleep(5000); RefreshRates(); ModifyCnt++;
} } }

Будут вопросы спрашивай, не жди до завтра! ;)

Функция универсальная, служит для любых модификаций с отложками и открытыми позициями! Успехов!

Только сейчас, как вчера, иду обедать! Всего!

 
borilunad:

А функцию сейчас выложу! Я ведь тоже "где-то жд"ал, что ты вчера отозвался! Будем попроще!

Будут вопросы спрашивай, не жди до завтра! ;)

Функция универсальная, служит для любых модификаций с отложками и открытыми позициями! Успехов! 

Борис. а как же проверки на стоплевел и фризлевел. Или это уже не нужно в наше время? :) Касательно, кода Вашей функции.. согласен. Всё просто и чётко. Но проверки... их там нет. Почему?

 

borilunad:

Только сейчас, как вчера, иду обедать! Всего!

 У кого обед, а у кого в это время уже ужин..
 
hoz:

 Как убрать эту долбаную ошибку? Она меня уже достала. Проверяю каждый вводный параметр функции. У меня, в данный момент, это так:

Т.е. если параметр не изменён, то изменять его ненужно. Раньше я так не делал, но решил уж...

Дальше у меня параметры передаются в метода модификации ордера так:

Нв выходе в журнале:

Получается, журнал уведомил, типа модификация: ОК, а дальше... ошибка. Ни один параметр при этом не изменился.

Ордер отложенный. Так что менять можно цену открытия, стоп и тейк. И это, как я понимаю, не противоречил документации. 

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

Уберите else. 
 
hoz:

Борис. а как же проверки на стоплевел и фризлевел. Или это уже не нужно в наше время? :) Касательно, кода Вашей функции.. согласен. Всё просто и чётко. Но проверки... их там нет. Почему?

 

 У кого обед, а у кого в это время уже ужин..

 

Все проверки проводятся до цикла, в котором условия, относящиеся к каждому типу и вызов этой функции, в которой только проверка на ошибки в Modify():

            ModifyOrder(OrderTicket(),OOP,SL,0,0,clrBlue); return(0);

Если что, ещё спрашивай, но сейчас пошёл ужинать. ;)

 
Как голосовал? 
Причина обращения: