Ошибки, баги, вопросы - страница 2148

 
Andrey Khatimlianskii:

Почему индикаторы должны видеть один чарт?

iCustom-индикаторы не имеют своего чарта. Даже когда добавлены на какой-то чарт.

Потому что на основании ChartID может быть построен алгоритм индикатора???

Да, Chart-функции и евенты, примененные к своему графику (ручные/шаблонные индикаторы), могут быть задействованы для любых действий.

 

Ошибка в Документации

ChartNavigate

Осуществляет сдвиг указанного графика на указанное количество баров относительно указанной позиции графика.

bool  ChartNavigate(
   long  chart_id,     // идентификатор графика
   int   position,     // позиция
   int   shift=0       // значение сдвига
   );

Параметры

chart_id

[in]  Идентификатор графика. 0 означает текущий график.

position

[in]  Позиция графика, относительно которой будет произведено смещение. Значение может быть одним из значений перечисленияENUM_CHART_POSITION.

 
Andrey Barinov:

Советники на OBJ_CHART запускаются и прекрасно работают. Обрабатывают только OnChartEvent (кастомный)  и могут генерить свои кастомные события для других графиков.

Проверил. Советник Experts\Test.mq5

class CUSTOM
{
public:  
  CUSTOM()
  {
    Print(__FUNCSIG__);
    
    Print(EventSetTimer(1) && EventChartCustom(0, 0, 0, 0, NULL) &&
          MarketBookAdd(_Symbol) && 
          ChartSetInteger(0, CHART_EVENT_MOUSE_WHEEL, true) &&
          ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, true) &&
          ChartSetInteger(0, CHART_EVENT_OBJECT_CREATE, true) &&
          ChartSetInteger(0, CHART_EVENT_OBJECT_DELETE, true) &&
          ChartNavigate(0, CHART_BEGIN, 100) &&
          ObjectCreate(0, __FILE__, OBJ_VLINE, 0, 0, 0) &&
          ObjectDelete(0, __FILE__));
    
  }
  ~CUSTOM() { Print(__FUNCSIG__); }
};

const CUSTOM InitDeinit;

void OnTick() { Print(__FUNCSIG__); }
void OnInit() { Print(__FUNCSIG__); }
void OnDeinit( const int ) { Print(__FUNCSIG__); }
void OnChartEvent( const int id, const long&, const double&, const string& ) { Print(__FUNCSIG__ + " " + (string)id) ; }
void OnTimer() { Print(__FUNCSIG__); }
void OnBookEvent( const string& ) { Print(__FUNCSIG__); }


Скрипт

#include <fxsaber\Expert.mqh>  // https://www.mql5.com/ru/code/19003

void OnStart()
{
  if (ObjectCreate(0, __FILE__, OBJ_CHART, 0, 0, 0))
  {
    MqlParam Params[1];
    Params[0].string_value = "Experts\\Test.ex5";

    Print(EXPERT::Run(ObjectGetInteger(0, __FILE__, OBJPROP_CHART_ID), Params));
  }
}


Результат

Test3 (EURUSD,M1)       true
Test (EURUSD,M1)        void CUSTOM::CUSTOM()
Test (EURUSD,M1)        true
Test (EURUSD,M1)        void OnInit()
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 1000
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnDeinit(const int)
Test (EURUSD,M1)        void CUSTOM::~CUSTOM()


Вывод про советники на OBJ_CHART

  • Работают OnInit, OnDeinit, глобальный конструктор/деструктор и OnChartEvent.
  • Не работают OnTimer, OnTick и OnBookEvent.
  • Из евентов ловит только CHARTEVENT_CHART_CHANGE и кастомные.
  • Через OnChartEvent+EventChartCustom советника можно создавать "события" для OnTimer и OnTick, но не OnBookEvent.
 
В глюкотрейдере 5 не правильно работает #property tester_file при указании FILE_COMMON файл не открывается на агенте
 
Anton Ohmat:
В глюкотрейдере 5 не правильно работает #property tester_file при указании FILE_COMMON файл не открывается на агенте

Ну так не из Common-папки (общая для Терминала и локальных Агентов), а из Песочницы берется файл.

 
fxsaber:

Ну так не из Common-папки (общая для Терминала и локальных Агентов), а из Песочницы берется файл.

я на своих удаленных серверах тестирую - не работает. Запуск получается сделать только если на локальной машине в директории МТ лежат файлы, COMMON на оптимизацию не уходит


tester_file

string

Имя файла для тестера с указанием расширения, заключенное в двойные кавычки (как константная строка). Указанный файл будет передан тестеру в работу. Входные файлы для тестирования, если необходимы, должны указываться всегда

 
Anton Ohmat:

я на своих удаленных серверах тестирую - не работает. Запуск получается сделать только если на локальной машине в директории МТ лежат файлы, COMMON на оптимизацию не уходит

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

Ошибки, баги, вопросы

fxsaber, 2018.02.27 13:51

Ну так не из Common-папки (общая для Терминала и локальных Агентов), а из Песочницы берется файл.

Не нужно из Common пытаться Агентам что-либо раздавать. Раздавайте из Песочницы.

 

Всем привет,

такой прикол сегодня случился (вчера все было нормально)

Билд 1755 , Тестирую на рублевом счете! пара USDJPY


сегодня получаю такую ошибку:

2018.02.27 19:17:38.933 symbol RURJPY does not exist
2018.02.27 19:17:38.933 2018.01.02 14:37:08  no prices for symbol USDRUR (1970.01.01 00:00:00 0.00000, 0.00000)


тестирую на EURUSD

тестер пытается закачать историю:

2018.02.27 19:19:59.255 Tester  EURUSD: history data begins from 2010.01.04 00:00
2018.02.27 19:19:59.456 Tester  EURRUR: history check started


но в терминале эта пара называется по другому:


 
Vladislav Andruschenko:

Билд 1755 , Тестирую на рублевом счете! пара USDJPY

Отрубите все вспомогательные символы. Бонусом еще и ускорение получите.

 
fxsaber:

Отрубите все вспомогательные символы. Бонусом еще и ускорение получите.

не работает :-)

в тестере нет цен (профита) советник открывает сделку и получает всегда прибыль 0.