нужна помощь)))

 
Добрый день). Подскажите как получить цены открытия/закрытия хай/лоу свечей другого символа? отличного от того на котором стоит советник?
 
Александр Алексеевич:
Добрый день). Подскажите как получить цены открытия/закрытия хай/лоу свечей другого символа? отличного от того на котором стоит советник?

Явно укажите символ.

   string           symbol_name,     // имя символа
 
zvezdocheet:
Явно укажите символ.

простите конечно))) я больше на mql4, iOpen на мт5 корректно работает?)

 
Если вам нужно не только открытие бара, то лучше используйте CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Александр Алексеевич:

простите конечно))) я больше на mql4, iOpen на мт5 корректно работает?)

Все что есть на MQL4 отлично работает на MQL5. Если оно там конечно есть.

 
Александр Алексеевич:

простите конечно))) я больше на mql4, iOpen на мт5 корректно работает?)

да

покажите, как Вы её готовите

 
Александр Алексеевич:
Добрый день). Подскажите как получить цены открытия/закрытия хай/лоу свечей другого символа? отличного от того на котором стоит советник?

вот что то нахимичил - кинул скрипт на евро\бакс и получил хай/лоу от фунта\бакс

//+------------------------------------------------------------------+
//|                                           OBJPROP_TIMEFRAMES.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
enum ENUM_SYMB
  {
   EURUSD   =  1,        // EURUSD
   GBPUSD   =  2,        // GBPUSD
   USDCHF   =  3,        // USDCHF
   USDJPY   =  4         // USDJPY
  };
//+------------------------------------------------------------------+
input ENUM_SYMB Inpsymbol = EURUSD; // symbol
input ENUM_TIMEFRAMES tf  = PERIOD_D1;
input string highlevel    = "PreviousHigh";
input string lowlevel     = "PreviousLow";
//---
string pairs[]= {"EURUSD","GBPUSD","USDCHF","USDJPY"};
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   double prevHigh;           // High предыдущего
   double prevLow;            // Low предыдущего
   double highs[],lows[];     // массивы для получения High и Low
//--- сбросим значение последней ошибки
   ResetLastError();
//--- получим 2 последних значения High на таймфрейме
   for(int j=0; j<Inpsymbol; j++)
     {
      int highsgot=CopyHigh(pairs[j],tf,0,2,highs);
      if(highsgot>0) // если копирование прошло успешно
        {
         Print("Цены High за последние 2 дня получены успешно");
         prevHigh=highs[0]; // High предыдущего
         Print("prevHigh = ",prevHigh);
         if(ObjectFind(0,highlevel)<0) // объект с именем highlevel не найден
            ObjectCreate(0,highlevel,OBJ_HLINE,0,0,0); // создадим объект гор. линия
         //--- зададим ценовой уровень для линии highlevel
         ObjectSetDouble(0,highlevel,OBJPROP_PRICE,0,prevHigh);
         //--- установим видимость
         ObjectSetInteger(0,highlevel,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
        }
      else
         Print("Не удалось получить цены High за последние 2 дня, Error = ",GetLastError());
      //--- сбросим значение последней ошибки
      ResetLastError();
      //--- получим 2 последних значения Low на таймфрейме
      int lowsgot=CopyLow(pairs[j],tf,0,2,lows);
      if(lowsgot>0) // если копирование прошло успешно
        {
         Print("Цены Low за последние 2 дня получены успешно");
         prevLow=lows[0]; // Low предыдущего
         Print("prevLow = ",prevLow);
         if(ObjectFind(0,lowlevel)<0) // объект с именем lowlevel не найден
            ObjectCreate(0,lowlevel,OBJ_HLINE,0,0,0); // создадим объект гор. линия
         //--- зададим ценовой уровень для линии lowlevel
         ObjectSetDouble(0,lowlevel,OBJPROP_PRICE,0,prevLow);
         //--- установим видимость
         ObjectSetInteger(0,lowlevel,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
        }
      else
         Print("Не удалось получить цены Low за последние 2 дня, Error = ",GetLastError());
      ChartRedraw(0); // перерисуем график принудительно
     }
  }
//+------------------------------------------------------------------+

EURUSDH1

 
SanAlex:

вот что то нахимичил - кинул скрипт на евро\бакс и получил хай/лоу от фунта\бакс

Вот достойный ответ человека, плохо знающего русский язык. Автор вопроса просил ПОДСКАЗАТЬ, а вы пишете скрипт.

Писать программы - это дело фриланса, который Вы таким образом обкрадываете.

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

 
zvezdocheet:

Вот достойный ответ человека, плохо знающего русский язык. Автор вопроса просил ПОДСКАЗАТЬ, а вы пишете скрипт.

Писать программы - это дело фриланса, который Вы таким образом обкрадываете.

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

считай звёзды - грамотный ты наш.

 
zvezdocheet:

Вот достойный ответ человека, плохо знающего русский язык. Автор вопроса просил ПОДСКАЗАТЬ, а вы пишете скрипт.

Писать программы - это дело фриланса, который Вы таким образом обкрадываете.

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

да ладно ;)

SanAlex:

вот что то нахимичил - кинул скрипт на евро\бакс и получил хай/лоу от фунта\бакс

можно гораздо проще

MQL-5 стал более похож на MQL-4

вот тут, и код и описание

https://www.mql5.com/ru/docs/series/iopen

одной строкой кода, то есть очень просто:

double   open  = iOpen(Symbol(),Period(),shift);
 

Еще вопрос) 

 int OnInit()
  {  
     Soft=new CArrayDouble();
   if(CheckPointer(Soft)==POINTER_INVALID)
      return INIT_FAILED; 
}
double func()
{
Soft.Resize(3);
int size=ArraySize(Soft);}

в чем ошибка? ругается на 'Soft' - parameter conversion not allowed