Помощь в кодировании - страница 111

 

Спасибо вам большое! Вы такие хорошие!

 

Здравствуйте,

Кто-нибудь знает индикатор, который строил бы на графике только точку свинга, как описано ниже (как в Pipware Dashboard):

Fractal Breakout Strategy

Как было сказано ранее, ценовое действие движется волнами. Направление тренда (вверх или вниз) определяется последовательными максимумами и минимумами.

Восходящий тренд - это когда волны достигают более высоких максимумов и более высоких минимумов.

Нисходящий тренд - это когда волны опускаются ниже минимумов и ниже максимумов.

Поскольку фракталы - это максимумы и минимумы, их можно использовать для определения направления тренда.

Рассмотрим график GU H4 (справа). До точки А тренд восходящий, т.е. второй фрактал минимума выше первого... второй фрактал максимума выше первого.

В точке А сформировался новый фрактал минимума, который выше двух предыдущих фракталов минимума (продолжение восходящего тренда). Свеча сразу после точки А сформировала новый фрактал максимума. Этот фрактал ниже, чем предыдущий фрактал максимума, что указывает на возможное изменение направления тренда. Свеча под точкой B "пробивает" фрактальный уровень точки A (зеленая линия). Рисуется красная стрелка, указывающая на то, что направление тренда изменилось на DOWN.

Стрелки могут быть отображены с помощью параметра ArrowsOn=true. Примечание: стрелки рисуются только тогда, когда фрактальный разрыв меняет направление тренда. Например, после точки B нижние фракталы продолжают ломаться (еще 2 раза).

После точки B тренд считается НИЗКИМ, пока не будет пробит высокий фрактал. Непосредственно перед точкой C формируется более высокий нижний фрактал. Направление тренда по-прежнему считается ВНИЗ... высокий фрактал еще не пробит.

В точке E пробивается высокий фрактал точки C. Несмотря на то, что это небольшой пробой, в точке D рисуется зеленая стрелка, указывающая на изменение направления тренда. Тренд теперь считается восходящим до следующего пробоя низкого фрактала.

Большое спасибо за помощь.

Всего наилучшего,

Gringoh

Файлы:
 

Спасибо Младен, это идеально!!! Если я хочу добавить еще одну строку к индикатору, как мне изменить код? Спасибо заранее....

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_color2 Blue

double UpperBuf[];

double UpperBuf1[];

double UpperBufb[];

double UpperBuf1b[];

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

void init()

{

IndicatorBuffers(4);

SetIndexBuffer(0, UpperBuf1);

SetIndexBuffer(1, UpperBuf1b);

SetIndexBuffer(2, UpperBuf);

SetIndexBuffer(3, UpperBufb);

}

void deinit() {}

void start()

{

int counted = IndicatorCounted();

if(counted < 0) return (-1);

if(counted > 0) counted--;

int limit = Bars - counted;

for(int i = 0; i < limit; i++)

if (Close!=0)

UpperBuf= ((High/Close)-34)*Volume;

else UpperBuf= 0;

for( i = 0; i < limit; i++) UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

for( i = 0; i < limit; i++)

if (Close!=0)

UpperBufb= ((High/Close)-34)*Volume;

else UpperBufb= 0;

for( i = 0; i < limit; i++) UpperBuf1b= iMAOnArray(UpperBufb,0,33,0,MODE_EMA,i);

}

 
k3rn3l:
Спасибо Младен, это идеально!!! Если я хочу добавить еще одну линию к индикатору, как мне изменить код? Спасибо заранее....

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_color2 Blue

double UpperBuf[];

double UpperBuf1[];

double UpperBufb[];

double UpperBuf1b[];

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

void init()

{

IndicatorBuffers(4);

SetIndexBuffer(0, UpperBuf1);

SetIndexBuffer(1, UpperBuf1b);

SetIndexBuffer(2, UpperBuf);

SetIndexBuffer(3, UpperBufb);

}

void deinit() {}

void start()

{

int counted = IndicatorCounted();

if(counted < 0) return (-1);

if(counted > 0) counted--;

int limit = Bars - counted;

for(int i = 0; i < limit; i++)

if (Close!=0)

UpperBuf= ((High/Close)-34)*Volume;

else UpperBuf= 0;

for( i = 0; i < limit; i++) UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

for( i = 0; i < limit; i++)

if (Close!=0)

UpperBufb= ((High/Close)-34)*Volume;

else UpperBufb= 0;

for( i = 0; i < limit; i++) UpperBuf1b= iMAOnArray(UpperBufb,0,33,0,MODE_EMA,i);

}

k3rn3l

Вы уже сделали это (на индикаторе 2 линии). Если вы хотите еще одну (чтобы было 3), просто сделайте то же самое, что и для второй линии.

 

уважаемые разработчики,

я нашел этот индикатор METASTOCK очень хорошим, не могли бы вы сделать его для mt4?

x:=Input("Consecutive Lower Closes - Entry",

0,21,5);

y:=Input("Последовательные более высокие закрытия - выход",

0,21,5);

delay:=Input("Entry and Exit delay",0,5,0);

plot:=Input("сигналы: [1]Чистые, [2]Все",

1,2,2);

In:=Sum(C<Ref(C,-1),x)=x;

Out:=Sum(C>Ref(C,-1),y)=y;

Init:=Cum(In+Out>-1)=1;

InInit:=Cum(In)=1;

flag:=BarsSince(Init OR In)

<BarsSince(Init OR Out)+InInInit;

сигналы:=(InInit AND Alert(InInit=0,2)

OR flag AND Alert(flag=0,2))

-(flag=0 AND Alert(flag,2));

0;Ref(If(plot=1,signals,In-Out),-delay)

 
debashis:
уважаемые кодеры,

я нашел этот индикатор METASTOCK очень хорошим, не могли бы вы сделать его для mt4?

x:=Input("Consecutive Lower Closes - Entry",

0,21,5);

y:=Input("Последовательные более высокие закрытия - выход",

0,21,5);

delay:=Input("Entry and Exit delay",0,5,0);

plot:=Input("сигналы: [1]Чистые, [2]Все",

1,2,2);

In:=Sum(C<Ref(C,-1),x)=x;

Out:=Sum(C>Ref(C,-1),y)=y;

Init:=Cum(In+Out>-1)=1;

InInit:=Cum(In)=1;

flag:=BarsSince(Init OR In)

<BarsSince(Init OR Out)+InInInit;

сигналы:=(InInit AND Alert(InInit=0,2)

OR flag AND Alert(flag=0,2))

-(flag=0 AND Alert(flag,2));

0;Ref(If(plot=1,signals,In-Out),-delay)

debashis

Как называется этот индикатор?

 

гуру

она называется "базовая система паттернов". http://www.metastocktools.com/MetaStock/Pattern01.txt

 

Привет, malden, спасибо за помощь с ASCTrend. Я хотел бы узнать, не могли бы вы помочь мне сделать ea для этого индикатора. Есть еще один индикатор под названием MaonMa. (Я прикреплю их) Я думаю, что когда ASCTrend стреляет вверх И бар находится выше желтой линии (60 MA), ставьте длинную сделку, стоп-лосс будет предыдущим минимумом, аналогично, когда ASCTrend стреляет вниз И бар находится под желтой линией (60 MA), ставьте короткую сделку, стоп-лосс будет предыдущим максимумом. Спасибо.

Файлы:
 

Здравствуйте, Младен,

Мне снова нужна ваша помощь. я установил следующий код для стрелочного индикатора, но он замораживает ПК. если это предотвратит отставание, можете ли вы написать код снова, используя оригинальные коды rsi, cci и cmo в индикаторе без функции icustom.

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Crimson

#property indicator_color2 RoyalBlue

//---- входные параметры

extern int barsToProcess=100;

//---- буферы

double ExtMapBuffer1[];

double ExtMapBuffer2[];

//+------------------------------------------------------------------+

//| Пользовательская функция инициализации индикатора |

//+------------------------------------------------------------------+

int init()

{

//---- индикаторы

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,233);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexEmptyValue(0,0.0);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1,234);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexEmptyValue(1,0.0);

//----

return(0);

}

//+------------------------------------------------------------------+

//| Пользовательская функция деинициализации индикатора |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| Пользовательская функция итерации индикатора |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted(),

предел;

if(counted_bars>0)

counted_bars--;

limit=Bars-counted_bars;

if(limit>barsToProcess)

limit=barsToProcess;

for(int i=0;i<limit;i++)

{

double rsi=iCustom(NULL,0, "rsi",barsToProcess,0,i);

double cci=iCustom(NULL,0, "cci",barsToProcess,0,i);

double cmo=iCustom(NULL,0, "cmo",barsToProcess,0,i);

if(rsi>60.0 && cci>150.0&&cmo>30.0)

ExtMapBuffer1=High+5*Point;

else

ExtMapBuffer1=0.0;

if(rsi<10.0 && cci<-150.0&&cmo<-30.0)

ExtMapBuffer2=Low-5*Point;

else

ExtMapBuffer2=0.0;

}

return(0);

}

 
anonimm:
Здравствуйте, Младен,

мне снова нужна ваша помощь. я установил следующий код для стрелочного индикатора, но он замораживает компьютер. если это предотвратит отставание, можете ли вы написать код снова, используя оригинальные коды rsi, cci и cmo в индикаторе без функции icustom.

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Crimson

#property indicator_color2 RoyalBlue

//---- входные параметры

extern int barsToProcess=100;

//---- буферы

double ExtMapBuffer1[];

double ExtMapBuffer2[];

//+------------------------------------------------------------------+

//| Пользовательская функция инициализации индикатора |

//+------------------------------------------------------------------+

int init()

{

//---- индикаторы

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,233);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexEmptyValue(0,0.0);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1,234);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexEmptyValue(1,0.0);

//----

return(0);

}

//+------------------------------------------------------------------+

//| Пользовательская функция деинициализации индикатора |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| Пользовательская функция итерации индикатора |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted(),

предел;

if(counted_bars>0)

counted_bars--;

limit=Bars-counted_bars;

if(limit>barsToProcess)

limit=barsToProcess;

for(int i=0;i<limit;i++)

{

double rsi=iCustom(NULL,0, "rsi",barsToProcess,0,i);

double cci=iCustom(NULL,0, "cci",barsToProcess,0,i);

double cmo=iCustom(NULL,0, "cmo",barsToProcess,0,i);

if(rsi>60.0 && cci>150.0&&cmo>30.0)

ExtMapBuffer1=High+5*Point;

else

ExtMapBuffer1=0.0;

if(rsi<10.0 && cci<-150.0&&cmo<-30.0)

ExtMapBuffer2=Low-5*Point;

else

ExtMapBuffer2=0.0;

}

return(0);

}

Вместо использования iCustom() для rsi и cci используйте встроенные функции.

Параметры, необходимые для RSI :

iCCI([TD]string symbol, int timeframe, int period, int applied_price, int shift)
double iRSI([/TD]string symbol, int timeframe, int period, int applied_price, int shift)[/TD]

[/TR] [/TR]

[/TABLE]

Параметры, необходимые для CCI :

[TABLE="class:docvar"]

[TR]

[TD]double

А для CMO первый параметр - LastBarOnly, а второй - CMO_Range, поэтому вызов iCustom() должен быть примерно таким :

iCustom(NULL,0, "cmo",false,CMORange,0,i);

где CMORange будет некоторым параметром