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

 
Bu altın. Beni saatlerce çalışmaktan kurtardı. Adamım!
 

Keyfini çıkarın...ama kendi kodunuzu oluşturmanın ve dolayısıyla tam olarak nasıl çalıştığını bilmenin verdiği güveni kendinizden mahrum etmeyin. Önceden var olan kodu kullanmak, "önyüklemelerinizle kendinizi yukarı çekmek" tarzında bilginizi geliştirmenin iyi bir yoludur, ilk günlerimde örnek olarak kullanmak için kodum olmasaydı burada olmazdım, ama olun emin olun ve kendinizi balık tutmayı öğrenmeye zorlayın. Yaptığınız diğer her şeyde ondan gelecek bir değer var.

 

@Phillip

Bunun hakkında ne düşünüyorsun?:

tradeVolume = AccountFreeMargin() * risk/100 / ( stopLossPoints * MarketInfo( Symbol(), MODE_TICKVALUE ) );

if(tradeVolume<MarketInfo(Symbol(),MODE_MINLOT)) tradeVolume=MarketInfo(Symbol(),MODE_MINLOT);

if(tradeVolume>MarketInfo(Symbol(),MODE_MAXLOT)) tradeVolume=MarketInfo(Symbol(),MODE_MAXLOT);

res=OrderSend(Symbol(),OP_BUY,tradeVolume,Ask,3,Ask - 0.2,Ask + 0.4,"",MAGICID,0,Kırmızı);

 
Ricotter :

tradeVolume = AccountFreeMargin() * risk/100 / ( stopLossPoints * MarketInfo( Symbol(), MODE_TICKVALUE ) );


Matematiği doğrulamak için kişisel olarak test etmeden, ancak matematiğin doğru olduğunu varsayarak, bunu yalnızca karşı para biriminin aynı zamanda hesabın değeri olduğu döviz çiftlerine uygulamanız şartıyla bu doğru görünüyor.

Örneğin, hesabınız USD bazındaysa, bu ticaret hacmi hesaplama yöntemini yalnızca USD karşıt - EURUSD, GBPUSD, vb. olan döviz çiftlerine uygulamak istiyorsunuz.

Kodlarımda bu döviz çifti tipi "Tip 2" olarak belirlenmiştir.

Temel olarak hesabın değerine sahip bir sembole uygularsanız hesaplama hatalı olacaktır (örneğin, hesap USD tabanlı olduğunda USDJPY). Ve aynı şekilde herhangi bir çarpıya uygulanırsa hatalı olacaktır.

"Para Birimi Sembolünü Analiz Et" dosyasındaki diğer gönderide bulunan dosya içeren SymboType() çağrı işlevini inceleyin, yorum yapılan başlık bölümü farklı sembol türlerinin temelini ve neden risk ve hacim boyutunda (lot boyutu) eşitliği hesaplamanız gerektiğini açıklıyor. sembol tipine göre farklılık gösterir.

Ancak planınız sadece bu EURUSD ve GBPUSD tipi çiftleri takas etmekse, kodunuz uygun görünüyor!
 

Tekrar merhaba Phillip... Daha önceki yazılarımdan birinde "Kod JPY çiftlerinde bazı problemler varmış gibi görünüyor. Bu çözüldü mü?" dediğimi hatırlarsınız. Pekala, sanırım bu sorun bende tekrar ortaya çıkmış olabilir. EA'ma rutininizi doğru bir şekilde ekledim (eminim) ve MaxPercentEquityAtRisk= 1.0 (yüzde 1) olarak ayarladım. Demo hesabımdaki öz sermaye 2300 ABD Doları civarında, bu nedenle herhangi bir ticarette yaklaşık 23 ABD Doları riske atmaya hazırım. EA'm, eşit büyüklükte zarar durdurma ve kar hedefleri kullanıyor - bu nedenle, bir ticarette 23$'ı riske ediyorsam, 23$'lık bir kazanç için çekim yapıyorum. Her neyse, EA'm dün gece 2 işlem gerçekleştirdi:

(1) EUR/JPY, 9.8 pip stoploss ve 9.8 pip kar hedefi AL. Rutininiz 0.80 lotluk bir lot büyüklüğü hesapladı (çok büyük) ve ticaret 10 piplik 96.91$'lık bir kârla sonuçlandı.

(2) NZDJPY, 16.3 pip stoploss ve 16.3 pip kar hedefi AL. Rutininiz 0,28 lot lot büyüklüğü hesapladı ve işlem -56,56$'lık bir kayıpla sonuçlandı.


2300$'lık öz sermayemin sadece %1'ini riske attığımı düşünürsek, bu işlemlerin her ikisinin de bana yaklaşık 23$'lık bir kazanç veya 23$'lık bir kayıp vermesi gerekirdi, değil mi?


Teşekkürler!

Shawn

 

Bu, Phillp'e yardımcı olabilir - işte, yukarıda bahsettiğim her iki sipariş için lot boyutlarını hesapladıktan hemen sonra kodunuzdaki print ifadelerinin günlüğü:


05:14:56 EURJPY,H1: AL - EURJPY Maks. Öz Sermaye Riski = 21,99 ABD doları ve Maks Lot Boyutu = 0,8085
05:14:56 EURJPY,H1: AL - EURJPY Mevcut Öz Sermaye Riski = 21,76 $ ve Mevcut Lot Büyüklüğü = 0,8
05:14:56 EURJPY,H1: SATIN AL - EURJPY MarketInfo(MODE_STOPLEVEL) = 30.00000
05:14:56 LibOrderReliable EURJPY,H1: başarıyla yüklendi
05:14:56 LibOrderReliable EURJPY,H1: OrderSendReliable v3.1:
05:14:56 LibOrderReliable EURJPY,H1: OrderSendReliable v3.1: • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
05:14:56 LibOrderReliable EURJPY,H1: OrderSendReliable v3.1: BUY STOP 0.800000000 lot @114.78700000 sl:114.68900000 tp:114.88500000 denendi



09:02:36 NZDJPY,H1: AL - NZDJPY Maks. Öz Sermaye Riski = 23,29 ABD doları ve Maks Lot Boyutu = 0,2814
09:02:36 NZDJPY,H1: SATIN AL - NZDJPY Mevcut Öz Sermaye Riski = 23,18 ABD doları ve Mevcut Lot Boyutu = 0,28
09:02:36 NZDJPY,H1: SATIN AL - NZDJPY MarketInfo(MODE_STOPLEVEL) = 70.00000
09:02:36 LibOrderReliable NZDJPY,H1: başarıyla yüklendi
09:02:36 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1:
09:02:36 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1: • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
09:02:36 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1: AL DURDURMA girişiminde bulunuldu 0.28000000 lot @64.29700000 sl:64.13400000 tp:64.46000000
09:02:37 LibOrderReliable NZDJPY,H1: açık #155492665 satın alma durağı 0.28 NZDJPY at 64.297 sl: 64.134 tp: 64.460 tamam
09:02:37 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1: Ticket #155492665: Başarılı BUY STOP siparişi verildi, ayrıntılar aşağıdadır.
09:02:37 LibOrderReliable NZDJPY,H1: #155492665 2010.11.04 13:02 satın alma durağı 0.28 NZDJPY 64.297 64.134 64.460 64.197 0.00 0.00 0.00 NZDJPY73650016 73650016
09:02:37 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1: • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •

09:02:37 LibOrderReliable NZDJPY,H1: OrderSendReliable v3.1:


... Maks EquityAtRisk rakamını iyi hesaplıyor gibi görünüyor... ama bu lot büyüklükleri, özsermaye istediğim riskin %1'inden çok daha fazla kar/zararla sonuçlanıyor.


teşekkürler

Shawn

 

Brokeriniz nedir?

FXDD'de bu durdurma emirlerini girdiğimde EURJPY (@25.66 EaR) için 0.15 lot boyutu alıyorum

2010.11.04 16:05:39 Assisted_Order_Script_2010.11.01 EURJPY,Günlük: açık #95896902 satın stop 0.15 EURJPY at 114.827 sl: 114.689 tp: 114.885 tamam
2010.11.04 16:05:38 Assisted_Order_Script_2010.11.01 EURJPY,Günlük: OP_BUYSTOP denendi 0.15000000 lot @114.82700000 sl:114.68900000 tp:114.88500000
2010.11.04 16:05:38 Assisted_Order_Script_2010.11.01 EURJPY,Günlük: Mevcut EquityAtRisk = 25,66 USD ve Mevcut Lot Boyutu = 0,15 ve Kar Hedefi = 0,4:1 Kar:Zarar oranı için 10,78 USD
2010.11.04 16:05:38 Assisted_Order_Script_2010.11.01 EURJPY,Günlük: İzin verilen maksimum EquityAtRisk = 25,84 ABD doları ve Hesaplanan Maks. Lot Boyutu = 0,1511
2010.11.04 16:05:38 Assisted_Order_Script_2010.11.01 EURJPY,Günlük girdiler: Order_Type="SATIN AL"; OpenBidFiyatı=114.787; StopLossBidPrice=114.689; Kar Al TeklifFiyatı=114.885; MaxPercentEquityAtRisk=0.5; MinLotOverRide=yanlış;

IBFX'te, 26.77$'lık bir EaR ile 0.16'lık bir lot büyüklüğü elde ediyorum (hesapta daha büyük başlangıç sermayesi)

2010.11.04 16:09:34 Assisted_Order_Script_2010.11.01 EURJPY,H4: açık #94468219 satın stop 0.16 EURJPY at 114.824 sl: 114.689 tp: 114.885 tamam
2010.11.04 16:09:34 Assisted_Order_Script_2010.11.01 EURJPY,H4: denendi OP_BUYSTOP 0.16000000 lot @114.82400000 sl:114.68900000 tp:114.88500000
2010.11.04 16:09:34 Assisted_Order_Script_2010.11.01 EURJPY,H4: Mevcut EquityAtRisk = 26,77 USD ve Mevcut Lot Boyutu = 0,16 ve Kar Hedefi = 0,5:1 Kar:Zarar oranı için 12,10 USD
2010.11.04 16:09:33 Assisted_Order_Script_2010.11.01 EURJPY,H4: İzin verilen Maks.
2010.11.04 16:09:33 Assisted_Order_Script_2010.11.01 EURJPY,H4 girişleri: Order_Type="BUY STOP"; OpenBidFiyatı=114.787; StopLossBidPrice=114.689; Kar Al TeklifFiyatı=114.885; MaxPercentEquityAtRisk=0.5; MinLotOverRide=yanlış;

NZDJPY ile IBFX'te lot büyüklüğü 0,09 lot ve EaR 24,53 alıyorum:

2010.11.04 16:11:59 Assisted_Order_Script_2010.11.01 NZDJPY,H4: açık #94468343 satın alma durağı 0.09 NZDJPY 64.354 sl: 64.134 tp: 64.460 tamam
2010.11.04 16:11:59 Assisted_Order_Script_2010.11.01 NZDJPY,H4: denendi OP_BUYSTOP 0.09000000 lot @64.35400000 sl:64.13400000 tp:64.46000000
2010.11.04 16:11:59 Assisted_Order_Script_2010.11.01 NZDJPY,H4: Mevcut EquityAtRisk = 24,53 $ ve Mevcut Lot Boyutu = 0,09 ve Kar Hedefi = 0,5:1 Kar:Zarar oranı için 11,82 $
2010.11.04 16:11:59 Assisted_Order_Script_2010.11.01 NZDJPY,H4: İzin verilen maks.
2010.11.04 16:11:59 Assisted_Order_Script_2010.11.01 NZDJPY,H4 girişleri: Order_Type="BUY STOP"; OpenBidPrice=64.297; StopLossBidPrice=64.134; TakeProfitBidFiyat=64.46; MaxPercentEquityAtRisk=0.5; MinLotOverRide=yanlış;

Uyumluluk açısından test ettiğim dokuz broker var, bu kodların Alpari(ABD), CitiFXPro, CMS, Forex.com (Gain Capital), FXCM, FXDD, IBFX, MIG Bank ve ODL üzerinde çalıştığı biliniyor.

Bu brokerler, şimdiye kadar tatmin olduğum kadar farklılar ki, bu brokerleri kapsayan broker piyasası parametrelerindeki farklılıkları ustaca ele almalarına dayanan kodlar broker agnostiktir.

Ancak kod uygulamanızın bozuk olmadığını varsayıyoruz, o yüzden önce bunu ortadan kaldıralım. Ekli komut dosyasını deneyin, EURJPY'de sürükleyip bırakın ve yukarıda yaptığım gibi SATIN ALMA STOP'unuz için parametreleri girin ve sonuçları bana bildirin. (belli ki sadece bir demo hesabında kullanın)

 

Teşekkürler Phillip... Bir Alpari UK demosu kullanıyorum, hesap öz sermayesi US$2272.85. Tamam, betiği bir EURJPY saatlik grafiğine ekledim (tıpkı EA'mın kullandığı gibi). Hiçbir şey yapmadı veya bekleyen bir sipariş vermedi, bu yüzden herhangi bir hata mesajı için "Uzmanlar" sekmesini kontrol ettim... işte ne dedi:


2010.11.04 20:39:15 Assisted_Order_Script_2010.11.01 EURJPY,H1: kaldırıldı
2010.11.04 20:38:38 Assisted_Order_Script_2010.11.01 EURJPY,H1: başarıyla yüklendi
2010.11.04 20:37:54 Assisted_Order_Script_2010.11.01 EURJPY,H1: kaldırıldı
2010.11.04 20:37:54 Assisted_Order_Script_2010.11.01 EURJPY,H1: uninit neden 0
2010.11.04 20:37:54 Assisted_Order_Script_2010.11.01 EURJPY,H1: sıfır bölme
2010.11.04 20:37:53 Assisted_Order_Script_2010.11.01 EURJPY,H1: İzin verilen maksimum EquityAtRisk = 22,73 ABD doları ve hesaplanan Maks. Lot Boyutu = 0
2010.11.04 20:37:53 Assisted_Order_Script_2010.11.01 EURJPY,H1 girişleri: Order_Type="BUY"; OpenBidPrice=115.827; StopLossBidPrice=115.689; Kar Al TeklifFiyatı=115,885; MaxPercentEquityAtRisk=1; MinLotOverRide=yanlış;


Teşekkürler!

Shawn

 

Not: Senaryoyu şimdi tekrar denedim Phillip, aynı sayılar ama MinLotOverride'ı true olarak ayarladım.. hemen bir PİYASA emri başlattı (alış fiyatım 115.827 ve piyasa sadece 114.945'te olmasına rağmen. Lot boyutu = 0.01 ve stoploss veya kar yok hedef sipariş - ikisi de 0,0000 idi

teşekkürler

Shawn

 

Sadece onaylamak için, hesap para biriminiz USD, doğru mu?

Şimdi kontrol etmek için Alpari UK'yi indiriyorum.

Buy stop yerine piyasa olarak açılan emir, tamamen emirgüvenilir rutini tarafından kontrol edilir... çok garip. O zaman bunu da araştırmak gerekecek.

Dikkatimi çeken bir şey şu bildirimdir:
"Bir demo hesabındaki kaldıraç, otomatik olarak maksimum 1:500 kaldıraç değerine ayarlanır."

Kaldıracın lot boyutundaki bir hesabı etkilemesi gerektiği için değil, yalnızca IIRC serbest marj hesaplarını etkilemesi gerekir.

Düzenleme: boşver, platformun aslında varsayılan olarak bunu yapmadığını görüyorum, 1:100 maksimum kaldıraç