#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 White
#property indicator_color2 White
//---- input parameters
extern int CountBars=3000;
//---- buffers
double val1[];
double val2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- indicator line
IndicatorBuffers(2);
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,217);
SetIndexBuffer(0,val1);
SetIndexEmptyValue(0,0.0);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,218);
SetIndexBuffer(1,val2);
SetIndexEmptyValue(1,0.0);
//----
return(0);
}
//+------------------------------------------------------------------+
//| AltrTrend_Signal_v2_2 |
//+------------------------------------------------------------------+
int start()
{ double F_u,F_d;
double xU,yU,dU,xD,yD,dD;
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(int i=3; i<limit; i++)
{
xU=High[i]-Low[i+2];
yU=High[i]-Low[i-2];
dU=yU/xU;
xD=High[i+2]-Low[i];
yD=High[i-2]-Low[i];
dD=yD/xD;
F_u=iFractals(0,0,MODE_UPPER,i);
F_d=iFractals(0,0,MODE_LOWER,i);
if (F_u!=0&&0.382<dU<0.618)
{
val1[i]=High[i]+15*Point;
}
if (F_d!=0&&0.382<dD<0.618)
{
val2[i]=Low[i]-15*Point;
}
}
return(0);
}
так будет наглядней
так будет наглядней
if (F_u!=0&&0.382<dU<0.618)?????????? { val1[i]=High[i]+15*Point; } if (F_d!=0&&0.382<dD<0.618) ???????? { val2[i]=Low[i]-15*Point; }
d=[ High{3}-Low{1} ] / [ High{3}-Low{5} ]
if (0.382<d<0.618) то фрактал Up истиннен и ставим значение.
dU - расчет для фрактала вверх, dD - рассчет для фрактала вниз.
d=[ High{3}-Low{1} ] / [ High{3}-Low{5} ]
if (0.382<d<0.618) то фрактал Up истиннен и ставим значение.
dU - расчет для фрактала вверх, dD - рассчет для фрактала вниз.
Вы результат сравнения d c величиной 0.382 сравниваете с величиной 0.618 и чтобы это значило ?
Учебник почитать не хотите ? Или хотя бы что-нибудь по программированию ? Примеры посмотреть - как правильно писать логические условия ?
Сравнивал и так и так.
Учебник "или что-нибудь по програмированию" периодически читаю. и примеров много посмотрел.
#property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 White #property indicator_color2 White //---- input parameters extern int CountBars=3000; //---- buffers double val1[]; double val2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; //---- indicator line IndicatorBuffers(2); SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,217); SetIndexBuffer(0,val1); SetIndexEmptyValue(0,0.0); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,218); SetIndexBuffer(1,val2); SetIndexEmptyValue(1,0.0); //---- return(0); } //+------------------------------------------------------------------+ //| AltrTrend_Signal_v2_2 | //+------------------------------------------------------------------+ int start() { double F_u,F_d; double xU,yU,dU,xD,yD,dD; int limit; int counted_bars=IndicatorCounted(); //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(int i=3; i<limit; i++) { xU=High[i]-Low[i+2]; yU=High[i]-Low[i-2]; dU=yU/xU; xD=High[i+2]-Low[i]; yD=High[i-2]-Low[i]; dD=yD/xD; F_u=iFractals(0,0,MODE_UPPER,i); F_d=iFractals(0,0,MODE_LOWER,i); if (F_u!=0&&0.382<dU&&dU<0.618) { val1[i]=High[i]+15*Point; } if (F_d!=0&&0.382<dD&&dD<0.618) { val2[i]=Low[i]-15*Point; } } return(0); }Вот первый вариант. Два ненормализованных числа с плавающей точкой нельзя связывать операциями == или !=, но можно операциями <,>. Результат такой же.
if (F_u!=0&&0.382<dU&&dD<0.618) { val1[i]=High[i]+15*Point; } if (F_d!=0&&0.382<dD&&dU<0.618) { val2[i]=Low[i]-15*Point; }
Здравствуйте. Помогите пожалуйста с этим индикатором. Уже пять дней бьюсь. Не
могу понять почему не работает.
Я его делал для определения истинного фрактала. Модель истинного фрактала
считается, когда наименьшая цена опустилась от наивысшего значения два дня
тому назад на величину составляющую 0,382 или 0,618, расчитанный между пиком и
наименьшей ценой четыре дня назад. Это фрактал вверх. Для нижнего - наоборот.
У каждого фрактала проверяю значения его "крвыльев":
High{3}
Low{5} Low{1}
d=[ High{3}-Low{1} ] / [ High{3}-Low{5} ]
if (0.382<d<0.618) то фрактал Up истиннен и ставим значение.
Рассчет вроде правилен, но не работает. Может я не правильно обозначил
переменные?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте. Помогите пожалуйста с этим индикатором. Уже пять дней бьюсь. Не
могу понять почему не работает.
Я его делал для определения истинного фрактала. Модель истинного фрактала
считается, когда наименьшая цена опустилась от наивысшего значения два дня
тому назад на величину составляющую 0,382 или 0,618, расчитанный между пиком и
наименьшей ценой четыре дня назад. Это фрактал вверх. Для нижнего - наоборот.
У каждого фрактала проверяю значения его "крвыльев":
High{3}
Low{5} Low{1}
d=[ High{3}-Low{1} ] / [ High{3}-Low{5} ]
if (0.382<d<0.618) то фрактал Up истиннен и ставим значение.
Рассчет вроде правилен, но не работает. Может я не правильно обозначил
переменные?