Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 973

 

Вопрос к программистам.

Имеется советник, который при открытии ордера выставляет стоп-лосс и тейк профит, на заданное кол-во пунктов. Требовалось сделать так,

чтобы вместо стоп-лосса открывался отложенный того же объёма. 

Я заменил строку 

if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error OrderModify ",GetLastError());

на

OrderSend(Symbol(),OP_BUYSTOP,1*Lots,Ask+Stoploss*Point,3,0,0,0) ;  //Ставим отложенный на покупку 

 

Ордер вместо стопа выставляется, но не один, как нужно а лупит их каждую секунду новый, пока не выключишь советник. Что нужно подредактировать,

чтобы ставился один отложенный на один открывшийся ордер?

Буду благодарен за конструктив.

Спасибо. 

 
Alligator:

Вопрос к программистам.

Имеется советник, который при открытии ордера выставляет стоп-лосс и тейк профит, на заданное кол-во пунктов. Требовалось сделать так,

чтобы вместо стоп-лосса открывался отложенный того же объёма. 

...

Ордер вместо стопа выставляется, но не один, как нужно а лупит их каждую секунду новый, пока не выключишь советник. Что нужно подредактировать,

чтобы ставился один отложенный на один открывшийся ордер?

Буду благодарен за конструктив.

Спасибо. 

 

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

Проблему о которой шла речь выше решил. Спасибо.

 

опять я, код не менял, весь код был выше.


  void Fr_sign()

  {

double gdClose_array[1];

if(CopyClose(_Symbol,PERIOD_CURRENT,1,1,gdClose_array)!=1) return;

Print("Close price = ",DoubleToStr(gdClose_array[0],_Digits));

  } 

 

Результат прогона на 5ти минтном таймфрейме с понедельнка по пятницу

 2015.01.12 00:00  111 EURUSD,M5: Close price = 1.05708

 2015.01.12 14:30  111 EURUSD,M5: Close price = 1.05708

 2015.01.13 03:49  111 EURUSD,M5: Close price = 1.05708

 2015.01.13 20:30  111 EURUSD,M5: Close price = 1.05708

 2015.01.14 10:20  111 EURUSD,M5: Close price = 1.05708

2015.01.15 11:00  111 EURUSD,M5: Close price = 1.05708 

2015.01.15 23:59  111 EURUSD,M5: Close price = 1.05708

Значение не изменяется в течении всего периода тестирования 

 

сделал прогон кода на втором ноутбуке, результат:

 

2015.01.12 00:00  111 EURUSD,M5: Close price = 1.18402 

2015.01.12 05:28  111 EURUSD,M5: Close price = 1.18558 

2015.01.12 05:30  111 EURUSD,M5: Close price = 1.18605 

2015.01.12 18:46  111 EURUSD,M5: Close price = 1.18276 

2015.01.13 18:00  111 EURUSD,M5: Close price = 1.17806 

2015.01.13 19:02  111 EURUSD,M5: Close price = 1.17778 

 т.е. нормальный результат

 

 Переустановил софт, вроде решил проблему,

 

paladin80 спасибо за участие. 

 

Набросил советник на график Mt4. 

В mqlEditor внес изменения в коде. Нажимаю кнопку компилировать. По идее, на графике советник должен перезапуститься. Но этого не происходит. 

Для перезапуска приходится заного набрасывать советник на график. 

В чем проблема? 

 
serler2:

Набросил советник на график Mt4. 

В mqlEditor внес изменения в коде. Нажимаю кнопку компилировать. По идее, на графике советник должен (не должен!) перезапуститься. Но этого не происходит. 

Для перезапуска приходится заного набрасывать советник на график. 

В чем проблема? 

После изменения кода, работающий уже на графике советник сам не подменивается.
 
paladin80:
После изменения кода, работающий уже на графике советник сам не подменивается.

После изменения кода я компилирую советника. Раньше, после перекомпиляции советник на графике обновлялся. 

 
Всем доброго времени суток! Очень надеюсь на вашу помощь. Думаю решение моего вопроса будет интересно многим. В условиях активного рынка советник часто неправильно выставляет уровни стопа и тейка. Возможно ли написать код, который заставлял бы советника уже после открытия сделки проверить правильно ли выставлены уровни её закрытия, и в случае, если эти уровни отличаются от заданных изначально, то советник исправлял бы стоп и тейк на необходимые. Например, я хочу, чтобы открылась сделка с одинаковыми уровнями стопа и тейка в 50 единиц, что прописано в советнике. Но из-за сильных колебаний сделка открывается с со стоп лосом в 47 и тейк профитом в 53, что меня не устраивает. Помогите написать код, с помощью которого уже после открытия сделки уровни закрытия станут равными 50. Буду очень признателен и уверен, что не я один.
 
Hali:
Всем доброго времени суток! Очень надеюсь на вашу помощь. Думаю решение моего вопроса будет интересно многим. В условиях активного рынка советник часто неправильно выставляет уровни стопа и тейка. Возможно ли написать код, который заставлял бы советника уже после открытия сделки проверить правильно ли выставлены уровни её закрытия, и в случае, если эти уровни отличаются от заданных изначально, то советник исправлял бы стоп и тейк на необходимые. Например, я хочу, чтобы открылась сделка с одинаковыми уровнями стопа и тейка в 50 единиц, что прописано в советнике. Но из-за сильных колебаний сделка открывается с со стоп лосом в 47 и тейк профитом в 53, что меня не устраивает. Помогите написать код, с помощью которого уже после открытия сделки уровни закрытия станут равными 50. Буду очень признателен и уверен, что не я один.

А я уверен что один.

В той-же группе функций "Торговые функции" кроме OrderSend() есть ещё OrderModify(). Кроме этого есть типы счетов на которых запрещено открывать ордера одновременно с не нулевыми стопом и тейком. То-есть сначала открытие ордера и потом постановка стопа и тейка функцией OrderModify() и уровни тейка и стопа надо отсчитывать от цены OrderOpenPrice()

Надеюсь ответ достаточно понятен.