Обсуждение статьи "Создание эксперта, торгующего на разных инструментах" - страница 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 тф на других категорически показал пустоту .....

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

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