Обновить бары скриптом по любым инструментам и таймфреймам

 

Торгую по 28 инструментам. Мне нужно скриптом иметь возможность обновить по ним бары по определённым таймфреймам. Автоматически терминалом они обновляются только если открыть все эти инструменты на графиках, причём ещё и в каждом таймфрейме. Держать открытыми столько графиков нет возможности - сильно грузит ОЗУ и получается мешанина, слишком много графиков и мешают работать с нужными.

Если скриптом выполнить команду iClose(Symb, PERIOD_M1, 0), где Symb - это один из инструментов, то вернётся цена последнего загруженного бара M1, хотя он был загружен, скажем 16 минут назад и уже неактуален, а нужно свежий. Обновить бары нужно именно скриптом, чтобы после этого имелись актуальные бары и можно было с ними работать другим скриптом.

 
Elferboy:

Торгую по 28 инструментам. Мне нужно скриптом иметь возможность обновить по ним бары по определённым таймфреймам. Автоматически терминалом они обновляются только если открыть все эти инструменты на графиках, причём ещё и в каждом таймфрейме. Держать открытыми столько графиков нет возможности - сильно грузит ОЗУ и получается мешанина, слишком много графиков и мешают работать с нужными.

Если скриптом выполнить команду iClose(Symb, PERIOD_M1, 0), где Symb - это один из инструментов, то вернётся цена последнего загруженного бара M1, хотя он был загружен, скажем 16 минут назад и уже неактуален, а нужно свежий. Обновить бары нужно именно скриптом, чтобы после этого имелись актуальные бары и можно было с ними работать другим скриптом.

свои пары добавишь по аналогии его надо положить в индикаторы это для четверки

Файлы:
ON-LINE.mq4  1 kb
 
Elferboy:

Мне нужно скриптом иметь возможность обновить по ним бары по определённым таймфреймам.

в скриптах нужно самостоятельно обновлять данные: RefreshRates()

 
ruslan #:

свои пары добавишь по аналогии его надо положить в индикаторы это для четверки

Точно один цикл? Символ0 и ТФ0 , Символ1 и ТФ1....

 

Заметил, что вот эта фишка производит синхронизацию исторических данных (размещаем в инит)

ChartSetSymbolPeriod(ChartID(),Symbol(),Period());

а вот эта:

RefreshRates();

чо то не

 
Renat Akhtyamov #:

Заметил, что вот эта фишка производит синхронизацию исторических данных (размещаем в инит)

ChartSetSymbolPeriod(ChartID(),Symbol(),Period());

речь идет про скрипт, а не про то что вы замечаете.

Renat Akhtyamov #:

чо то не

чё то да.

 
Taras Slobodyanik #:

речь идет про скрипт, а не про то что вы замечаете.

чё то да.

ну и где он, скрипт Ваш ?

;)

 
Renat Akhtyamov #:

ну и где он, скрипт Ваш ?

;)

Вот не понимаю вас, зачем вы постоянно даете советы и вставляете своё "фэ", если вы не разбираетесь в этом?
Откройте справку - почитайте.
Создайте скрипт - проверьте.

и при этом хотите чтобы я вас обучал - открывайте работу во фрилансе.

 
Taras Slobodyanik #:

Вот не понимаю вас, зачем вы постоянно даете советы и вставляете своё "фэ", если вы не разбираетесь в этом?
Откройте справку - почитайте.
Создайте скрипт - проверьте.

Хотите чтобы я вас обучал - открывайте работу во фрилансе.

нет. это я Вас обучаю, чтобы дров за платно не наломали

;)

вот, как работает то, что я показал


крутая штучка, да?

поэтому, рекомендую ;)

покажите результат отработки функции  RefreshRates() ?

кстати, инит по сути скрипт

А скрипт - это по сути законченный продукт, с этим вопросом лучше на фриланс, не Вам конечно, автору ветки.
 
Renat Akhtyamov #:

нет. это я Вас обучаю, чтобы дров за платно не наломали

;)

вот, как работает то, что я показал


крутая штучка, да?

поэтому, рекомендую ;)

покажите результат отработки функции  RefreshRates() ?

кстати, инит по сути скрипт

А скрипт - это по сути законченный продукт, с этим вопросом лучше на фриланс, не Вам конечно, автору ветки.

вот вам скрипт с RefreshRates() который постоянно обновляет текущую цену.
теперь покажите ваш скрипт :)

void OnStart()
  {
   while (!IsStopped())
      {
      RefreshRates();
      Comment(DoubleToStr(iClose("EURUSD",PERIOD_H1,0),_Digits)+"\n"+
              DoubleToStr(iClose("GBPUSD",PERIOD_H1,0),_Digits) );
      
      Sleep(200);
      }
  }
 
Taras Slobodyanik #:

вот вам скрипт с RefreshRates() который постоянно обновляет текущую цену.
теперь покажите ваш скрипт :)

во первых, я в это не верю:

Если скриптом выполнить команду iClose(Symb, PERIOD_M1, 0), где Symb - это один из инструментов, то вернётся цена последнего загруженного бара M1, хотя он был загружен, скажем 16 минут назад и уже неактуален,

т.к. нет более актуального бара, чем последний

во вторых, мне не нравится Ваш скрипт, т.к. я не люблю зацикливать функции, хлопотно это для системы

точно также, как и не практично применение Sleep  в торговых системах.

в третьих, я эту проблему решил не так, совсем не так. была она и формулируется по другому.

реализуется с помощью таймера + внешняя примочка на С# - это уже когда связь рубанули.

одним скриптом тут не обойтись, в принципе


так что у нас с Вами совершенно разные цели написания и применения программ

дальнейший диалог считаю бесполезным.