Обсуждение статьи "Создание эксперта, торгующего на разных инструментах" - страница 2

 
gisip:
На MQL4 все работает нормально без таймера.
Ваше утверждение не совсем приемлемо, речь идет о мультивалютном тестировании. В MT4 нет таймера, но и нет мультивалютного тестера. При  своей работе на MT4, эксперт в любом случае зависит от интенсивности потока котировок того инструмента на котором работает. Представьте себе такую ситуацию:  допустим у Вас мультивалютный эксперт стоит на паре EURUSD, и если в какой-то квант времени нет тиков на этой паре, каким способом Вы собираетесь отслеживать приход новых тиков по остальным инструментам?
 
Interesting:

Ну на MQL4 его и нет, также там нет и структур и классов, предлагаете от них и тут отказаться?


ИМХО

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

Я вообще не о том писал.

Я писал, что MQL5 глючит и при определенных сочетаниях инструментов выдает ошибочные данные.

Например: Если на график EURUSD наложить EURJPY или EURGBP то все нормально.

Но если наложить EURCAD то данные на графике с ошибкой,а в MQL4 такого не было, там без ошибки.

 
gisip:

Я вообще не о том писал.

Я писал, что MQL5 глючит и при определенных сочетаниях инструментов выдает ошибочные данные.

Например: Если на график EURUSD наложить EURJPY или EURGBP то все нормально.

Но если наложить EURCAD то данные на графике с ошибкой,а в MQL4 такого не было, там без ошибки.

Я это понял, но и Kos прав (особенно приятен пост от 2010.07.02 14:57). Что все уцепились за этот OnTick(), пол года уже понять не могу, почему все разработчики (включая MQ) упорно игнорируют таймер. Если учесть что официальных примеров мультивалютных торговцев нет, то с MQ в этом вопросе все понятно, но почему остальные упорно игнорируют OnTimer() для меня лично остается  БОЛЬШОЙ ЗАГАДКОЙ...
 
gisip:

Я вообще не о том писал.

Я писал, что MQL5 глючит и при определенных сочетаниях инструментов выдает ошибочные данные.

Например: Если на график EURUSD наложить EURJPY или EURGBP то все нормально.

Но если наложить EURCAD то данные на графике с ошибкой,а в MQL4 такого не было, там без ошибки.

Приведите, пожалуйста, пример с ошибкой.
 
Renat:
Приведите, пожалуйста, пример с ошибкой.
Ну я тут все писать не буду вроде и так ясно.
//--------- Вариант с MQL4 ---------
#property  indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua

extern string InstrumentName = "EURCAD";
double Buffer[];
SetIndexBuffer(0,Buffer);         // Назначение массива буферу
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии

 while(i >= 0){//-- Движимся справа налево (тоесть от старшего к 0 бару который еще только формируется) --
      Buffer[i] =  (iHigh(InstrumentName,0,i) + iClose(InstrumentName,0,i) + iLow(InstrumentName,0,i)) / 3;
      i--;//-- next Bar
   }//next (while)



//----------- Теперь почти тот же вариант на MQL5 --------
#property  indicator_separate_window    // Индик. рисуется в отдельном окне
#property indicator_buffers 1

#property indicator_plots   1
#property indicator_type1   DRAW_LINE
#property indicator_color1  Aqua

input string InstrumentName = "EURCAD";
double Buffer[];
int handle1;

copied=CopyClose(InstrumentName,0,0,CountBars,Buffer);

//--Теперь кидаем на EURUSD.

//--По идее не важно на каком инструменте размещаем индикатор, график меняться не должен.
 
Пожалуйста, правильно вставляйте код, это облегчает понимание.
MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • 2010.02.23
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
 
Rosh:
Пожалуйста, правильно вставляйте код, это облегчает понимание.

//--------- Вариант с MQL4 ---------
#property  indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua

extern string InstrumentName = "EURCAD";
double Buffer[];
int init()
{
SetIndexBuffer(0,Buffer);         // Назначение массива буферу
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
}
int start()
{
 while(i >= 0){
      Buffer[i] =  (iHigh(InstrumentName,0,i) + iClose(InstrumentName,0,i) + iLow(InstrumentName,0,i)) / 3;
      i--;//-- next Bar
   }//next (while)
}


//----------- Теперь почти тот же вариант на MQL5 --------
#property  indicator_separate_window    // Индик. рисуется в отдельном окне
#property indicator_buffers 1

#property indicator_plots   1
#property indicator_type1   DRAW_LINE
#property indicator_color1  Aqua

input string InstrumentName = "EURCAD";
double Buffer[];
int OnInit()
{
   IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
   SetIndexBuffer(0,Buffer,INDICATOR_DATA);
}

int OnCalculate(...)
{
  copied=CopyClose(InstrumentName,0,0,CountBars,Buffer);
}
//--Теперь кидаем на EURUSD.

//--По идее не важно на каком инструменте размещаем индикатор, график меняться не должен.
 
Gisip, следует использовать вставку кода при помощи кнопки "SRC"...
 

Сделайте, пожалуйста, воспроизводимый пример. То есть, нужен готовых код, который можно скомпилять, бросить на чарт и получить результаты.

Без этого мало кто поймет о чем речь.
 

так уж и быть помогу обделённым сознанием

//----------- Теперь почти тот же вариант на MQL5 --------
#property  indicator_separate_window    // Индик. рисуется в отдельном окне
#property indicator_buffers 1

#property indicator_plots   1
#property indicator_type1   DRAW_LINE
#property indicator_color1  Aqua

input string InstrumentName = "EURCAD";
double Buffer[]; 
int OnInit() 
{
   IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
   SetIndexBuffer(0,Buffer,INDICATOR_DATA);
return(0);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
{
int copied;
int CountBars=rates_total;
  copied=CopyClose(InstrumentName,0,0,CountBars,Buffer);
  return(copied);
}
//--Теперь кидаем на EURUSD.

//--По идее не важно на каком инструменте размещаем индикатор, график меняться не должен.

по идеето не должен но у меня чото он скрипя алгоритмами появился тлько на 1 тф на других категорически показал пустоту .....

даже после часа тестирований.....

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