Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
mila.com
167
mila.com  
Artyom Trishkin:

Не вызывать из другого индикатора :)

Или показать как вы это делаете.

Вызываю вот из этой функции


double GetPriceFractal(string symbol, ENUM_TIMEFRAMES timeframe, int mode_fractal, int count_find, int number_fractal, int &bar_fractal, int shift) {
   int n=0;
   for(int i=shift; i<count_find; i++) {
      //double price_fractal=iFractals(symbol,timeframe,mode_fractal,i);
      double price_fractal=NormalizeDouble(iCustom(symbol,timeframe,"X-bars",InpLeftSide,InpRightSide,mode_fractal,i),Digits);
      if(price_fractal>0) {
         n++;
         if(n==number_fractal) {
            bar_fractal=i;
            return(price_fractal);
            }
         }
      }
   return(EMPTY_VALUE);
}

А её в свою очередь из этой

bool CheckOnePrices(string symbol, ENUM_TIMEFRAMES timeframe, int mode_fractal, int count_find, int count_fractals, int bar_fractal, double match_price, int delta_points, int shift) {
   if(count_fractals<1) return(false);
     double pt=SymbolInfoDouble(symbol,SYMBOL_POINT);
   int    n=1, dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
   for(int i=n; i<=count_fractals; i++) {
      double price_fractal=GetPriceFractal(symbol,timeframe,mode_fractal,count_find,n,bar_fractal,shift);
      double result_compare=fabs(NormalizeDouble(price_fractal-match_price,dg));
      if(result_compare<delta_points*pt) {
         if(mode_fractal==0) BufferFractalUp[bar_fractal]=price_fractal;
         else BufferFractalDn[bar_fractal]=price_fractal;
        /// Print("Цена бара с фракталом ",n," совпала с проверяемой ценой, возвращаем true");
         return(true);
         }
      n++;
      }
   return(false);
}

Вот это в OnCalculate()

if(CheckOnePrices(Symbol(),PERIOD_CURRENT,0,rates_total,numFractals,bar,low[i],delta,i+1)) { BufferPointDn[i]=low[i]-distanc*Point;}
Artyom Trishkin
Модератор
43743
Artyom Trishkin  
mila.com:

Вызываю вот из этой функции


double GetPriceFractal(string symbol, ENUM_TIMEFRAMES timeframe, int mode_fractal, int count_find, int number_fractal, int &bar_fractal, int shift) {
   int n=0;
   for(int i=shift; i<count_find; i++) {
      //double price_fractal=iFractals(symbol,timeframe,mode_fractal,i);
      double price_fractal=NormalizeDouble(iCustom(symbol,timeframe,"X-bars",InpLeftSide,InpRightSide,mode_fractal,i),Digits);
      if(price_fractal>0) {
         n++;
         if(n==number_fractal) {
            bar_fractal=i;
            return(price_fractal);
            }
         }
      }
   return(EMPTY_VALUE);
}

Ну... вы не правильно его вызываете - у него всего два параметра в настройках, а вы их вписали 3 после имени.

И зачем нормализацию делаете? Тут её не нужно.

Artyom Trishkin
Модератор
43743
Artyom Trishkin  
mila.com:

Вызываю вот из этой функции


double GetPriceFractal(string symbol, ENUM_TIMEFRAMES timeframe, int mode_fractal, int count_find, int number_fractal, int &bar_fractal, int shift) {
   int n=0;
   for(int i=shift; i<count_find; i++) {
      //double price_fractal=iFractals(symbol,timeframe,mode_fractal,i);
      double price_fractal=NormalizeDouble(iCustom(symbol,timeframe,"X-bars",InpLeftSide,InpRightSide,mode_fractal,i),Digits);
      if(price_fractal>0) {
         n++;
         if(n==number_fractal) {
            bar_fractal=i;
            return(price_fractal);
            }
         }
      }
   return(EMPTY_VALUE);
}

Обратите внимание, что в mode_fractal вам нужно вписывать номер буфера этого кастомного индикатора - для верхних 0, для нижних 1, а то в стандартных фракталах значения идентификаторов для фракталов не совпадают со значениями буферов этого кастомного индикатора:

Стандартные фракталы:

Константа

Значение

Описание

MODE_UPPER

1

Верхняя линия

MODE_LOWER

2

Нижняя линия


Буферы кастомного индикатора:

 0 Верхняя линия
 1 Нижняя линия

mila.com
167
mila.com  
Artyom Trishkin:

Ну... вы не правильно его вызываете - у него всего два параметра в настройках, а вы их вписали 3 после имени.

И зачем нормализацию делаете? Тут её не нужно.

mode_fractal это верхний или нижний фрактал, как без него.

нулик вписан после периода

Artyom Trishkin
Модератор
43743
Artyom Trishkin  
mila.com:

mode_fractal это верхний или нижний фрактал, как без него.

нулик вписан после периода

Я написал выше, что не совпадают значения для стандартного индикатора и вашего кастомного.
Artyom Trishkin
Модератор
43743
Artyom Trishkin  
Artyom Trishkin:
Я написал выше, что не совпадают значения для стандартного индикатора и вашего кастомного.
Ошибся - совпадают. Нужно глубже искать...
SLANDOV
6
SLANDOV  
Почему в приложении Meta Trader 4 нет Фибоначчи но в описании он присутствует?
Artyom Trishkin
Модератор
43743
Artyom Trishkin  
SLANDOV:
Почему в приложении Meta Trader 4 нет Фибоначчи но в описании он присутствует?
Как так нет? Есть: Пункт меню "Вставка" --> "Фибоначчи"
SLANDOV
6
SLANDOV  
Artyom Trishkin:
Как так нет? Есть: Пункт меню "Вставка" --> "Фибоначчи"
MetaTrader4 из PlayMarket
Artyom Trishkin
Модератор
43743
Artyom Trishkin  
SLANDOV:
MetaTrader4 из PlayMarket
К сожалению, сейчас не могу поглядеть МТ4 ни на Андроид-устройстве, ни на iOS...
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий