Heeeelp! heeeelp! - sayfa 4

 
RaptorUK :
Ne yapacağını . . . . aslında 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.

turboya mı turboya mı
 
jameslarry :

turboya mı turboya mı
Tamam eğlenmene bak . . yardım istemiyorsun.
 
İstediğim gibi yapan bir sistemim var yakında sizlerle paylaşacağım
 

Acemi olduğunuz için mümkün olan en basit şeyi istiyor gibi göründüğünüz için, anlaşılması en kolay olanı aradım.

 extern double LotPerThousand= 0.1 ;   // If you had 1000 balance what lot size would you use

int start()
{

double lots;

lots= NormalizeDouble ((LotPerThousand/ 1000 )* AccountBalance() , 2 );
if (lots< MarketInfo ( Symbol (),MODE_MINLOT)){ lots= MarketInfo ( Symbol (),MODE_MINLOT); }
if (lots> MarketInfo ( Symbol (),MODE_MAXLOT)){ lots= MarketInfo ( Symbol (),MODE_MAXLOT); }

...
OrderSend ( Symbol (),OP_BUY,lots,...)
...

return 0 ;
}
 
tonny :
Acemi olduğunuz için mümkün olan en basit şeyi istiyor gibi göründüğünüz için, anlaşılması en kolay olanı aradım.
Maalesef tonny lot boyutu minlot ile maxlot VE katları lotStep arasında olmalıdır.
 double NormalizeLots( double lots, string pair= "" ){
     if (pair == "" ) pair = Symbol ();
     double   lotStep     = MarketInfo (pair, MODE_LOTSTEP),
            minLot      = MarketInfo (pair, MODE_MINLOT);
    lots            = MathRound (lots/ls) * ls;
     if (lots < minLot) lots = 0 ;     // or minLot
     return (lots);
}
 
tonny :

Acemi olduğunuz için mümkün olan en basit şeyi istiyor gibi göründüğünüz için, anlaşılması en kolay olanı aradım.


Bingo! Tonny bu tam olarak istediğim şey, strateji test cihazında çalışıyor ve yüzdeyi koruyarak parti boyutunu otomatik olarak artırıyor. Sayısız if ifadesiyle öncekinden daha iyi, hepinize çok teşekkürler! :-)
 
Pekala, matematiği hatırlıyorum, eğer a b ise, c o zaman nerede? formül (b/a)*c olur, bu durumda c hesap bakiyenizdir . Ve sonuç a:d oranına uyuyor, yani diyelim ki sonuç d, o zaman a:b, c:d ile aynı ve b:a, d:a ile aynı oran. Ardından, hesaplamaların ikiden daha fazla ondalık basamak döndürmesi durumunda, iki ondalık basamak yuvarlanmış bir lot değeri elde etmek için formülü iki katına çıkarın, bu da orderend'in geçersiz bir lot boyutu olarak reddedilir. Buradan, bu değerin gereken minimum lottan düşük olup olmadığını kontrol edin, eğer öyleyse gereken minimumu kullanın ve gereken maksimum lottan yüksekse, lot değeri olarak maksimumu kullanın.
/* new value of lot would be (old lot/old balance)*new balance in this case we fix old balance at 1000 and new balance is the current balance i.e. (LotPerThousand/1000)*AccountBalance() */

lots= NormalizeDouble ((LotPerThousand/ 1000 )* AccountBalance (), 2 );                             // round two 2 decimal places incase more than 2 decimal places is returned
if (lots< MarketInfo ( Symbol (),MODE_MINLOT)){ lots= MarketInfo ( Symbol (),MODE_MINLOT); }         // if lower than minimum required use the minimum
if (lots> MarketInfo ( Symbol (),MODE_MAXLOT)){ lots= MarketInfo ( Symbol (),MODE_MAXLOT); }         // if higher than maximum required use the maximum
 
Çok teşekkürler!
 
WHRoeder :
Üzgünüm tonny lot büyüklüğü minlot ile maxlot VE katları lotStep arasında olmalıdır.

sevgili WHRoeder lütfen içinde bolca hata olan kodlar vererek insanları yanlış yönlendirmeyin, kodda ls nesnesi tanımlamamışsınız ve onu kullanması için birine veriyorsunuz, lütfen yaramazlıklarınızı durdurun

 
tonny :

Acemi olduğunuz için mümkün olan en basit şeyi istiyor gibi göründüğünüz için, anlaşılması en kolay olanı aradım.


tonny verdiğin kod için çok teşekkürler, gerçekten çok işe yaradı



2 günden beri onu buluyordum ve hatta karımla tartıştım!


Teşekkürler

Neden: