otomatik parti büyüklüğü hesaplama işlevi? - sayfa 5

 

Merhaba Phillip, Shawn tekrar burada. Geçen sefer tartıştığımız küçük değişiklikleri yaptım (ancak yine de en son sürümünüzü uygulamadım) ve çok sayıda JPY çiftiyle ilgili sorunlar hala ortaya çıkıyor. EA'mın dün gece çalışmasına izin verdim ve 3 işlem oluşturdu ( hesap bakiyem 2550 ABD Doları, risk %1, yani işlem başına yaklaşık 25 Dolar risk):


(1) NZDJPY sat, 0.89 lot

(2) AUDJPY sat, 0.23 lot

(3) CADJPY sat, 0.94 lot


AUDJPY ticareti için lot büyüklüğü iyi görünüyor, ancak diğer ikisi değil. Eşyalarına yapılan aramaların arasına yerleştirilmiş bazı Print ifadeleri vardı. İlk olarak, bu bölüm için EA'mın kodu:


 if (Bid > SellPrice && SellPrice != 0.00 )
         {       
          CurrentOrderType=OP_SELL;
          CurrentStopLossPrice= FinalSellStopPrice;
          CurrentEquityAtRisk=(MaxPercentEquityAtRisk/ 100.0 )*AccountBalance();
          CurrentLotSize=LotSize(CurrentEquityAtRisk,CurrentStopLossPrice,CurrentOrderType,CurrentSymbolType,CurrentCounterPairForCross);
           Print ( "SELL - " , Symbol (), "AccountBalance = " , DoubleToStr(AccountBalance(), 2 ), " Max EquityAtRisk = $" ,DoubleToStr(CurrentEquityAtRisk, 2 ), " and Max Lotsize = " ,DoubleToStr(CurrentLotSize, 4 ));
          CurrentLotSize=NormalizeLotSize(CurrentLotSize);
           Print ( "SELL - " , Symbol (), "Normalized LotSize is now = " , DoubleToStr(CurrentLotSize, 4 ));
           if (CurrentLotSize<MarketInfo( Symbol (),MODE_MINLOT)) CurrentLotSize=MarketInfo( Symbol (),MODE_MINLOT);
           if (CurrentLotSize>MarketInfo( Symbol (),MODE_MAXLOT)) CurrentLotSize=MarketInfo( Symbol (),MODE_MAXLOT);
          CurrentEquityAtRisk=EquityAtRisk(CurrentLotSize,CurrentStopLossPrice,CurrentOrderType,CurrentSymbolType,CurrentCounterPairForCross);
           Print ( "SELL - " , Symbol (), "Current EquityAtRisk = $" ,DoubleToStr(CurrentEquityAtRisk, 2 ), " and Current Lotsize = " ,DoubleToStr(CurrentLotSize, 4 ));
           Print ( "SELL - " , Symbol (), " MarketInfo(MODE_STOPLEVEL) = " ,DoubleToStr(MarketInfo( Symbol (),MODE_STOPLEVEL), 5 ));
          
           //Check free margin
           if (AccountFreeMargin() < ( 1000 * CurrentLotSize)) 
          {
             Print ( "We have no money. Free Margin = " , AccountFreeMargin());
             return ( 0 );
          }
         
          Ticket=OrderSendReliable2Step( Symbol (),OP_SELLSTOP,CurrentLotSize,FinalSellPrice,Slippage,CurrentStopLossPrice,FinalSellProfTarg, Symbol ()+DoubleToStr(MagicNumber, 0 ),MagicNumber, 0 , Red );
           if (Ticket<= 0 ) Print ( "Error = " , GetLastError ());
           else 
          { 


Ve işte yukarıdaki 3 işlemin her biri için günlükten alınan Print ifadelerinin çıktısı:


05:16:10 DelphiEA NZDJPY,H1: SAT - NZDJPYAHesap Bakiyesi = 2550,90 Maks Öz Sermaye Riski = 25,51 ABD doları ve Maks Lot Boyutu = 0,8988
05:16:10 DelphiEA NZDJPY,H1: SAT - NZDJPYNormalleştirilmiş PartiBoyutu artık = 0.8900
05:16:10 DelphiEA NZDJPY,H1: SAT - NZDJPYMevcut Öz Sermaye Riski = 25,26 $ ve Mevcut Lot Büyüklüğü = 0,8900
05:16:10 DelphiEA NZDJPY,H1: SAT - NZDJPY MarketInfo(MODE_STOPLEVEL) = 70.00000


05:16:56 DelphiEA AUDJPY,H1: SAT - AUDJPYAHesap Bakiyesi = 2550,90 Maks Öz Sermaye Riski = 25,51 ABD doları ve Maks Lot Boyutu = 0,2376
05:16:56 DelphiEA AUDJPY,H1: SAT - AUDJPYNormalleştirilmiş PartiBoyutu artık = 0,2300
05:16:56 DelphiEA AUDJPY,H1: SAT - AUDJPYMevcut VarlıkRisk Riski = 24,69 $ ve Mevcut Lot Büyüklüğü = 0,2300
05:16:56 DelphiEA AUDJPY,H1: SAT - AUDJPY MarketInfo(MODE_STOPLEVEL) = 50.000000


07:13:53 DelphiEA CADJPY,H1: SAT - CADJPYAHesapDengesi = 2550,90 Maks Öz Sermaye Riski = 25,51 ABD doları ve Maks Lot Boyutu = 0,9408
07:13:53 DelphiEA CADJPY,H1: SAT - CADJPYNormalleştirilmiş PartiBoyutu artık = 0.9400
07:13:53 DelphiEA CADJPY,H1: SAT - CADJPYMevcut Öz Sermaye Riski = 25,49 $ ve Mevcut Lot Büyüklüğü = 0,9400

07:13:53 DelphiEA CADJPY,H1: SAT - CADJPY MarketInfo(MODE_STOPLEVEL) = 60.0000


Bu yardımcı olur umarım!!

Ah Phillip, bir şey daha - Sanırım OrderSendReliable2Step'te bir çiş hatası buldum. Bunu kime bildirmem gerektiğini biliyor musun?


Teşekkürler!

Shawn

 
Ricotter :

Bu adam bunu dosya geçmişini kullanarak yapıyor.

https://www.mql5.com/en/articles/1493

Burada yeni olduğunuz için MT5 Tester'da bu sınırlamanın olmadığını belirtmekte fayda var. Bilginize.

 
gordon :

Burada yeni olduğunuz için MT5 Tester'da bu sınırlamanın olmadığını belirtmekte fayda var. Bilginize.

Bahşiş için teşekkürler. MT5 kullanmamam için herhangi bir sebep var mı?

 
Ricotter :

Bahşiş için teşekkürler. MT5 kullanmamam için herhangi bir sebep var mı?

Live'ı hemen takas etmek istiyorsanız, MT4'e bağlı kalmanız daha iyi olur, ancak Live'a geçmeden önce birkaç ay boyunca Demo'ları öğrenmeyi ve yapmayı planlıyorsanız, bunu düşünebilirsiniz. MT4'e göre birçok iyileştirme içeren yeni bir platformdur, ancak aynı zamanda çok daha karmaşıktır ve hala birçok broker tarafından desteklenmemektedir. İşte bazı iyi bilgiler -> http://www.100forexbrokers.com/mt5-metatrader5 . Ayrıca, MQL5.com'a da göz atmak isteyebilirsiniz.
 
shawnh :

Merhaba Phillip, Shawn tekrar burada. Geçen sefer tartıştığımız küçük değişiklikleri yaptım (ancak yine de en son sürümünüzü uygulamadım) ve çok sayıda JPY çiftiyle ilgili sorunlar hala ortaya çıkıyor.

Kodunuzda her şey "iyi görünüyor", hala neden size olduğu hakkında hiçbir fikrim yok.

Daha yeni koda geçmenizi öneririm. Bu noktada, şu anda sahip olduğunuz her şey düzgün çalışmadığı için bir şeyi değiştirmeniz gerekiyor.

Orderlib sorunlarıyla ilgili olarak hataları kime bildirmeniz gerektiğini bilmiyorum, üzgünüm.
 
1005phillip :

Adım 1: Bu gönderideki tüm dosya eklerini dahil etme yolunuza yerleştirin (...\experts\include\*.mqh)

Adım 2: Ekli dosyalarda bulunan arama işlevlerine erişebilmesi için aşağıdakileri EA'nızın en üstüne ekleyin

Adım 3: Lot boyutunu, riske edilecek öz sermayenin bütçelenmiş miktarına dayalı olarak hesaplamak için aşağıdakileri ekleyin

MaxPercentEquityAtRisk'i EA'nızda bir yerde, stopların isabet etmesi durumunda ticaret başına tam kayıp riskine sokmak için izin verilen maksimum öz sermaye olarak tanımladığınızı varsayarsak, kodun bu kısmı önce maksimum lot boyutunu açık fiyat ve stoplossprice (pip değil) temelinde belirleyecektir. ancak gerçek piyasa fiyatı, emrinizde komisyoncuya gönderdiğiniz aynı şey) ve ardından komisyoncunun bütçelenmiş risk sermayenizi aşmadan kabul edeceği maksimum pozisyon büyüklüğünü belirleyecektir.

Adım 4: Hesaplamaların sonuçlarının günlüğünüze yazdırılmasını veya ticarete bir emir yorumu olarak eklenmesini isterseniz, aşağıdakileri de ekleyebilirsiniz.

Adım 5: Siparişinizi verin (orderendreliable yöntemini kullanarak)

https://c.mql5.com/mql4/forum/2010/10/OrderReliable_2010.10.12.mqh


Merhaba 1005phillip,


2 mqh'nin (analiz... ve tradepositionmanage...) aşağıdakileri içermeyen bir versiyonuna sahip misiniz? Bunun nedeni, ikisinin de bu içe aktarmaya sahip olması ve bu nedenle derleyici tarafından izin verilmemesidir.

//#include <stderror.mqh>
//#include <stdlib.mqh>


...böylece dosyaları düzenleyip salt okunur durumda tutmayayım. Veya bunları düzenleyip bu içe aktarmaları kaldırabilir miyim?

 
jcadong5 :

...böylece dosyaları düzenleyip salt okunur durumda tutmayayım. Veya bunları düzenleyip bu içe aktarmaları kaldırabilir miyim?


Devam edin ve onları beğeninize göre düzenleyin. Yineleme benim için derlemeye engel değil, derleyici yinelemeyle ilgili bir not tutuyor ama tek yaptığı bu.
 
Teşekkürler.
 
1005phillip :
Kodunuzda her şey "iyi görünüyor", hala neden size olduğu hakkında hiçbir fikrim yok.

Daha yeni koda geçmenizi öneririm. Bu noktada, şu anda sahip olduğunuz her şey düzgün çalışmadığı için bir şeyi değiştirmeniz gerekiyor.

Orderlib sorunlarıyla ilgili olarak hataları kime bildirmeniz gerektiğini bilmiyorum, üzgünüm.


Merhaba Phillip, Shawn tekrar burada. Birkaç hafta önce en son sürümünüzü yükledikten sonra, şimdi her şeyin yolunda gittiğini ve hesaplanan parti büyüklüklerinin çarpıcı göründüğünü bildirmekten mutluluk duyuyorum. Sanırım en son sürüme ihtiyacım vardı!


Tüm yardımların için tekrar teşekkürler, sen iyi bir adamsın!


Şerefe

Shawn

 

Memnuniyetle! İşinize yaradığını bana bildirdiğiniz için teşekkürler, geri bildirim için teşekkür ederim. Önceki kodla neyin ters gittiğinden emin değilim. Revizyonlar arasında farkında olmadan düzelttiğim bir tür hata olabilir.

Muhtemelen bir veya iki hafta içinde, çapraz döviz çiftlerinde MT4'te geriye dönük test ile kullanım için bazı geri dönüş özelliklerine sahip olacak güncellenmiş bir sürüme sahip olacağım. Şu anda, benim parti boyutu kodumu kullanırken bir çapraz çifti geriye doğru test etmeye çalışırsanız, geriye dönük testiniz bombalanacak çünkü geriye dönük testçi gerekli sayaç ve baz çiftleri için piyasa fiyatlarına erişemez. (bu, canlı veya ileriye dönük testlerde bir sorun değildir, tamamen MT4'ün geriye dönük test edici sınırlamasıdır)

O köprüyü geçtiğimde, belki siz veya başkaları bunu faydalı bulursa, kodu gönderirim.

İyi hafta sonları,
- Phil

Neden: