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

 

Ah, sorunu anlıyorum...harici değişkeni SATIN ALMA olarak değiştirmek yerine komut dosyasını bir "SATIN AL" emri verecek şekilde ayarladınız... bu yüzden bir piyasa emri verdi.

Gönderinizden:

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ış;

SATIN ALMA DURDUR'u deneyin.


2300 USD ile finanse edilen bir demo hesapta EURJPY için 0.12 lot alıyorum

2010.11.04 20:10:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: açık #155713274 satın alma stop 0.12 EURJPY at 115.840 sl: 115.689 tp: 115.885 tamam
2010.11.04 20:10:15 Assisted_Order_Script_2010.11.01 EURJPY,H1: denendi OP_BUYSTOP 0.12000000 lot @115.84000000 sl:115.68900000 tp:115.88500000
2010.11.04 20:10:15 Assisted_Order_Script_2010.11.01 EURJPY,H1: Mevcut EquityAtRisk = 22,44 USD ve Mevcut Lot Boyutu = 0,12 ve Kar Hedefi = 0,3:1 Kar:Zarar oranı için 6,69 USD
2010.11.04 20:10:15 Assisted_Order_Script_2010.11.01 EURJPY,H1: İzin verilen maksimum EquityAtRisk = 23,00 $ ve Maks hesaplanan Lotsize = 0,123
2010.11.04 20:10:15 Assisted_Order_Script_2010.11.01 EURJPY,H1 girişleri: Order_Type="BUY STOP"; OpenBidPrice=115.827; StopLossBidPrice=115.689; Kar Al TeklifFiyatı=115,885; MaxPercentEquityAtRisk=1; MinLotOverRide=yanlış;
 

NZDJPY buystop örneğini de yaptım:

2010.11.04 20:14:16 Assisted_Order_Script_2010.11.01 NZDJPY,H1: açık #155714279 buy stop 0.10 NZDJPY at 64.319 sl: 64.134 tp: 64.460 tamam
2010.11.04 20:14:15 Assisted_Order_Script_2010.11.01 NZDJPY,H1: denendi OP_BUYSTOP 0.10000000 lot @64.31900000 sl:64.13400000 tp:64.46000000
2010.11.04 20:14:15 Assisted_Order_Script_2010.11.01 NZDJPY,H1: Mevcut EquityAtRisk = 22,90 USD ve Mevcut Lot Boyutu = 0,1 ve Kar Hedefi = 0,8:1 Kar:Zarar oranı için 17,45 USD
2010.11.04 20:14:15 Assisted_Order_Script_2010.11.01 NZDJPY,H1: İzin verilen maksimum EquityAtRisk = 23,00 $ ve Maksimum hesaplanan Lotsize = 0.1004
2010.11.04 20:14:15 Assisted_Order_Script_2010.11.01 NZDJPY,H1 girişleri: Order_Type="BUY STOP"; OpenBidPrice=64.297; StopLossBidPrice=64.134; TakeProfitBidFiyat=64.46; MaxPercentEquityAtRisk=1; MinLotOverRide=yanlış;

Şimdi, 64.297 olan giriş emri fiyatı, mevcut piyasa fiyatına çok yakındı, bu nedenle, güvenilir sipariş rutini, giriş fiyatını bu nedenle 64.319'a taşıdı, ancak yine de makul bir 0.10 lot boyutu alıyorum.

Bu noktada, içerme dosyalarını nasıl uyguladığınıza ve/veya çıktıları nasıl kullandığınıza ilişkin kodunuzda bir sorun olduğu sonucuna varmak zorunda kalacağım. Bunu daha fazla takip edebilmem için incelemem için kodu yüklemeniz gerekecek.

 

Evet, bu USD cinsinden bir demo hesap , 1:100 kaldıraç oranı. Tamam, AL DURDUR olarak EURJPY'de çalıştırdım, görünüşe göre bu sefer iyi rakamlar aldık. Uzman günlüğü diyor ki:


2010.11.04 21:37:18 Assisted_Order_Script_2010.11.01 EURJPY,H1: kaldırıldı
2010.11.04 21:37:18 Assisted_Order_Script_2010.11.01 EURJPY,H1: uninit neden 0
2010.11.04 21:37:18 Assisted_Order_Script_2010.11.01 EURJPY,H1: açık #155719095 satın alma stop 0.11 EURJPY at 115.843 sl: 115.689 tp: 115.885 tamam
2010.11.04 21:37:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: denendi OP_BUYSTOP 0.11000000 lot @115.84300000 sl:115.68900000 tp:115.88500000
2010.11.04 21:37:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: Mevcut EquityAtRisk = 20.95 USD ve Mevcut Lot Boyutu = 0.11 ve Kar Hedefi = 0.3:1 Kar:Zarar oranı için 5,71 USD
2010.11.04 21:37:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: İzin verilen Maks.
2010.11.04 21:37:16 Assisted_Order_Script_2010.11.01 EURJPY,H1 girişleri: Order_Type="BUY STOP"; OpenBidPrice=115.827; StopLossBidPrice=115.689; Kar Al TeklifFiyatı=115,885; MaxPercentEquityAtRisk=1; MinLotOverRide=yanlış;
2010.11.04 21:36:23 Assisted_Order_Script_2010.11.01 EURJPY,H1: başarıyla yüklendi
2010.11.04 21:34:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: kaldırıldı
2010.11.04 21:34:11 Assisted_Order_Script_2010.11.01 EURJPY,H1: başarıyla yüklendi



... ve bekleyen buystop emrini 0.11 lot olarak verdi. mükemmel. Evet, sanırım kodumda bir şeyler "sıkıldı", dediğiniz gibi... lol. Yine de kodunuzu koyarken çok dikkatliydim... bu ne olabilirdi. Tamam, burada biraz hata ayıklama yapacağım ve size haber vereceğim. Seni rahatsız ettiğim için özür dilerim Phillip!


teşekkürler

Shawn

 

Az önce yayınladığın yeni versiyonunla yeniden başlamalı mıyım, Phillip?


Shawn

 

En son olanı kullanmak mantıklı, öyleyim.

 

Merhaba Phillip, birkaç gün önce yayınladığınız en son sürümünüze yükseltmek için EA'mı tekrar ameliyat etmek üzereydim, ancak bu gönderiyi tekrar okuduktan sonra... bana çok sayıda soru bıraktı. EA'mı yırtmadan önce sana sormam gerektiğini düşündüm:


(1) 2 yeni içerme dosyası olduğundan bahsediyorsunuz:


Analyze_Currency_Symbol_2010.10.29.mqh (34.54 KB)

Trade_Position_Management_2010.10.29.mqh (26.68 KB)


... eski StopLoss_Manager_2010.05.24.mqh ne olacak? Yeni sürümünüzde bu dosyaya artık ihtiyaç yok mu?


(2) Nerede diyorsunuz:


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

#include <OrderReliable_2010.10.12.mqh>

#include <Trade_Position_Management_2010.10.29.mqh>"


... bu yeni bir sürüm mü yoksa OrderReliable mı? LibOrderReliable.mqh kullanıyordum. Bununla bir şey değişti mi? Ayrıca yeni Analyze_Currency_Symbol_2010.10.29.mqh dosyasını da eklememiz gerekmiyor mu?


(3) Bu kod satırında, yeni sürümünüzü kullanırken eklemeniz gerektiğini söylüyorsunuz:


double CurrentLotSize=LotSize(CurrentEquityAtRisk,OpenPrice_ND,StopLossPrice_ND,CurrentOrderType);


... OpenPrice_ND ve StopLossPrice_ND nedir? Bildirmem gereken bu değişkenler mi yoksa dahil etme dosyalarınızda bir yere mi yerleştirilmişler? Ayrıca LotSize fonksiyonunuzun bu yeni versiyonunda parametre sayısı ve sıralaması epey değişti değil mi? Önceki sürümünüzde LotSize çağrısı şuydu:


CurrentLotSize=LotSize(CurrentEquityAtRisk,CurrentStopLossPrice,CurrentOrderType,CurrentSymbolType,CurrentCounterPairForCross);


(4) Önceki sürümünüzü kullanarak kodumda fark ettim, CurrentOrderType=OP_BUY atadım; Gerçekte, bir satın alma durdurma emri yapıyorum. Bu bir fark yaratacak mıydı?



Rahatsız ettiğim için özür dilerim, ama bu şeyler beni biraz şaşırttı.


teşekkürler

Shawn

 

(1) You mention there's 2 new include files:


Analyze_Currency_Symbol_2010.10.29.mqh (34.54 KB)

Trade_Position_Management_2010.10.29.mqh (26.68 KB)


... eski StopLoss_Manager_2010.05.24.mqh ne olacak? Yeni sürümünüzde bu dosyaya artık ihtiyaç yok mu?


Son kullanıcının üzerine çizebileceği eksiksiz bir dosya setine sahip olmasını sağlamak dışında, bu bölümü neden orijinal gönderime eklediğimden gerçekten emin değilim.

Ben şahsen o stoploss manager'ın güncellenmiş bir versiyonunu kullanıyorum ama buradaki konuyla alakası yok, kullanmayı tercih ettiğiniz stoploss prosedürlerini uygulamalısınız. Bu konuya yüklediğim kod bir stoploss içerme dosyasına dayanmıyor, ancak stoploss fiyatını belirlemek için kodunuzu doğru bir şekilde ayarlamanıza ve böylece bunu hisse senedi risk çağrı işlevine gönderebilmenize güveniyor.

(2) Nerede diyorsunuz:


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

#include <OrderReliable_2010.10.12.mqh>

#include <Trade_Position_Management_2010.10.29.mqh>"


... bu yeni bir sürüm mü yoksa OrderReliable mı? LibOrderReliable.mqh kullanıyordum. Bununla bir şey değişti mi? Ayrıca yeni Analyze_Currency_Symbol_2010.10.29.mqh dosyasını da eklememiz gerekmiyor mu?

Bu yeni bir versiyon, bağlantısını bu konunun ilk sayfasının alt kısmındaki yazımın en altına gönderdim (bağlantısını verirdim ama arama BROKEN, argh!)

Yeni sürümü, ecn tipi brokerlerle şeffaf bir şekilde çalışacak şekilde değiştirdim. Siparişlerinizi orderendreliable aracılığıyla gönderin ve komisyoncunun piyasa siparişlerinde SL & TP'yi kabul edip etmediği önemli değil, orderreliable betiği bunu sizin için halleder.

(3) Bu kod satırında, yeni sürümünüzü kullanırken eklemeyi söylediğiniz:


double CurrentLotSize=LotSize(CurrentEquityAtRisk,OpenPrice_ND,StopLossPrice_ND,CurrentOrderType);


... OpenPrice_ND ve StopLossPrice_ND nedir? Bildirmem gereken bu değişkenler mi yoksa dahil etme dosyalarınızda bir yere mi yerleştirilmişler? Ayrıca LotSize fonksiyonunuzun bu yeni versiyonunda parametre sayısı ve sıralaması epey değişti değil mi? Önceki sürümünüzde LotSize çağrısı şuydu:

Evet bunlar, kodunuzun bir noktasında bildirmeniz ve onlara yeni pozisyonu açacağınız piyasa fiyatlarını (OpenPrice_ND) ve stoploss fiyatını (StopLossPrice_ND) atamanız gereken değişkenlerdir.

Alternatif olarak, değişkenlerimi zaten kullanmakta olduğunuzlarla yeniden adlandırabilirsiniz. Bu değişkenleri yer tutucu olarak kabul edin, uygun olduğunda değişkenlerinizi değiştirin.

(4) Önceki sürümünüzü kullanarak kodumda fark ettim, CurrentOrderType=OP_BUY atamıştım; Gerçekte, bir satın alma durdurma emri veriyorum. Bu bir fark yaratacak mıydı?
Sıfır fark yaratır. Önemli olan tek şey, sipariş türünü ilgili çağrı işlevlerine doğru şekilde iletmenizdir. Sipariş türüne bağlı olarak doğru olanı yapmak için zaten kodlanmıştır. Çağrı işlevine doğru sipariş türünü göndermezseniz, çağrı işlevlerinden kesinlikle geçersiz sonuçlar alırsınız.

Bunların hepsi güzel sorular, eğer sormazsan öğrenmeni bekleyemezsin ;)
 
1005phillip :

Son kullanıcının üzerine çizebileceği eksiksiz bir dosya setine sahip olmasını sağlamak dışında, bu bölümü neden orijinal gönderime eklediğimden gerçekten emin değilim.

Ben şahsen o stoploss manager'ın güncellenmiş bir versiyonunu kullanıyorum ama buradaki konuyla alakası yok, kullanmayı tercih ettiğiniz stoploss prosedürlerini uygulamalısınız. Bu konuya yüklediğim kod, bir stoploss içerme dosyasına dayanmıyor, ancak stoploss fiyatını belirlemek için kodunuzu doğru bir şekilde ayarlamanıza ve böylece bunu hisse senedi risk çağrı işlevine gönderebilmenize güveniyor.



>>> Tamam! Kendi stoploss'larım var, bu yüzden buna ihtiyacım yok - kaldıracağım!



Bu yeni bir versiyon, bağlantısını bu konunun ilk sayfasının alt kısmındaki yazımın en altına gönderdim (bağlantısını verirdim ama arama BROKEN, argh!)

Yeni sürümü, ecn tipi brokerlerle şeffaf bir şekilde çalışacak şekilde değiştirdim. Siparişlerinizi orderendreliable aracılığıyla gönderin ve komisyoncunun piyasa siparişlerinde SL & TP'yi kabul edip etmediği önemli değil, orderreliable betiği bunu sizin için halleder.


>>> Tamam, ben zaten OrderSendReliable2Step kullanıyorum, bu yüzden kodumu mevcut LibOrderReliable.mqh kullanarak olduğu gibi bırakacağım. Yine de yeni Analyze_Currency_Symbol_2010.10.29.mqh dosyasını da eklememiz gerekmiyor mu?



Evet bunlar, kodunuzun bir noktasında bildirmeniz ve onlara yeni pozisyonu açacağınız piyasa fiyatlarını (OpenPrice_ND) ve stoploss fiyatını (StopLossPrice_ND) atamanız gereken değişkenlerdir.

Alternatif olarak, değişkenlerimi zaten kullanmakta olduğunuzlarla yeniden adlandırabilirsiniz. Bu değişkenleri yer tutucu olarak kabul edin, uygun olduğunda değişkenlerinizi değiştirin.


>>> Anladım, öyle olduklarını düşündüm. Yaptığım bu yorumu atladınız sanırım --> "LotSize fonksiyonunun bu yeni versiyonunda da parametre sayısı ve sıralaması epey değişti değil mi?"




Sıfır fark yaratır. Önemli olan tek şey, sipariş türünü ilgili çağrı işlevlerine doğru şekilde iletmenizdir. Sipariş türüne bağlı olarak doğru olanı yapmak için zaten kodlanmıştır. Çağrı işlevine doğru sipariş türünü göndermezseniz, çağrı işlevlerinden kesinlikle geçersiz sonuçlar alırsınız.


>>> Tamam!



Bunların hepsi güzel sorular, eğer sormazsan öğrenmeni bekleyemezsin ;)


>>> deniyorum! Philip'e teşekkürler.


Shawn


 

>>> yeni Analyze_Currency_Symbol_2010.10.29.mqh dosyasını da eklememiz gerekmiyor mu?

EA'nızda değil, ancak Ticaret Pozisyonu Yönetimi içerme dosyasından çağrıldığı için dosyaya dahil etme dizininizde ihtiyacınız var.

EA'nıza #include < Trade_Position_Management_2010.10.29.mqh > ekleyerek hem Trade_Position_Management_2010.10.29.mqh hem de Analyze_Currency_Symbol_2010.10.29.mqh ile bağlantı kurdunuz.

>>>Ayrıca LotSize fonksiyonunuzun bu yeni versiyonunda parametre sayısı ve sıralaması epey değişmiş değil mi?

Artık CurrentSymbolType'ı veya CurrentCounterPairForCross'u temel almanıza gerek yok. Artık içeride hallediliyor.

Ticaret Pozisyonu dosyasının içine bakarsanız, hisse senedi risk bölümünü göreceksiniz ve fonksiyonun kullanımına ilişkin yorumlar var. Yardımcı olabilirler, ancak ne kadar açıklayıcı olduklarından emin değiller.

 

Sadece benim başıma gelen bir bug mı?
# include ile bir satır koyarsam MetaEditor mq4 ile hiçbir dosyayı derleyemiyorum.
Ayrıca kodda # include satırı olan mq4 dosyalarını da derleyemedim.
Yalnızca hatları etkinleştirir
# <stderror.mqh> dahil et
# <stdlib.mqh> dahil et
# <WinUser32.mqh>'yi dahil et

Neden: