Как импортировать бид/аск из другой валютной пары? - страница 2

 

Я прочитал документацию Market Info и понял, что вы можете извлекать только цены покупки/продажи. Как я могу попытаться получить данные о цене (HLOC), скажем, 6 баров назад?


Честно говоря, я потратил много времени на чтение документации, но она не так полезна, как, скажем, другие языки, такие как Python или PRT, поэтому я просто искал совета.

С уважением,

 
Simone Gill:

Я прочитал документацию Market Info и понял, что вы можете извлекать только цены спроса и предложения. Как я могу попытаться получить данные о цене (HLOC), скажем, 6 баров назад?


Честно говоря, я потратил много времени на чтение документации, но она не так полезна, как, скажем, другие языки, такие как Python или PRT, поэтому я просто искал совета.

С уважением,

Используйте iOpen(), iClose(), iHigh() и/или iLow()

 

Привет, профессионалы,

Я действительно разозлился, когда читал эту тему, извините, что поднял ее. Но поскольку у меня возникла та же проблема, я решил прокомментировать ее здесь.

Вот мой код:

double Ask2,Bid2;

----------------------------

void start()

{

Ask2=MarketInfo("GBPUSD",MODE_ASK);
Bid2=MarketInfo("GBPUSD",MODE_BID);
Comment(Ask2, Bid2);

}


Комментарий показывает 00

Почему он не может импортировать Ask и Bid из другого символа?


Любой совет будет принят с благодарностью,
Hossein.

 
HosseinKOGO: Почему он не может импортировать Ask и Bid из других символов?
На MT4: Если только текущий график не является той конкретной парой/ТФ, на которую ссылается советник, вы должны обрабатывать ошибки 4066/4073перед доступом к ценам.
История загрузки в советнике MQL4 - MQL4 и MetaTrader 4 - Форум по программированию MQL4

На MT5: Если только график не является этой конкретной парой/TF, вы должны синхронизировать данные терминала с сервером.
Доступ к таймсериям и индикаторам / Доступ к данным - Справочник по языку алгоритмической/автоматизированной торговли для MetaTrader 5
Синхронизация данных сервера с данными терминала - Символы - Общие - Форум по программированию на MQL5

 
William Roeder:
На MT4: Если только текущий график не является той конкретной парой/ТФ, на которую ссылается советник, вы должны обрабатывать ошибки 4066/4073перед доступом к ценам.
История загрузки в советнике MQL4 - MQL4 и MetaTrader 4 - Форум по программированию MQL4

На MT5: Если только график не является конкретной парой/TF, вы должны синхронизировать данные терминала с сервером.
Доступ к таймсериям и индикаторам / Доступ к данным - Справочник по языку алгоритмической/автоматизированной торговли для MetaTrader 5
Синхронизация данных сервера с данными терминала - Символы - Общее - Форум по программированию на MQL5

Спасибо за помощь.

Я использую Tick Data Suite от eareview.net и перед бэктестингом загрузил историю моих целевых пар, включая GBPUSD. Кроме того, Journal не выдает мне никакой ошибки. Это что-то с интеграцией? Должен ли я искать решение, обратившись в службу поддержки Tick Data Suite?

(Я использую MQL4 для кодирования)
 

Может ли кто-нибудь попробовать этот код при бэктестинге на графике GBPAUD -4H? Я действительно застрял :(
Вы получаете 00 в качестве комментария?

double Ask2,Bid2;

----------------------------

void start()

{

Ask2=MarketInfo("GBPUSD",MODE_ASK);
Bid2=MarketInfo("GBPUSD",MODE_BID);
Comment(Ask2, Bid2);

}
 
HosseinKOGO: Я использую Tick Data Suite от eareview.net и перед бэктестингом загрузил историю моих целевых пар, включая GBPUSD. Кроме того, Journal не выдает мне никакой ошибки. Это что-то с интеграцией? Должен ли я искать решение, обратившись в службу поддержки Tick Data Suite? (Я использую MQL4 для кодирования).

Это не имеет никакого отношения к TDS. Вы должны заставить терминал считать данные, прежде чем получить к ним доступ. Какая часть фразы "до доступа к ценам" была непонятна?

HosseinKOGO : Я действительно застрял :( Вы получаете 00 в качестве комментария?

Вы собираетесь оставаться таким, когда игнорируете полученную помощь. Какая часть фразы "должен обрабатывать" была неясна?

 
William Roeder:

Это не имеет никакого отношения к TDS. Вы должны заставить терминал считать данные, прежде чем получить к ним доступ. Какая часть фразы "перед доступом к ценам" была непонятна?

Вы собираетесь оставаться таким, когда игнорируете полученную помощь. Какая часть "должен справиться" была неясна?

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

Не могли бы вы дать мне более подробную информацию о том, что я должен делать с этим кодом, который вы опубликовали?

#define  HR2400 PERIOD_D1 * 60    // 86400 = 24 * 3600
int      TimeOfDay(datetime when=0){      if(when == 0)  when = TimeCurrent();
                                          return( when % HR2400 );            }
datetime DateOfDay(datetime when=0){      if(when == 0)  when = TimeCurrent();
                                          return( when - TimeOfDay(when) );   }
#define  SYMBOL string
#define  THIS_SYMBOL ""
bool  download_history(ENUM_TIMEFRAMES period=PERIOD_CURRENT){
   return download_history(_Symbol, period); 
}
bool  download_history(
      SYMBOL            symbol=THIS_SYMBOL,     ///< The symbol required.
      ENUM_TIMEFRAMES   period=PERIOD_CURRENT   /**< The standard timeframe.*/){
   if(symbol == THIS_SYMBOL)     symbol = _Symbol;
   if(period == PERIOD_CURRENT)  period = _Period;
   datetime today = DateOfDay();
   ResetLastError();
   datetime other = iTime(symbol, period, 0);
   if(_LastError == 0 
   && today == DateOfDay(other)) return true;   
   if(_LastError != ERR_HISTORY_WILL_UPDATED
   && _LastError != ERR_NO_HISTORY_DATA
      Print(StringFormat("iTime(%s,%i) Failed: %i", symbol, period,_LastError));
   return false;
}

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

Я также скопировал эту строку кода в функцию start:

while(!download_history(PERIOD_M15) ){ Sleep(1000); RefreshRates(); }

Не могли бы вы посоветовать мне, что и куда я должен вставить, чтобы было достаточно информации и пунктуации?

Еще раз извините за мой низкий уровень мастерства...

 
  1. HosseinKOGO: и он выдает мне ошибки и предупреждения.

    HosseinKOGO : Не могли бы вы дать мне более подробную информацию о том, что я должен сделать с этим кодом, который вы выложили?

    1. Вы не смогли разобраться с такими незначительными исправлениями?
      int      TimeOfDay(datetime when=0){      if(when == 0)  when = TimeCurrent();
                                                return( int( when % HR2400) );            }
      
        if(_LastError != ERR_HISTORY_WILL_UPDATED
         && _LastError != ERR_NO_HISTORY_DATA
         )  Print(StringFormat("iTime(%s,%i) Failed: %i", symbol, period,_LastError));
      

    2. Вы уже выложили его для советника.
      while(!download_history(PERIOD_M15) ){ Sleep(1000); RefreshRates(); }
 
William Roeder:
    1. Вы не смогли разобраться с такими мелкими исправлениями?

    2. Вы уже разместили его для эксперта.

Спасибо за ваш ответ,

На самом деле я не кодер, но я пробовал кодировать некоторые советники. Моя работа связана с творчеством и стратегией, поэтому я перелопатил 600-700 идей для создания советников и создал их до сих пор. Я просто могу кодировать очень простые советники, и я не привык к вашему высокоуровневому кодированию...

Я вставил эти коды в свой советник, но он возвращает только эту ошибку: 2019.05.06 15:37:56.586 2018.01.02 00:00:07 MyEA! GBPAUD,H4: iTime(GBPUSD,240) Failed: 0

Я пробую GBPAUD в качестве моего открытого графика и GBPUSD в качестве второй пары.

В чем проблема?