Kodlama yardımı - sayfa 111

 

Çok teşekkürler! çok iyisin!

 

Merhaba,

Aşağıda tarif edildiği gibi grafikte yalnızca salınım noktasını çizecek bir gösterge bilen var mı (Pipware Dashboard'daki gibi):

Fraktal Koparma Stratejisi

Daha önce belirtildiği gibi, fiyat hareketi dalgalar halinde hareket eder. Trend yönü (yukarı veya aşağı), ardışık inişler ve çıkışlar tarafından belirlenir.

YUKARI TREND, bu dalgaların daha yüksek tepeler ve daha yüksek alçaklar yaptığı zamandır.

AŞAĞI TREND, bu dalgaların daha düşük dipler ve daha düşük zirveler yaptığı zamandır.

Fraktallar yüksek ve alçak olduğundan, trend yönünü belirlemek için kullanılabilirler.

GU H4 tablosunu düşünün (sağda). A noktasından önce eğilim yukarı doğrudur, yani ikinci düşük fraktal birinciden daha yüksektir .. ikinci yüksek fraktal birinciden daha yüksektir.

A noktasında yeni bir düşük fraktal oluştu ve önceki iki düşük fraktaldan daha yüksek (YUKARI eğilimini sürdürüyor). A noktasından hemen sonraki mum yeni bir yüksek fraktal oluşturdu. Bu fraktal, trend yönünde olası bir değişikliği gösteren önceki yüksek fraktaldan daha düşüktür. B noktasının altındaki mum, A noktasının (yeşil çizgi) fraktal seviyesini 'kırar'. Trend yönünün AŞAĞI olarak değiştiğini gösteren kırmızı bir ok çizilir.

Oklar, ArrowsOn=true ile görüntülenebilir. Not: Oklar yalnızca fraktal bir kırılma trend yönünü değiştirdiğinde çizilir. Örneğin, B noktasından sonra alt fraktallar kırılmaya devam eder (2 kez daha).

B noktasından sonra, yüksek bir fraktal kırılana kadar trend AŞAĞI olarak kabul edilir. C noktasından hemen önce, daha yüksek bir düşük fraktal oluşur. Trend yönü hala AŞAĞI olarak kabul edilir ... henüz hiçbir yüksek fraktal kırılmamıştır.

E noktasında, C noktasının yüksek fraktalı kırılır. Küçük bir kırılma olmasına rağmen, trend yönünde bir değişikliği gösteren D noktasında yeşil bir ok çizilir. Eğilim şimdi bir sonraki düşük fraktal kırılmaya kadar YUKARI olarak kabul ediliyor.

Yardımın için çok teşekkürler.

En iyi,

Gringo

 

Teşekkürler Mladen, bu mükemmel!!! Göstergeye bunun gibi bir satır daha eklemek istersem, kodu nasıl değiştiririm? şimdiden teşekkürler....

#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:
Teşekkürler Mladen, bu mükemmel!!! Göstergeye bunun gibi bir satır daha eklemek istersem, kodu nasıl değiştiririm? şimdiden teşekkürler....

#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

Bunu zaten yaptınız (göstergede 2 satır var). Bir tane daha demek istiyorsanız (3'e sahip olmak için ikinci satır için yaptığınızın aynısını yapın)

 

sevgili kodlayıcılar,

Bu METASTOCK göstergesini çok iyi buldum, lütfen mt4 için yapabilir misiniz?

x:=Input("Ardışık Alt Kapanışlar - Giriş",

0,21,5);

y:=Input("Ardışık Daha Yüksek Kapanışlar - Çıkış",

0,21,5);

gecikme:=Input("Giriş ve Çıkış gecikmesi",0,5,0);

arsa:=Input("sinyaller: [1]Temiz, [2]Tümü",

1,2,2);

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

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

Init:=Boş(Giriş+Çıkış>-1)=1;

InInit:=Boş(Giriş)=1;

flag:=BarsSince(Init OR In)

<BarsSince(Init OR Out)+InInit;

sinyaller:=(InInit AND Alert(InInit=0,2)

VEYA işaret VE Uyarı(işaret=0,2))

-(bayrak=0 VE Uyarı(bayrak,2));

0;Ref(If(plot=1,sinyaller,Giriş-Çıkış),-gecikme)

 
debashis:
sevgili kodlayıcılar,

Bu METASTOCK göstergesini çok iyi buldum, lütfen mt4 için yapabilir misiniz?

x:=Input("Ardışık Alt Kapanışlar - Giriş",

0,21,5);

y:=Input("Ardışık Daha Yüksek Kapanışlar - Çıkış",

0,21,5);

gecikme:=Input("Giriş ve Çıkış gecikmesi",0,5,0);

arsa:=Input("sinyaller: [1]Temiz, [2]Tümü",

1,2,2);

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

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

Init:=Boş(Giriş+Çıkış>-1)=1;

InInit:=Boş(Giriş)=1;

flag:=BarsSince(Init OR In)

<BarsSince(Init OR Out)+InInit;

sinyaller:=(InInit AND Alert(InInit=0,2)

VEYA işaret VE Uyarı(işaret=0,2))

-(bayrak=0 VE Uyarı(bayrak,2));

0;Ref(If(plot=1,sinyaller,Giriş-Çıkış),-gecikme)

debaşiler

O göstergenin adı ne?

 

guru

"temel kalıp sistemi" olarak adlandırılır. http://www.metastocktools.com/MetaStock/Pattern01.txt

 

Merhaba malden, ASCTrend konusunda bana yardım ettiğiniz için teşekkür ederim. Bu gösterge için bir tane yapmama yardım edip edemeyeceğinizi merak ediyorum. MaonMa adında başka bir gösterge var. (Onları ekleyeceğim) Benim düşüncem, ASCTrend okları yukarı VE çubuk sarı çizginin (60 MA) üzerinde olduğunda, uzun bir ticaret yapın, kaybetmeyi durdur, aynı şekilde ASCTrend aşağı oklar VE çubuk olduğunda önceki en düşük olacaktır. sarı çizginin altında (60 MA), kısa bir ticaret yapın, kaybetmeyi durdur önceki en yüksek seviye olacak. Teşekkürler.

 

Merhaba Mladen,

tekrar yardımına ihtiyacım var. ok tabanlı bir gösterge için aşağıdaki kodu ayarladım. ama donmuş pc. Eğer gecikmeyi önleyecekse, indic içindeki orijinal rsi,cci ve cmo kodlarını kullanarak icustom fonksiyonu olmadan kodu tekrar yazabilir misiniz?

#özellik göstergesi_chart_window

#özellik göstergesi_tamponları 2

#özellik göstergesi_color1 Kızıl

#özellik göstergesi_renk2 KraliyetMavi

//---- giriş parametreleri

harici int barlarToProcess=100;

//---- arabellekler

çift ExtMapBuffer1[];

çift ExtMapBuffer2[];

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

//| Özel gösterge başlatma işlevi |

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

int init()

{

//---- göstergeler

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);

//----

dönüş(0);

}

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

//| Özel gösterge sıfırlama işlevi |

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

int tanım()

{

//----

//----

dönüş(0);

}

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

//| Özel gösterge yineleme işlevi |

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

int başlangıç()

{

int counted_bars=IndicatorCounted(),

sınır;

if(counted_bars>0)

counted_bars--;

limit=Barlar-sayılan_barlar;

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=Yüksek+5*Nokta;

başka

ExtMapBuffer1=0.0;

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

ExtMapBuffer2=Düşük-5*Nokta;

başka

ExtMapBuffer2=0.0;

}

dönüş(0);

}

 
anonimm:
Merhaba Mladen,

tekrar yardımına ihtiyacım var. ok tabanlı bir gösterge için aşağıdaki kodu ayarladım. ama donmuş pc. Eğer gecikmeyi önleyecekse, indic içindeki orijinal rsi,cci ve cmo kodlarını kullanarak icustom fonksiyonu olmadan kodu tekrar yazabilir misiniz?

#özellik göstergesi_chart_window

#özellik göstergesi_tamponları 2

#özellik göstergesi_color1 Kızıl

#özellik göstergesi_renk2 KraliyetMavi

//---- giriş parametreleri

harici int barlarToProcess=100;

//---- arabellekler

çift ExtMapBuffer1[];

çift ExtMapBuffer2[];

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

//| Özel gösterge başlatma işlevi |

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

int init()

{

//---- göstergeler

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);

//----

dönüş(0);

}

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

//| Özel gösterge sıfırlama işlevi |

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

int tanım()

{

//----

//----

dönüş(0);

}

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

//| Özel gösterge yineleme işlevi |

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

int başlangıç()

{

int counted_bars=IndicatorCounted(),

sınır;

if(counted_bars>0)

counted_bars--;

limit=Barlar-sayılan_barlar;

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=Yüksek+5*Nokta;

başka

ExtMapBuffer1=0.0;

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

ExtMapBuffer2=Düşük-5*Nokta;

başka

ExtMapBuffer2=0.0;

}

dönüş(0);

}

rsi ve cci için iCustom() kullanmak yerine yerleşik işlevleri kullanın.

RSI için gerekli parametreler:

[TD] string sembolü, int zaman çerçevesi, int periyodu, int uygulanan_fiyat, int shift)
çift iRSI([/TD] string sembolü, int zaman çerçevesi, int periyodu, int uygulanan_fiyat, int shift)[/TD]

[/TR]

[/TABLO]

CCİ için gerekli parametreler:

[TABLE="sınıf: docvar"]

[TR]

[TD] çift iCCI(

Ve CMO için, ilk parametre LastBarOnly ve ikincisi CMO_Range'dir, bu nedenle iCustom() çağrısı şöyle olmalıdır:

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

CMORange'ın bir parametre olduğu yerde