Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не вызывать из другого индикатора :)
Или показать как вы это делаете.
Вызываю вот из этой функции
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);
}
А её в свою очередь из этой
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()
Вызываю вот из этой функции
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 после имени.
И зачем нормализацию делаете? Тут её не нужно.
Вызываю вот из этой функции
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 Нижняя линия
Ну... вы не правильно его вызываете - у него всего два параметра в настройках, а вы их вписали 3 после имени.
И зачем нормализацию делаете? Тут её не нужно.
mode_fractal это верхний или нижний фрактал, как без него.
нулик вписан после периода
mode_fractal это верхний или нижний фрактал, как без него.
нулик вписан после периода
Я написал выше, что не совпадают значения для стандартного индикатора и вашего кастомного.
Почему в приложении Meta Trader 4 нет Фибоначчи но в описании он присутствует?
Как так нет? Есть: Пункт меню "Вставка" --> "Фибоначчи"
MetaTrader4 из PlayMarket