SL ve Hesap Riskine dayalı para yönetimi LOT boyutu formülüne ihtiyacınız var! - sayfa 2

 
maleas_k :

Soruyu doğru anladıysam, bu sizin için işi yapacak.


çift serbest = AccountFreeMargin();

çift potansiyel_kayıp,

çift toplam_potencial_loss = 0

çift pip, lot_size;

çift yüzde_depo = 5;

potencial_loss = (OrderLots() * (OrderOpenPrice() - OrderStopLoss()))*100000;
sum_potencial_loss = long_sum_potencial_loss + long_potencial_loss;

lot_size = ((((free-long_sum_potencial_loss) * yüzde_depo)/100.0)/pips)/100000 ;



Teşekkürler ama formül zaten bende, sadece puan değerini düzeltmem gerekiyor çünkü USD değil EUR hesabım var.Kod şu:

 extern double MYSTOPLOSS = 50;  // CUSTOM SL SIZE IN PIPS AFTER THE STOPLEVEL
extern double RISK =2; // 2% ACCOUNT RISK

double LOT =( AccountEquity ()*RISK)/( 100 *( MarketInfo ( Symbol (), MODE_STOPLEVEL )+MYSTOPLOSS)* Point * 100000 );

Ve Noktayı TICKVALUE* TICKSIZE ile değiştirmem gerekiyor, böylece şöyle görünecek

 extern double MYSTOPLOSS = 50;  // CUSTOM SL SIZE IN PIPS AFTER THE STOPLEVEL
extern double RISK =2; // 2% ACCOUNT RISK

double LOT =( AccountEquity ()*RISK)/( 100 *( MarketInfo ( Symbol (), MODE_STOPLEVEL )+MYSTOPLOSS)* MarketInfo (Symbol(), MODE_TICKVALUE )* 
MarketInfo (Symbol(), MODE_TICKSIZE )  * 100000 );

Eğer biri bu fikrin doğru olduğunu onaylayabilirse, o zaman sorun çözülmüştür sanırım. O yüzden lütfen bana çabuk yardım edin ve ardından Mutlu Noeller!

 
RaptorUK :

Kodunuzu kaldırdım. . . .


Yardımın için teşekkürler.
 
Proximus :

Teşekkürler ama formül zaten bende, sadece puan değerini düzeltmem gerekiyor çünkü USD değil EUR hesabım var.Kod şu:

Ve Noktayı TICKVALUE* TICKSIZE ile değiştirmem gerekiyor, böylece şöyle görünecek

Eğer biri bu fikrin doğru olduğunu onaylayabilirse, o zaman sorun çözülmüştür sanırım. O yüzden lütfen bana çabuk yardım edin ve ardından Mutlu Noeller!

Onaylayamıyorum ama Alert(); ile hata ayıklamayı öneriyorum. bunun gibi ?

 Alert ( "LOT : " ,LOT);

veya

Alert("AccountEquity : ",(AccountEquity()," RISK : " ,RISK," MODE_STOPLEVEL : ", MODE_STOPLEVEL," MYSTOPLOSS : ",MYSTOPLOSS," MODE_TICKVALUE : " ,MODE_TICKVALUE," MODE_TICKSIZE : ,MODE_TICKSIZE);

Ve bunu kendiniz onaylayacaksınız.

 
maleas_k :

Yardımın için teşekkürler.
Düzenleme yaptığınız için teşekkürler
 
maleas_k :

Onaylayamıyorum ama Alert(); ile hata ayıklamayı öneriyorum. bunun gibi ?

veya

Ve bunu kendiniz onaylayacaksınız.


Hayır, demek istediğim WHRoeder'ın önerdiği gibi TICKVALUE* TICKSIZE veya TICKVALUE/ TICKSIZE kullanmak doğru, çünkü * orada daha mantıklı görünüyor. O halde hangisi doğru, hesabım EUR olduğu için bakarız. temel para birimi teklif değil mi?

 

Proximus : WTF guys, shouldnt that be TICKVALUE * TICKSIZE instead of TICKVALUE /TICKSIZE ? I think there is a big mistake there

 double LOT =( AccountEquity ()*RISK)/( 100 *( MarketInfo ( Symbol (), MODE_STOPLEVEL )+MYSTOPLOSS)* Point * 100000 );
  1. Örneğin USD hesap para birimi ile EURUSD.
    TickValue 10$ ve Ticksize=0,0001 ise. Orada, eğer piyasa 0,0020 hareket ederse, değer 10$/0,0001 * 0,0020=200$ / lot başına olur. Pip başına 10$ * 20 pip / lot başına.
    TickValue $1 ve Ticksize=0.00001 ise. Orada, piyasa 0,0020 hareket ederse, değer yine de 1$/0,00001 * 0,0020=200$/lot başına olur. Burada hata yok.
  2. Sahte 100 * stoploss, StopLevel, Point * 10000 vb. olan sizin denkleminizdir . Orijinal denklemimi tekrar okuyun ve lot boyutu için çözün
 

Tamam, (maks) HACİM BOYUTU HESAPLAMA adımları bunlar olmalıdır:

(yanılıyorsam lütfen düzeltin ^_^)

AccountMoneyRisk = AccountMoney * Risk%

AccountCounterQuote = Alıntı(AccountCurrency/CounterCurrency)

CounterCurrencyRisk = AccountMoneyRisk * AccountCounterQuote

PipValue = CounterCurrencyRisk / StopLoss

LotTickValue = LotSize * TickSize

Hacim = PipValue * LotTickValue


Misal:

Hesap Para Birimi: EUR
Döviz Çifti: GBPUSD
Temel Para Birimi: GBP
Karşı Para Birimi: USD

Hesap Parası: 5000 EUR
Risk: %1

StopLoss: 200 pip (Karşı Para Birimi)
LotSize: 100000 (Karşı Para Birimi)
Kene Boyutu: 0.00001

AccountMoneyRisk = AccountMoney * Risk% = 5000 EUR * %1 = 50 EUR

AccountCounterQuote = Alıntı(AccountCurrency/CounterCurrency) = Alıntı(EUR/USD) = 1.5000

CounterCurrencyRisk = AccountMoneyRisk * AccountCounterQuote = 50 EUR * 1.5000 = 75 USD

PipValue = CounterCurrencyRisk / StopLoss = 75 / 200 = 0,375

LotTickValue = LotSize * TickSize = 100000 * 0.00001 = 1 USD

Hacim = PipDeğeri * LotTickValue = 0,375 * 1 USD = 0,375



 

Bu, CounterCurrency'in AccountCurrency ile aynı olduğunu ve spread'i içermediğini varsayar ve hatalı olarak bir pip == 5 haneli bir komisyoncu üzerinde bir nokta ve bu ticksize == noktası olduğunu varsayar.

Şart değil. Hesap Bakiyesi * yüzde = RİSK = (OrderOpenPrice - OrderStopLoss)*DIR * OrderLots * DeltaPerlot (Not OOP-OSL, SPREAD'i içerir)

 

Tamam, bu son sürüm, lütfen doğru olup olmadığını onaylayın, benim durumumda açıkça çalışmadığı halde neden DeltaPerlot şeylerinizde ısrar ettiğinizi anlamıyorum, çünkü EUR hesabım var.

Bu benim parti boyutlandırma fonksiyonum:

 extern int STOPSLIP= 20 ;
extern double RISK= 0.5 ;

double LOT()
{
double clot=( AccountEquity ()*RISK)/( 100 *( MarketInfo ( Symbol (), MODE_STOPLEVEL )+ MarketInfo ( Symbol (), MODE_SPREAD )+STOPSLIP)* MarketInfo ( Symbol (), MODE_TICKVALUE )* MarketInfo ( Symbol (), MODE_TICKSIZE ) * 100000 );

if (clot< MarketInfo ( Symbol (), MODE_MINLOT )) clot= MarketInfo ( Symbol (), MODE_MINLOT );
if (clot> MarketInfo ( Symbol (), MODE_MAXLOT )) clot= MarketInfo ( Symbol (), MODE_MAXLOT ); 
   return (clot);
} 
  • STOPSLIP, mevcut stoplevel+SPREAD'e X miktarında pip ekler
  • TICKVALUE * TICKSIZE kullanıyorum çünkü USD değil EUR hesabım var, bu nedenle 5 haneli brokerimde pip değerinin 0,00001 yerine 0,00001 olması mantıklı çünkü EUR döviz kurunda sayılıyor
Bu yüzden lütfen birisi doğru olup olmadığını teyit edebilir veya değilse lütfen formülümü düzeltin, bana diğer gönderilere bağlantılar vermeyin, çünkü onları anlamıyorum, sadece LOT() işlevimi düzeltin ve o zaman mutlu olurum, lütfen yardım edin !
 
double clot=( AccountEquity ()*RISK)/( 100 *( MarketInfo ( Symbol (), MODE_STOPLEVEL )+ MarketInfo ( Symbol (), MODE_SPREAD )+STOPSLIP)
            * MarketInfo ( Symbol (), MODE_TICKVALUE )* MarketInfo ( Symbol (), MODE_TICKSIZE ) * 100000 );

Bu, parantezleri çözmeye çalışırken bana bir baş ağrısı veriyor!

Dürüst olmak gerekirse, burada neyi başarmaya çalıştığınız konusunda kesinlikle hiçbir fikrim yok.

MODE_STOPLEVEL veya SPREAD'in ne kadar alakalı olduğunu göremiyorum, elbette hesaplamalarınızı mevcut fiyattan stop-loss mesafesine dayandırmalısınız?

Hesap para biriminin ne olduğu fark etmemelidir, TICKVALUE hesap para biriminde olduğu için hesaplama aynı olmalıdır.

Lütfen unutmayın, kod satırınızı 2 satıra koyarak yazı o kadar geniş değil ve sağa sola kaydırmadan okumayı kolaylaştırıyor :)