Kodlama yardımı - sayfa 483

 

Ah adamım, sen gerçekten bir yıldızsın. Ticaret yapmayı seviyorum, ama senin yardımın olmadan imkansız olurdu. Tekrar teşekkürler

 
xtractalpha:
Merhaba,

Birisi lütfen LotsizeCalc() işlevimde bana yardımcı olabilir.

Son işlemim bir kaybeden ise lot miktarımı 'MartingaleAmount' ile çarpmak istiyorum. Son işlemim bir kazanan olsaydı, 'normal' lot boyutunu kullanmak isterim. Ne yazık ki, EA'yı geri test ettiğimde dergiden 4051 hatası alıyorum.

Bunun lot boyutuyla bir ilgisi var, çünkü EA'yı "LotsizeCalc()" işlevi olmadan çalıştırmayı denediğimde EA çalışıyor.

lotsize işlevimin neden çalışmadığını bilen var mı?

Şimdiden teşekkürler,

Thierry

extern int MaximumTrades = 10; extern double StopLoss=25; extern double TakeProfit=50; extern double MartingaleAmount = 1.5; input double LotSize=0.1; int magic; double pips; int tradeNumber; string ScreenComment; double martinlot; double martinsize;

[/PHP]

double LotsizeCalc() { if(OrderSelect(lastTradeTicket(),MODE_HISTORY)) if(OrderProfit()<0 && tradeNumber 0){ if(OrderSelect(ticket,SELECT_BY_TICKET)){ sl = OrderOpenPrice()+(StopLoss*pips); if(StopLoss==0)sl=0; tp = OrderOpenPrice()-(TakeProfit*pips); if(OrderType()==OP_BUY){ sl = OrderOpenPrice()-(StopLoss*pips); if(StopLoss==0)sl=0; tp = OrderOpenPrice()+(TakeProfit*pips); } if(!OrderModify(ticket,price,sl,tp,0,Magenta)) { err = GetLastError(); Print("Encountered an error during modification!"+(string)err+" "+ErrorDescription(err) ); } } else{//in case it fails to select the order for some reason Print("Failed to Select Order ",ticket); err = GetLastError(); Print("Encountered an error while seleting order "+(string)ticket+" error number "+(string)err+" "+ErrorDescription(err) ); } } else{//in case it fails to place the order and send us back a ticket number. err = GetLastError(); Print("Encountered an error during order placement!"+(string)err+" "+ErrorDescription(err) ); if(err==ERR_TRADE_NOT_ALLOWED)MessageBox("You can not place a trade because \"Allow Live Trading\" is not checked in your options. Please check the \"Allow Live Trading\" Box!","Check Your Settings!"); } }

Thierry

Son kapatılan emrin kâr veya zararla kapatılıp kapatılmadığını öğrenmek için bu işlevi kullanabilirsiniz:

[PHP]double lastOrderProfit(int magicNumber=0)

{

tarihsaat lastTime = 0;

double lastProfit = 0;

for(int i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (OrderSelect(i,SELECT_BY_POS, MODE_HISTORY)==yanlış) break;

if (magicNumber!=0)

(OrderMagicNumber() != magicNumber) devam ederse;

(OrderSymbol() != Symbol()) devam ederse;

(OrderCloseTime() <= lastTime) devam ederse;

lastTime = OrderCloseTime();

lastProfit = OrderProfit()+OrderSwap()+OrderCommission();

}

dönüş(sonKar);

}

Sadece lastOrderProfit() işlevinin sonucunun olup olmadığını kontrol edin ve < 0 ise, martingale kuralınızı uygulayın

 

Merhaba Mladen! Yine ben...

Bu satırlar için ayarlanmış herhangi bir arabellek olmadığı için iCustom kullanan bir EA'da bu göstergeden gelen satırları kullanmak nasıl mümkün olabilir?

teşekkürler

Dosyalar:
 
Jason2005:
Merhaba Mladen! Yine ben...

Bu satırlar için ayarlanmış herhangi bir arabellek olmadığı için iCustom kullanan bir EA'da bu göstergeden gelen satırları kullanmak nasıl mümkün olabilir?

teşekkürler

bunlar nesneler

Nesnelere adlarıyla erişebilirsiniz (nesnenin tam adını bilmelisiniz, ancak gösterge tablo üzerinde aktif olmalı ve bu nesneler tablo üzerinde çizilmelidir).

 
mladen:
Bunlar nesnelerdir Nesnelere isimleriyle erişebilirsiniz (nesnenin tam adını bilmelisiniz, ancak gösterge tablo üzerinde aktif olmalı ve bu nesneler tablo üzerinde çizilmelidir).

Harika. Peki EA'dan göstergeyi nasıl arayabilirim? iCustom dışında bir şeyle mi yoksa yanlış mı anladım... Teşekkürler mladen

 
Jason2005:
Harika. Peki EA'dan göstergeyi nasıl arayabilirim? iCustom dışında bir şeyle mi yoksa yanlış mı anladım... Teşekkürler mladen

Bu gösterge basitçe her 100 piplik segmentin 0,20,50,80 piplik seviyeleri çiziyor. En basit yol, bu seviyelerin EA'nızdan geçip geçmediğini kontrol etmektir.

Nesne adlarını (ve fiyatlarını) kullanmayı denerseniz, en yüksek en yüksek ve en düşük en düşük değere bağlı olduklarından hatların tam adlarını bilemezsiniz - bunlar bir değişikliğe tabidir. Yukarıda açıklanan modu kullanın.

 
mladen:
Bu gösterge basitçe her 100 piplik segmentin 0,20,50,80 piplik seviyeleri çiziyor. En basit yol, bu seviyelerin EA'nızdan geçip geçmediğini kontrol etmektir. Nesne adlarını (ve fiyatlarını) kullanmayı denerseniz, en yüksek en yüksek ve en düşük en düşük değere bağlı olduklarından hatların tam adlarını bilemezsiniz - bunlar bir değişikliğe tabidir. Yukarıda açıklanan modu kullanın.

Bunun nasıl yapılacağına dair bir örnek var mı? ... Bu kadar çok sorduğum için özür dilerim, kodlamaya yeni başlıyorum ve alım veya satım durumunda bu seviyelerin aşılıp aşılmadığını nasıl kontrol edeceğimi bilmiyorum.

 
Jason2005:
Bunun nasıl yapılacağına dair bir örnek var mı? ... Bu kadar çok sorduğum için özür dilerim, kodlamaya yeni başlıyorum ve alım veya satım durumunda bu seviyelerin aşılıp aşılmadığını nasıl kontrol edeceğimi bilmiyorum.

Jason2005

Eklediğiniz göstergede nasıl yapıldığına dair bir kodunuz var

 
mladen:
Jason2005 Eklediğiniz göstergede nasıl yapıldığına dair bir kodunuz var.

O zaman bu mu olacaktı?

MathMod(i, 5) == 0.0
 
mladen:
Thierry

Son kapatılan emrin kâr veya zararla kapatılıp kapatılmadığını öğrenmek için bu işlevi kullanabilirsiniz:

double lastOrderProfit(int magicNumber=0)

{

datetime lastTime = 0;

double lastProfit = 0;

for(int i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (OrderSelect(i,SELECT_BY_POS, MODE_HISTORY)==false) break;

if (magicNumber!=0)

if (OrderMagicNumber() != magicNumber) continue;

if (OrderSymbol() != Symbol()) continue;

if (OrderCloseTime() <= lastTime) continue;

lastTime = OrderCloseTime();

lastProfit = OrderProfit()+OrderSwap()+OrderCommission();

}

return(lastProfit);

}

Sadece lastOrderProfit() işlevinin sonucunun olup olmadığını kontrol edin ve < 0 ise, martingale kuralınızı uygulayın


Merhaba Mladen,

Cevabınız için teşekkürler.

lastorderprofit işlevi gerekli değil çünkü benim lastTradeTicket() işlevim aynı işi yapıyor.

Lütfen EA'ma bir göz atabilir misiniz?

Sizden kodu düzenlemenizi istemiyorum ama neyi yanlış kodladığımı söylerseniz çok müteşekkir olurum.

Şimdiden teşekkürler,

Thierry

53_martingale.mq4

Dosyalar: