Закрывать все сделки через 30м после открытия - страница 3

 

Вот ещё

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Применение функция OrderClosePrice() к открытым ордерам

Renat Fatkhullin, 2006.09.12 14:23

Не рекомендую из-за сомнений в правильности его использования на фоне задаваемых вопросов. OrderClosePrice не имеет права изменяться после RefreshRates, он изменяется только и только после OrderSelect.

Ask и Bid, как известно, берут значения из копии рыночного окружения, которая без вызова RefreshRates() остается неизменной. Термин "текущая цена закрытия", так же как и обсуждаемое значение OrderClosePrice(), очевидно, был применен в контексте рыночного окружения обработчика тиков, а не в контексте реального времени. Так что, замечание по поводу экспертописателей с их ошибками и восприятием не имеет к сказанному мной никакого отношения.

Имеет самое непосредственное отношение, так как устаревание относилось к Вашему вопросу "как это значение может устареть, если цена остается неизменной в обработчике тиков?" Устаревание по отношению к внешним рыночным ценам, о которых знает сервер.

Именно такие вопросы создают сомнения в правильном восприятии цен и способах их использования.
прямо с первых слов говорится о том, что я и говорил. «Если ордер не закрылся, надо повторно его выбрать.»
 

Вопрос можно считать закрытым. 

 
Evgeniy Zhdan:

Вопрос можно считать закрытым. 

Именно об этом я и говорил.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Закрывать все сделки через 30м после открытия

Alexey Viktorov, 2020.11.17 07:32

Ничего он не перепутал. Всё именно так и работает на ура. Только есть некоторые опасности и Ренат об этом предупреждал. Если ордер не закрылся, по какой либо причине, то изменение цены Ask или Bid можно обновить вызвав соответствующую функцию, а для обновления OrderClosePrice() надо ордер ещё раз выбрать обновив свойства ордера.

Ищите и читайте. Этот вопрос обсуждался лет 12-15 назад.


а вы с пеной у рта доказывали что это не работает от слова вообще…

И обратите внимание на оговорку «… на фоне задаваемых вопросов.» Какие вопросы в той теме задавались, на те вопросы и была дана рекомендация. Но если программист понимает что делает, то это будет работать без проблем.

 
Alexey Viktorov:

Именно об этом я и говорил.


а вы с пеной у рта доказывали что это не работает от слова вообще…

И обратите внимание на оговорку «… на фоне задаваемых вопросов.» Какие вопросы в той теме задавались, на те вопросы и была дана рекомендация. Но если программист понимает что делает, то это будет работать без проблем.

Что-то вспомнилось :)


 
Alexey Viktorov:

Именно об этом я и говорил.


а вы с пеной у рта доказывали что это не работает от слова вообще…

И обратите внимание на оговорку «… на фоне задаваемых вопросов.» Какие вопросы в той теме задавались, на те вопросы и была дана рекомендация. Но если программист понимает что делает, то это будет работать без проблем.

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

а вы с пеной у рта доказывали что это не работает от слова вообще…
Не преувеличивайте. Я говорил то, что в справке не написано закрывать ордера с помощью этой функции.
 
banalen:

 Как задать правило, которое бы закрывало все сделки через полчаса после открытия? 

может вот так? что то нахимичил вроде работает. - должна вроде и в мт4 работать.

//+------------------------------------------------------------------+
//|                                                      Minutes.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
input int Minutes = 30;
//---
datetime ExTime=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   datetime times=TimeLocal();
   if(ExTime==0 || times>ExTime+60)
     {
      ExTime=times+60*Minutes;
     }
   if(times>=ExTime && times<ExTime+60)
     {
      ExTime=times+60*Minutes;
      // тут ваше условие ===================== тут ваше условие
      PlaySound("ok.wav");
      printf("Open parameters : ");
     }
  }
//+------------------------------------------------------------------+
 
Evgeniy ZhdanВопрос можно считать закрытым. 

Для меня вопрос давно  проверен и очевиден.

Более того. Добавил в скрипт цикл и задержку в 30 секунд. Установил:

Ask и Bid, как известно, берут значения из копии рыночного окружения, которая программа (скрипт, советник...) получает в момент запуска. Если программа работает достаточно длительно (дольше, чем до следующего тика), то Ask и Bid сохраняют прежние значения и перестают быть актуальными. Но функция OrderClosePrice() всегда дает последние актуальные значения цены закрытия ордера, равные текущим значениям Ask и Bid.

 
Evgeniy Zhdan:
Я говорил то, что в справке не написано закрывать ордера с помощью этой функции.

Живите по стандартам. Их иногда идиоты пишут. Слава Богу среди разработчиков МТ они не наблюдаются.

 
Evgeniy ZhdanПлатите доллары, напишу. Проверять будете сами у разных брокеров.


Писал уже, что скрипт давно написал. И одну строчку из него привел.

Мне удалось первую программу написать где-то в 1968 году - так что опыт программирования большой.

 
Alexey Viktorov:

Живите по стандартам. 

Зачем так радикально? Касаемо данного случая - горОдите огород. Ну что, трудно написать Bid или Ask вместо OrderClosePrice(), работоспособность которого не гарантирована? К тому же, Ask - Bid имеет меньше букв.