Heeeelp! heeeelp! - sayfa 3

 
Sabit bir parti büyüklüğü belirlersem her şey yolunda gider ama ben dinamik bir parti büyüklüğü istiyorum. Bu yüzden yukarıdaki senaryoyu düşündüm ama çalışmıyor ve sorunu bilmiyorum. @raptor Kaldıraç oranım 1:100 olduğu için 0.1 lot olduğunu anladığım 1000$'lık bakiyenin 100$'ını kullanmak istiyorum ancak dinamik olmasını istiyorum, böylece sistem kârı ve bakiyesi yükselirse yeni bakiye 2000$ olursa diyelim ki şimdi açılmasını istiyorum belirlediğim yüzdeye göre 200$ (0,2 lot) ile işlem yapıyor, yani %10, %20 veya belirlediğim herhangi bir bakiye/marj. @ onewithzachy sabit lot büyüklüğü ayarlarsam çalıştığı için sipariş sonu iyidir, yani
 double lots= 0.1 ;
fakat aşağıdaki gibi dinamikleştirmeye çalıştığımda yanlış parti büyüklüğü diyor. Hesabım mikro ve minimum 0.01 lotu destekliyor.
 extern int LotPercentage= 10 ; // use 10% of balance as lot size

int start()
{

double LotInBalance=(LotPercentage/ 100 )* AccountBalance (); // find the amount that is 10% of balance lets assume its $1000
double LotUnits=LotBalance* AccountLeverage (); // multiply this 10% balance($100) by leverage to get lot units
double lots= NormalizeDouble ((LotUnits/ 100000 ), 2 ); // expected to return 0.1
/* divide this lot units by 100,000(standard lot size units) and normalize to 2 decimal places to get something like 0.1 if account balance is say $1000 for use in ordersend()*/

...

return 0 ;

}
Ayrıca bu, daha da basitken aynı hatayı döndürür

double lots;
double Balance= AccountBalance ();
if (Balance<= 500 ){lots= 0.1 ;}                 // If my account has $500 or less the lot will be 0.1
if (Balance< 1500 &&Balance> 1000 ){lots= 0.3 ;}
if (Balance< 2500 &&Balance> 2000 ){lots= 0.5 ;}
if (Balance< 3500 &&Balance> 3000 ){lots= 0.7 ;}
if (Balance< 4500 &&Balance> 4000 ){lots= 0.9 ;}
if (Balance< 5500 &&Balance> 5000 ){lots= 1.1 ;}
if (Balance< 6500 &&Balance> 6000 ){lots= 1.3 ;}
if (Balance< 7500 &&Balance> 7000 ){lots= 1.5 ;}
if (Balance< 8500 &&Balance> 8000 ){lots= 1.7 ;}
if (Balance< 9500 &&Balance> 9000 ){lots= 1.9 ;}
if (Balance> 10000 ){lots= 2 ;}                       // If account balance if over 10000 lot is 2

if ( /*opening criteria met*/ ){
OrderSend ( Symbol (),OP_BUY,lots,...)
}
Lütfen daha iyi anlamak için koda eklediğim yorumları okuyun.
 

BUNU GERÇEK PARA İLE YAPMAYIN.

%10 KAYBETMEK İSTER MİSİNİZ yoksa %10 OLARAK AÇIK POZİSYON MU? (cevap: ilki!)

 double lots;                               // <<== value is zero
double Balance= AccountBalance ();

if (Balance<= 500 ){lots= 0.1 ;}                 // What the lots if Balance > 500 && <= 1000 ?

if (Balance< 1500 &&Balance> 1000 ){lots= 0.3 ;}   // read this carefully : if balance bigger than but not equal with 1000
                                           // AND balance also smaller but not equal than 1500.
                                           // Question : what's the lot if balance equal with 1000 and 1500 ?
 

Birinin hesabına 1000$ yatırabileceği şekilde %10 ile pozisyon açmak ve 0.1 lot ile pozisyon açmak istiyorum(kaldıraç 1:100 ise %10).

onewithzachy haklısın, onu aşağıda değiştirdim ve işe yaradı ama strateji testi daha zayıf çıktı, sanırım sabit lotları kullanmak en iyisi.

 double Balance= AccountBalance ();
if (Balance<= 500 ||(Balance> 500 &&Balance< 1000 )){lots= 0.1 ;}
if ((Balance<= 1500 &&Balance>= 1000 )||(Balance> 1500 &&Balance< 2000 )){lots= 0.3 ;}
if ((Balance<= 2500 &&Balance>= 2000 )||(Balance> 2500 &&Balance< 3000 )){lots= 0.5 ;}
if ((Balance<= 3500 &&Balance>= 3000 )||(Balance> 3500 &&Balance< 4000 )){lots= 0.7 ;}
if ((Balance<= 4500 &&Balance>= 4000 )||(Balance> 4500 &&Balance< 5000 )){lots= 0.9 ;}
if ((Balance<= 5500 &&Balance>= 5000 )||(Balance> 5500 &&Balance< 6000 )){lots= 1.1 ;}
if ((Balance<= 6500 &&Balance>= 6000 )||(Balance> 6500 &&Balance< 7000 )){lots= 1.3 ;}
if ((Balance<= 7500 &&Balance>= 7000 )||(Balance> 7500 &&Balance< 8000 )){lots= 1.5 ;}
if ((Balance<= 8500 &&Balance>= 8000 )||(Balance> 8500 &&Balance< 9000 )){lots= 1.7 ;}
if ((Balance<= 9500 &&Balance>= 9000 )||(Balance> 9500 &&Balance< 10000 )){lots= 1.9 ;}
if (Balance> 10000 ){lots= 2 ;} 
 
jameslarry :
Sabit bir parti büyüklüğü belirlersem her şey yolunda gider ama ben dinamik bir parti büyüklüğü istiyorum. Bu yüzden yukarıdaki senaryoyu düşündüm ama çalışmıyor ve sorunu bilmiyorum. @raptor Kaldıraç oranım 1:100 olduğu için 0.1 lot olduğunu anladığım 1000$'lık bakiyenin 100$'ını kullanmak istiyorum ancak dinamik olmasını istiyorum, böylece sistem kârı ve bakiyesi yükselirse yeni bakiye 2000$ olursa diyelim ki şimdi açılmasını istiyorum belirlediğim yüzdeye göre 200$ (0,2 lot) ile işlem yapıyor, yani %10, %20 veya belirlediğim herhangi bir bakiye/marj. @ onewithzachy orderend iyi, çünkü sabit lot büyüklüğü ayarladığımda çalışıyor ama aşağıdaki gibi dinamikleştirmeye çalıştığımda yanlış lot büyüklüğü diyor. Hesabım mikro ve minimum 0.01 lotu destekliyor. Ayrıca bu, daha basit olmasına rağmen aynı hatayı döndürür. Lütfen daha iyi anlamak için koda eklediğim yorumları okuyun.
Sanırım işlerin nasıl yürüdüğü konusunda büyük bir yanlış anlıyorsunuz. . . Marj gereksinimi ve Risk aynı şey değildir. . . 100$'lık bir Marj gereksinimine dayalı bir pozisyon boyutu oluşturursanız ve işleminiz kaybederse, 100$'dan çok daha fazlasını veya daha azını kaybedebilirsiniz. . . Marj gereksinimi kaldıraçla değişir. . . Risk yok.
 
Hayır bekle biraz turbo ekledi, yanlış test ettim. Tonlarca if ifadesi yerine tek bir formül kullanarak hesaplayabilseydim harika olurdu. Bir formül elde etmek mümkün mü?
 
tamam bazı durumlarda riskli, örneğin 2012'de turbo ile kaybedebilirdi ama onsuz kazanabilirdi
 
En güvenli yol hangisidir?
 
jameslarry :
Hayır bekle biraz turbo ekledi, yanlış test ettim. Tonlarca if ifadesi yerine tek bir formül kullanarak hesaplayabilseydim harika olurdu. Bir formül elde etmek mümkün mü?
Evet, puanlarınızı bir grafik üzerine çizin ve sonra bunun için y = mx + c biçiminde doğrusal bir denklem oluşturabilirsiniz.
 
jameslarry :
En güvenli yol hangisidir?
Ne yapacağını . . . . tam olarak ne yapmak istediğini açıklamamışsın . özel sorular sorulmasına rağmen. . . Size yardım edilebilmesi için sorulan soruları görmezden gelirseniz, çok hızlı bir şekilde görmezden gelinirsiniz.