Мультитаймфреймовые индикаторы - страница 108
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
mtf склон
смотри здесь alpha24seven
https://www.mql5.com/en/forum/173574
Спасибо Lodol2
Извините, что я их пропустил. Спасибо, что обратили на них мое внимание.
У меня были некоторые проблемы с компиляцией. Я никогда не видел этой ошибки раньше. Есть идеи?
См. график
Спасибо.
я согласен со всем, что вы сказали, но мне кажется, что я недостаточно ясно выразился.
формула кериса не выглядит так в реальном времени (без обновления графиков!), она больше похожа на эту желтую линию; если обновить графики, то да, все выглядит хорошо - но тогда почему бы нам просто не использовать второй график с более высоким таймфреймом... и подтвердить, что индикатор движется только на более высоком таймфрейме?
С того момента, как вы построили индикатор mtf на более низком таймфрейме, у вас есть другой способ усреднения данных на этом таймфрейме (а не на более высоком). Это никогда не будет выглядеть как оригинал - но это можно приблизить. вопрос в том, как найти лучшую формулу для наиболее близкого приближения? и я думаю, это ответ на ваш вопрос... верно?
Красная линия - это приближение к МА, которую вы предлагаете.
Пурпурная линия - это способ Кериса для MTF MA.
Золотая линия - реальные значения MA более высокого таймфрейма на более низком таймфрейме.
Как вы можете видеть, едва ли найдется хоть одно правильное значение аппроксимированной за период времени, в то время как формула Кериса дает по крайней мере одно правильное значение за период. В любом случае, формула для аппроксимации в Metatrader будет выглядеть следующим образом:
MAperiod=MAperiod*TimeFrame/Period()
Если вы попытаетесь применить это приближение к производным индикаторам скользящей средней (например, MACD), вы получите большие, и я имею в виду большие различия (я видел разницу в 7-8% для 4H MACD на 1H таймфрейме).
Встречный вопрос: как вы думаете, сколько людей пробовали различные подходы к индикаторам на нескольких таймфреймах?Ошибка в коде
Я разобрался. Этот лишний код был оставлен в файле - в конце. Просто удалите его, скомпилируйте и вуаля.
Отличный индикатор BTW.
---
/*
void drawLine(double lvl,string name, color Col )
{
ObjectDelete(name);
ObjectCreate(name, OBJ_HLINE, WindowFind(name), Time[0], lvl,Time[0], lvl);
ObjectSet(name, OBJPROP_STYLE, STYLE_DOT);
ObjectSet(name, OBJPROP_COLOR, Col);
ObjectSet(name,OBJPROP_WIDTH,1);
}
---
...
Желтая линия - это "реальная MTF" скользящая средняя.
Нет необходимости "обновлять" любой из индикаторов на картинке.
Что касается остального, пожалуйста, прочитайте этот пост еще раз.
с уважением
mladen
Я согласен со всем, что вы сказали, но мне кажется, что я недостаточно ясно выразился.
формула keris не выглядит так в реальном времени (без обновления графиков!), она больше похожа на эту желтую линию; если обновить графики, то да, все выглядит нормально - но тогда почему бы нам просто не использовать второй график с более высоким таймфреймом... и подтвердить, что индикатор движется только на более высоком таймфрейме?
с того момента, как вы построили индикатор mtf на более низком таймфрейме, у вас есть другой способ усреднения некоторых данных на этом таймфрейме (а не на более высоком). он никогда не будет выглядеть как оригинал - но его можно приблизить. вопрос в том, как найти лучшую формулу для наиболее близкого приближения? и я думаю, это ответ на ваш вопрос... верно?Нужен Mtf для этой инди
Привет всем,
Я давно хотел иметь возможность строить на своем графике индикаторы с разных таймфреймов
//+------------------------------------------------------------------+
//| Fisher_m11.mq4 || Fisher_m11.mq4.
//| Copyright ฉ forexjr
//| Index of /cam06/fisher | //| Copyright ฉ forexjr.
//+------------------------------------------------------------------+
#property copyright "Copyright ฉ 23.07.2006 MartinG "
#property link "http://home.arcor.de/cam06/fisher"
#property indicator_separate_window
//#property indicator_minimum -1
//#property indicator_maximum 1
#property indicator_buffers 3
#property indicator_color2 RoyalBlue
#property indicator_color3 Red
#property indicator_width2 0.5
#property indicator_width3 0.5
int LeftNum1=56;
int LeftNum2=56;
extern int RangePeriods=35;
extern double PriceSmoothing=0.3; // =0.67 bei Fisher_m10
extern double IndexSmoothing=0.3; // =0.50 bei Fisher_m10
string ThisName="Fisher_kuskus";
int DrawStart;
//---- буферы
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Пользовательская функция инициализации индикатора |
//+------------------------------------------------------------------+
int init()
{
//---- индикаторы
IndicatorBuffers(4);
SetIndexLabel(0, "Star");
SetIndexStyle(0,DRAW_NONE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(2,DRAW_HISTOGRAM);
SetIndexBuffer(2,ExtMapBuffer3);
SetIndexStyle(3,DRAW_NONE);
SetIndexBuffer(3,ExtMapBuffer4);
string Text=ThisName;
Text=Text+" (rPeriods "+RangePeriods;
Text=Text+"", pSmooth "+DoubleToStr(PriceSmoothing,2);
Text=Text+"", iSmooth "+DoubleToStr(IndexSmoothing,2);
Text=Text+"") ";
IndicatorShortName(Text);
SetIndexLabel(1,NULL);
SetIndexLabel(2,NULL);
DrawStart=2*RangePeriods+4; // DrawStart=Номер бара, рассчитанный слева направо
SetIndexDrawBegin(1,DrawStart);
SetIndexDrawBegin(2,DrawStart);
if (PriceSmoothing>=1.0)
{
PriceSmoothing=0.9999;
Alert("Fish61: Коэффициент PriceSmothing должен быть меньше 1!");
}
if (PriceSmoothing<0)
{
PriceSmoothing=0;
Alert("Fish61: Фактор PriceSmothing не должен быть отрицательным!");
}
if (IndexSmoothing>=1.0)
{
IndexSmoothing=0.9999;
Alert("Fish61: Коэффициент PriceSmothing должен быть меньше 1!");
}
if (IndexSmoothing<0)
{
IndexSmoothing=0;
Alert("Fish61: PriceSmothing factor mustn''t be negative!");
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Пользовательская функция деинициализации индикатора |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Пользовательская функция итерации индикатора |
//+------------------------------------------------------------------+
int start()
{
if (Bars<DrawStart)
{
Alert("Fish84: Недостаточно баров загружено для расчета FisherIndicator с RangePeriods=",RangePeriods);
return(-1);
}
//----
int counted_bars=IndicatorCounted();
if (counted_bars<0) return(-1);
if (counted_bars>0) counted_bars--;
//----
int Position=Bars-counted_bars; // Position = BarPosition, рассчитанная справа налево
int LeftNum1=Bars-Position; // когда загружается больше баров, позиция бара меняется, но не его LeftNum
if (LeftNum1<RangePeriods+1)Position=Bars-RangePeriods-1;
while(Position>=0)
{
CalculateCurrentBar(Position);
Position-;
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Функция расчета одного бара |
//+------------------------------------------------------------------+
int CalculateCurrentBar(int pos)
{
double LowestLow, HighestHigh, GreatestRange, MidPrice;
double PriceLocation, SmoothedLocation, FishIndex, SmoothedFish;
//----
LowestLow = Low[Lowest(NULL,0,MODE_LOW,RangePeriods,pos)];
HighestHigh = High;
if (HighestHigh-LowestLow<0.1*Point)HighestHigh=LowestLow+0.1*Point;
GreatestRange=HighestHigh-LowestLow;
MidPrice = (High[pos]+Low[pos])/2;
// Расположение цены в текущем диапазоне
if (GreatestRange!=0)
{
PriceLocation=(MidPrice-LowestLow)/GreatestRange;
PriceLocation= 2.0*PriceLocation - 1.0; // -> -1 < PriceLocation < +1
}
// Сглаживание PriceLocation
ExtMapBuffer4[pos]=PriceSmoothing*ExtMapBuffer4[pos+1]+(1.0-PriceSmoothing)*PriceLocation;
SmoothedLocation=ExtMapBuffer4[pos];
if (SmoothedLocation> 0.99) SmoothedLocation= 0.99; // verhindert, dass MathLog unendlich wird
if (SmoothedLocation<-0.99) SmoothedLocation=-0.99; // verhindert, dass MathLog minuns unendlich wird
// FisherIndex
if(1-SmoothedLocation!=0) FishIndex=MathLog((1+SmoothedLocation)/(1-SmoothedLocation));
else Alert("Fisher129: Unerlaubter Zustand bei Bar Nummer ",Bars-pos);
// Сглаживание индекса FisherIndex
ExtMapBuffer1[pos]=IndexSmoothing*ExtMapBuffer1[pos+1]+(1.0-IndexSmoothing)*FishIndex;
если (Bars-pos<DrawStart)ExtMapBuffer1[pos]=0;
SmoothedFish=ExtMapBuffer1[pos];
if (SmoothedFish>0) // восходящий тренд
{
ExtMapBuffer2[pos]=SmoothedFish;
ExtMapBuffer3[pos]=0;
}
else // тренд вниз
{
ExtMapBuffer2[pos]=0;
ExtMapBuffer3[pos]=SmoothedFish;
}
//----
return(0);
}
//+------------------------------------------------------------------+
спасибо
Народ, давайте посерьезнее
Я серьезно, Младен...
Я новичок и не программист, может быть, способ Скрата не идеален, но, возможно, я смогу его использовать. Я попробую. Если это полезно, я буду использовать это. Если нет, я буду искать другой отличный способ или другой индикатор.
Я уже спрашивал Codersguru о подобном.
Я спросил его, что если я использую 1 EMA на 30M TF, то на 1M TF это должно быть 30 EMA.
Он ответил, что это не так. Но я не был удовлетворен, возможно, есть другой способ, поэтому я нашел его здесь. Но если это не полезно, то для меня это нормально... . По крайней мере, я знаю результат.
BTW, спасибо за последний RSIOMA mladen, он мне очень нравится, и спасибо fxbs и Kalenzo тоже, за этот замечательный индикатор.
С уважением,
IIN
Проблема заключается в следующем:
Эта идея с МА - вероятно, самая старая идея в техническом анализе.
Я согласен, что такие места, как TSD - это место для обмена идеями и знаниями.
Но, пожалуйста, никто не должен пытаться делать это таким образом:
Да ладно, какого черта мы вообще пытаемся здесь сделать?
Надеюсь, теперь я понятно объяснил.
с уважением
mladen
Я серьезно, mladen...
Я новичок и не программист, может быть способ Скрата не идеален, но может быть я смогу его использовать. Я попробую. Если это полезно, я буду использовать его. Если нет, я буду искать другой отличный способ или другой индикатор.
Я уже спрашивал Codersguru о подобном.
Я спросил его, что если я использую 1 EMA на 30M TF, то на 1M TF это должно быть 30 EMA.
Он ответил, что это не так. Но я не был удовлетворен, возможно, есть другой способ, поэтому я нашел его здесь. Но если это не полезно, то для меня это нормально... . По крайней мере, я знаю результат.
BTW, спасибо за последний RSIOMA mladen, он мне очень нравится, и спасибо fxbs и Kalenzo тоже, за этот замечательный индикатор.
С уважением,
IINЛадно, я официально тупой и только что оскорбил всех в этой теме. на этот раз я правильно понял?
Мои извинения.
Проблема в следующем:
Эта идея с MA's, вероятно, самая старая идея в техническом анализе.
Я согласен, что такие места, как TSD - это место для обмена идеями и знаниями.
Но, пожалуйста, никто не должен пытаться делать это таким образом:
Да ладно, какого черта мы вообще пытаемся здесь делать?
Надеюсь, что теперь я ясно выразился
с уважением
mladenКто-нибудь знает, где находятся эти MTF инди?
Я везде искал MTF-версии. Кто-нибудь знает или видел их?
Спасибо.