- Что наступило раньше HIGH или LOW
- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
- iHigh||iHighest - показывает не правильный уровень!?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
fxsaber, 2016.10.19 07:59
// А так же задает привычные MT4-функции: iOpen, iHigh, iLow, iClose, iTime, iVolume.
#define DEFINE_TIMESERIE(NAME,FUNC,T) \
class CLASS##NAME \
{ \
public: \
static T Get( const string Symb, const int TimeFrame, const int iShift ) \
{ \
T tValue[]; \
\
return((Copy##FUNC((Symb == NULL) ? _Symbol : Symb, _Period, iShift, 1, tValue) > 0) ? tValue[0] : -1); \
} \
\
T operator []( const int iPos ) const \
{ \
return(CLASS##NAME::Get(_Symbol, _Period, iPos)); \
} \
}; \
\
CLASS##NAME NAME; \
\
T i##NAME( const string Symb, const int TimeFrame, const int iShift ) \
{ \
return(CLASS##NAME::Get(Symb, TimeFrame, iShift)); \
}
DEFINE_TIMESERIE(Volume, TickVolume, long)
DEFINE_TIMESERIE(Time, Time, datetime)
DEFINE_TIMESERIE(Open, Open, double)
DEFINE_TIMESERIE(High, High, double)
DEFINE_TIMESERIE(Low, Low, double)
DEFINE_TIMESERIE(Close, Close, double)
Здравствуйте. Нужна функция аналог iHigh и iLow из MQL4. То есть, нужен максимум или минимум за нужное количество свечей.
double hist_low[];
if(CopyLow(_Symbol,PERIOD_CURRENT,0,bars,hist_low)!=-1)
{
min=NormalizeDouble(hist_low[ArrayMinimum(hist_low)],_Digits);
}
if(CopyHigh(_Symbol,PERIOD_CURRENT,0,bars,hist_high)!=-1)
{
max=NormalizeDouble(hist_high[ArrayMaximum(hist_high)],_Digits);
}
Здравствуйте. Нужна функция аналог iHigh и iLow из MQL4. То есть, нужен максимум или минимум за нужное количество свечей.
Функции и Ваш вопрос не согласуются между собой, но, думаю нужно это:
//| Get the High for specified bar index |
//+------------------------------------------------------------------+
double iHigh(const int index,string symbol=NULL,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT)
{
if(symbol==NULL)
symbol=Symbol();
if(timeframe==0)
timeframe=Period();
double High[1];
double high=0;
int copied=CopyHigh(symbol,timeframe,index,1,High);
if(copied>0) high=High[0];
return(high);
}
//+------------------------------------------------------------------+
//| Get Low for specified bar index |
//+------------------------------------------------------------------+
double iLow(const int index,string symbol=NULL,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT)
{
if(symbol==NULL)
symbol=Symbol();
if(timeframe==0)
timeframe=Period();
double Low[1];
double low=0;
int copied=CopyLow(symbol,timeframe,index,1,Low);
if(copied>0) low=Low[0];
return(low);
}
Получение цен открытия (iHigh) и закрытия (iLow) указанного бара на указанном символе и на указанном таймфрейме.
Функции и Ваш вопрос не согласуются между собой, но, думаю нужно это:
//| Get the High for specified bar index |
//+------------------------------------------------------------------+
double iHigh(const int index,string symbol=NULL,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT)
{
if(symbol==NULL)
symbol=Symbol();
if(timeframe==0)
timeframe=Period();
double High[1];
double high=0;
int copied=CopyHigh(symbol,timeframe,index,1,High);
if(copied>0) high=High[0];
return(high);
}
//+------------------------------------------------------------------+
//| Get Low for specified bar index |
//+------------------------------------------------------------------+
double iLow(const int index,string symbol=NULL,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT)
{
if(symbol==NULL)
symbol=Symbol();
if(timeframe==0)
timeframe=Period();
double Low[1];
double low=0;
int copied=CopyLow(symbol,timeframe,index,1,Low);
if(copied>0) low=Low[0];
return(low);
}
Получение цен открытия (iHigh) и закрытия (iLow) указанного бара на указанном символе и на указанном таймфрейме.
Мне, как раз, нужен максимум или минимум за n количество баров. Не Хай или Лой на n баре. В МТ4 функции iLow() и iHigh() именно это возвращали.
Да ну? А если проверить :) ?
string symbol, // символ
int timeframe, // период
int shift // сдвиг
);
Здесь параметр shift как раз отвечает за то, С КАКОГО БАРА получать значение. Ни о каком интервале не идёт речь.
Мне, как раз, нужен максимум или минимум за n количество баров. Не Хай или Лой на n баре. В МТ4 функции iLow() и iHigh() именно это возвращали.
Может вы про эти функции имели ввиду
int iHighest( |
int iLowest( |
Может вы про эти функции имели ввиду
int iHighest( |
int iLowest( |
Да ну? А если проверить :) ?
string symbol, // символ
int timeframe, // период
int shift // сдвиг
);
Здесь параметр shift как раз отвечает за то, С КАКОГО БАРА получать значение. Ни о каком интервале не идёт речь.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования