Nasıl kodlanır? - sayfa 197

 

Bu EA'yı kodlamaya yardımcı olacak biri var mı?

Merhaba,

Şu anda maksimum 4 seviye emir açacak bir martingale EA ile işlem yapıyorum. Sadece bu EA'yı kullanma riskini azaltabilecek bir riskten korunma stratejisi düşünüyorum. Aşağıda stratejimin bir açıklaması var:

1. Riskten korunma EA, açılış emirlerinin geri çekilmesini izleyecektir. Toplam değişken kayıplar önceden belirlenmiş bir miktardan daha büyükse, EA'yı açılış emirlerinin aksine korunan bir emir açması için tetikleyecektir.

2. Hedge edilen emrin lot büyüklüğü, son açılış emrinin lot büyüklüğünün bir katına (kullanıcı katını ayarlayabilir) göre hesaplanır (örneğin, son seviye emrin lot büyüklüğü 1,6 ise ve kat, 2, daha sonra korunan sipariş 3.2'de lot büyüklüğü ile açılacaktır.

3. Hedge edilen emir açılış seviyesine döndüğünde, korunan emir otomatik olarak kapatılacaktır.

4. Toplam sepet (açılış emirleri + korunan emir) önceden belirlenmiş bir net kar tutarına ulaştığında, tüm emirler kapatılacaktır.

İyi bir programcının bu riskten korunma EA'sını benim için kodlayıp yazamayacağını merak ediyorum. Diğer martingale EA için de çok faydalı olacağını düşünüyorum. Çok teşekkürler!

Saygılarımla,

Wallace

 

vay..

teşekkürler beyler..

al stop sat stop'a ne dersin?

oradaki "SATIN AL"ı değiştirmek mi?

sadece 1 çift için 2 pozisyon istiyorum, daha fazla değil..

üzgünüm hala acemi..

 

Bu indis EA'ya nasıl kodlanır?

Merhaba, ben yeni bir öğrenciyim ve mql öğrenmekle ilgileniyorum, biri bana bunu EA'ya nasıl kodlayacağımı söyleyebilir mi?

extern int Fast.MA.Period = 5;

extern int Slow.MA.Period = 34;

harici int Signal.period = 5;

//---- arabellekler

çift Tampon1[],

arabellek2[],

b2[],

b3[];

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

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

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

int init()

{

//---- göstergeler

// saymak için kullanılan iki ek tampon

Gösterge Tamponları(4);

GöstergeShortName("MA_5_34");

SetIndexStyle(0,DRAW_OK,STYLE_SOLID,3);

SetIndexArrow(0,242); // aşağı 226 234 242

SetIndexBuffer(0,b2);

SetIndexStyle(1,DRAW_OK,STYLE_SOLID,3);

SetIndexArrow(1,241); //YUKARI 225 233 241

SetIndexBuffer(1,b3);

// Bu tamponlar çizilmez, sadece okları belirlemek için kullanılır

SetIndexBuffer (2,Buffer1);

SetIndexBuffer (3,Buffer2);

//----

dönüş(0);

}

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

//| Müşteri göstergesi sıfırlama işlevi |

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

int tanım()

{

//----

dönüş(0);

}

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

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

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

int başlangıç()

{

int i, counted_bars=IndicatorCounted();

çift MA5,MA34;

int limit=Barlar-sayılan_barlar;

Print("baskı sınırı = ", sınır);

if(counted_bars>0) limit++; <----birisi bana bunun ne anlama geldiğini açıklayabilir mi?

// Ana hat

for(i=0; i<limit; i++) <----birisi bana bunun ne anlama geldiğini açıklayabilir mi?

{

MA5=iMA(NULL,0,Hızlı.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);

MA34=iMA(NULL,0,Slow.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);

Tampon1=MA5-MA34;

}

// Sinyal hattı

for(i=0; i<limit; i++) <----birisi bana bunun ne anlama geldiğini açıklayabilir mi?

{

Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i);

} <----birisi bana bunun ne anlama geldiğini açıklayabilir mi?

// Oklar

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

{

if(Tampon1 > Tampon2 && Tampon1 < Tampon2)

b2 = Yüksek+10*Puan;

if(Tampon1 Tampon2)

b3 = Düşük-10*Puan; <----birisi bana bunun ne anlama geldiğini açıklayabilir mi?

}

//----

dönüş(0);

}

Teşekkürler arkadaşlar =^_^=

 
liew_stanley:
if(counted_bars>0) limit++; <----birisi bana bunun ne anlama geldiğini açıklayabilir mi?

// Ana hat

for(i=0; i<limit; i++) <----birisi bana bunun ne anlama geldiğini açıklayabilir mi?

// Sinyal hattı

for(i=0; i<limit; i++) <----birisi bana bunun ne anlama geldiğini açıklayabilir mi?

{

Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i);

} <----birisi bana bunun ne anlama geldiğini açıklayabilir mi?

// Oklar

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

{

if(Tampon1 > Tampon2 && Tampon1 < Tampon2)

b2 = Yüksek+10*Puan;

if(Tampon1 Tampon2)

b3 = Düşük-10*Puan; <----birisi bana bunun ne anlama geldiğini açıklayabilir mi?

Teşekkürler arkadaşlar =^_^=

Bu kolay.

İndi'nizi başlattığınızda, Bars=1000 (örneğin) ve counted_bars=0. Yani limit=1000 ve indi'niz 1000 çubuğun tamamını hesaplar. Bundan sonra counted_bars=1000 ve her yeni tik indi sadece son (sıfır) çubuğu hesaplar. Bir sonraki çubuk geldiğinde limit=1 ve indi son iki çubuğu yeniden hesaplar.

b3 = Düşük-10*Puan; - bu sadece barın minimumundan 10 puan daha düşük bir çizgi.

 
liew_stanley:
Merhaba, ben yeni bir öğrenciyim ve mql öğrenmekle ilgileniyorum, biri bana bunu EA'ya nasıl kodlayacağımı söyleyebilir mi?

extern int Fast.MA.Period = 5;

extern int Slow.MA.Period = 34;

harici int Signal.period = 5;

//---- arabellekler

çift Tampon1[],

arabellek2[],

b2[],

b3[];

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

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

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

int init()

{

//---- göstergeler

// saymak için kullanılan iki ek tampon

Gösterge Tamponları(4);

GöstergeShortName("MA_5_34");

SetIndexStyle(0,DRAW_OK,STYLE_SOLID,3);

SetIndexArrow(0,242); // aşağı 226 234 242

SetIndexBuffer(0,b2);

SetIndexStyle(1,DRAW_OK,STYLE_SOLID,3);

SetIndexArrow(1,241); //YUKARI 225 233 241

SetIndexBuffer(1,b3);

// Bu tamponlar çizilmez, sadece okları belirlemek için kullanılır

SetIndexBuffer (2,Buffer1);

SetIndexBuffer (3,Buffer2);

//----

dönüş(0);

}

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

//| Müşteri göstergesi sıfırlama işlevi |

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

int tanım()

{

//----

dönüş(0);

}

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

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

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

int başlangıç()

{

int i, counted_bars=IndicatorCounted();

çift MA5,MA34;

int limit=Barlar-sayılan_barlar;

Print("baskı sınırı = ", sınır);

if(counted_bars>0) limit++; <----birisi bana bunun ne anlama geldiğini açıklayabilir mi?

// Ana hat

for(i=0; i<limit; i++) <----birisi bana bunun ne anlama geldiğini açıklayabilir mi?

{

MA5=iMA(NULL,0,Hızlı.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);

MA34=iMA(NULL,0,Slow.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);

Tampon1=MA5-MA34;

}

// Sinyal hattı

for(i=0; i<limit; i++) <----birisi bana bunun ne anlama geldiğini açıklayabilir mi?

{

Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i);

} <----birisi bana bunun ne anlama geldiğini açıklayabilir mi?

// Oklar

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

{

if(Tampon1 > Tampon2 && Tampon1 < Tampon2)

b2 = Yüksek+10*Puan;

if(Tampon1 Tampon2)

b3 = Düşük-10*Puan; <----birisi bana bunun ne anlama geldiğini açıklayabilir mi?

}

//----

dönüş(0);

}

Teşekkürler arkadaşlar =^_^=

Bu göstergeyi bir adette kullanmak istiyorsanız, ona erişmek için icustom() işlevini kullanabilirsiniz. göstergenin herhangi bir kodunu gerçekten anlamanız gerekmez, sadece tükürdüğü verileri anlamanız gerekir. En azından bunu yapmanın kolay yolu bu.

 
fxcourt:
Bu göstergeyi bir adette kullanmak istiyorsanız, ona erişmek için icustom() işlevini kullanabilirsiniz. göstergenin herhangi bir kodunu gerçekten anlamanız gerekmez, sadece tükürdüğü verileri anlamanız gerekir. En azından bunu yapmanın kolay yolu bu.

Anlamı, indis'i geri çağırmak için EA'daki icustom() işlevini kullanmak mı? EA'da kodlama nasıl yazılmalı? bana biraz rehberlik edebilir mi?

Çok teşekkürler

 
toiii:
vay..

teşekkürler beyler..

al stop sat stop'a ne dersin?

oradaki "SATIN AL"ı değiştirmek mi?

sadece 1 çift için 2 pozisyon istiyorum, daha fazla değil..

üzgünüm hala acemi..

Oku bunu

MQL4 Eğitimi

 

Bu doğru kodlama mı?

harici çift TakeProfit=100;

dış çift Lot=1;

harici çift TrailingStop=35;

harici int KısaEma = 5;

harici int UzunEma = 34;

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

//| uzman başlatma işlevi |

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

int init()

{

//----

//----

dönüş(0);

}

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

//| uzman sıfırlama işlevi |

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

int tanım()

{

//----

//----

dönüş(0);

}

int Çapraz (çift satır1, çift satır2)

{

statik int son_yön = 0;

statik int akım_yön = 0;

if(line1>line2)current_direction = 1; //yukarı

if(line1<line2)current_direction = 2; //aşağı

if(current_direction != last_direction) //değiştirildi

{

last_direction = current_direction;

dönüş (son_yön);

}

başka

{

dönüş (0);

}

}

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

//| uzman başlatma işlevi |

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

int başlangıç()

{

//----

int toplam;

çift kısaEma, uzunEma;

shortEma = iCustom(NULL,0,"Test_Demo",13,0,0);

longEma = iCustom(NULL,0,"Test_Demo",54,0,0);

Print("shortEma = " + shortEma + " : longEma = " + longEma);

int Çapraz = 0;

isCrossed = Çapraz (UzunEma,KısaEma);

toplam = SiparişlerToplam();

if(toplam < 1)

{

if(isCrossed == 1)

{

1=SiparişGönder(Symbol(),OP_BUY,Lots,Sor,3,0,Ask+TakeProfit*Puan,"My EA",12345,0,Yeşil);

eğer(1>0)

{

if(OrderSelect(1,SELECT_BY_TICKET,MODE_TRADES)) Print("SATIN AL emri açıldı : ",OrderOpenPrice());

}

else Print("SATIN AL emri açılırken hata oluştu : ",GetLastError());

dönüş(0);

}

if(isCrossed == 2)

{

2=SiparişGönder(Symbol(),OP_SELL,Lots,Bid,3,0,Teklif-AlKar*Noktası,"Benim EA",12345,0,Kırmızı);

eğer(2>0)

{

if(OrderSelect(2,SELECT_BY_TICKET,MODE_TRADES)) Print(" SAT emri açıldı : ",OrderOpenPrice());

}

else Print("SATIŞ emrini açarken hata: ",GetLastError());

dönüş(0);

}

dönüş(0);

}

}

1 ve 2 beklenmeyen belirteç derken bir hata alıyorum, bu ne anlama geliyor? bana rehberlik edebilir mi?

teşekkürler

 

Sanırım bir şeyi sildin ve unuttun:

2=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"My EA",12345,0,Red); if(2>0)

saçmalık.

 
liew_stanley:
harici çift TakeProfit=100;

dış çift Lot=1;

harici çift TrailingStop=35;

1 ve 2 beklenmeyen belirteç derken bir hata alıyorum, bu ne anlama geliyor? bana rehberlik edebilir mi?

teşekkürler

OrderSend(....