% mevduattan doğru lot hesaplaması - sayfa 3

 
7bec :

ama kesinlikle AccountBalance olmalı, AccountFreeMargin değil , o zaman uzman birden fazla lotla çalışmıyorsa ne olur?

dört yıllık bir gönderiye soru sormadan önce uzun süre düşündünüz mü? Gerçekten sana cevap vereceğini düşünüyor musun?
 
zoritch :

dört yıllık bir gönderiye soru sormadan önce uzun süre düşündünüz mü? Gerçekten sana cevap vereceğini düşünüyor musun?
ve aniden şanslı
 
7bec :

ama kesinlikle AccountBalance olmalı, AccountFreeMargin değil , o zaman uzman birden fazla lotla çalışmıyorsa ne olur?

Bu işlevi kullanmamalısınız, burada 2010 yazında sevdiğim tüm işlevden bahsediyorum. Çünkü daha iyi yazdırabilir
 
wenay :

Bu işlevi kullanmamalısınız, burada 2010 yazında sevdiğim tüm işlevden bahsediyorum. Çünkü daha iyi yazdırabilir


Örneğin? Akşamları internette bulduklarımdan en çok bunu beğendim.

Tabii ki, herhangi bir kod süresiz olarak mükemmelleştirilebilir, ancak en iyisi, iyinin düşmanıdır;)

 

Merhaba, kesinlikle yargılamayın.. MQL4 programlama konusunda uzman değilim, bu yüzden ipuçları arıyorum...

3. gün, lotu hesaplamak için bir komut dosyası yazmak konusunda kafamı kırıyorum, fikrim şu: 1000 $ (şartlı) bir depozito olması, lot 0,05 olacak (aslında 20000'e bölünerek)

EURUSD, GBPUSD, AUDUSD, NZDUSD çiftleri ile çalışırken (yani, mevduat para biriminde satın aldığınızda) bununla ilgili her şey yolundadır .... ama CADJPY (veya USDRUR) için lotu nasıl doğru bir şekilde hesaplayabilirsiniz .. aynı 1000 dolar bugün dönüyor ) 113.000 yen veya 38.700 ruble'de, bu durumda çok fazla olmayacak 5.65 ve 0.19 ... Bir şey kazandım, neyi kaçırıyorum ???? bana nerede kazacağımı söyle .. şakayı bırak ve sonra trol!

 
gochu :

Merhaba, kesinlikle yargılamayın.. MQL4 programlama konusunda uzman değilim, bu yüzden ipuçları arıyorum...

3. gün, lotu hesaplamak için bir komut dosyası yazmak konusunda kafamı kırıyorum, fikrim şu: 1000 $ (şartlı) bir depozito olması, lot 0,05 olacak (aslında 20000'e bölünerek)

EURUSD, GBPUSD, AUDUSD, NZDUSD çiftleri ile çalışırken (yani, mevduat para biriminde satın aldığınızda) bununla ilgili her şey yolundadır .... ama CADJPY (veya USDRUR) için lotu nasıl doğru bir şekilde hesaplayabilirsiniz .. aynı 1000 dolar bugün dönüyor ) 113.000 yen veya 38.700 ruble'de, bu durumda çok fazla olmayacak 5.65 ve 0.19 ... Bir şey kazandım, neyi kaçırıyorum ???? bana nerede kazacağımı söyle .. şakayı bırak ve sonra trol!


Göreve biraz farklı bir açıdan bakın: Mevduat para biriminde belirli bir miktar fona eşdeğer bir sürü kullanın.

İşte sözleşmenin büyüklüğüne bağlı olarak lotu hesaplamak için bir komut dosyası. Sözleşme boyutu mevduat para biriminde belirlenir.

Dosyalar:
 

Aşağıda bir ticaret için lot hesaplama yöntemim yer almaktadır (kod MQL4 güncellemesinden öncedir, dolayısıyla #property katı olmadan):

 extern double DealLevel = 5.0 ; // процент свободной маржи для сделки
//---
double LotDeal = NormalizeDouble (TradedLotFunc(DealLevel), 2 );

//--- TradedLotFunc() - start ----- сама функция
double TradedLotFunc( double Deal_f)
{  
   double MinLot_f  = MarketInfo ( Symbol (), MODE_MINLOT );
   double MaxLot_f  = MarketInfo ( Symbol (), MODE_MAXLOT );
   double LotStep_f = MarketInfo ( Symbol (), MODE_LOTSTEP );
   double LotSize_f = MarketInfo ( Symbol (), MODE_LOTSIZE );
   int     Leverage_f= AccountLeverage ();
   //---
   int     i, coef; 
   double HighBorder;
   //---
   if (Deal_f<= 0.0 )   return (MinLot_f);
   if (Deal_f> 100.0 ) Deal_f= 100.0 ;
   double TradedLot=( AccountFreeMargin ()*Deal_f/ 100 )*Leverage_f/LotSize_f;
   if (TradedLot<=MinLot_f) return (MinLot_f);
   if (LotStep_f== 0.001 || LotStep_f== 0.01 || LotStep_f== 0.1 || LotStep_f== 1.0 )
      TradedLot= MathRound (TradedLot/LotStep_f)*LotStep_f;
   else
   {   if (((TradedLot-MinLot_f)/LotStep_f)<= 5.0 ) coef= 1 ;
       else coef= MathRound ((TradedLot-MinLot_f)/LotStep_f)- 3 ;
       for (i= 0 ; i<= 100 ; i++)
      {  HighBorder=MinLot_f+(LotStep_f*coef)+(LotStep_f*i);
         if (TradedLot> HighBorder) continue ;
         if (TradedLot==HighBorder) break ;
         if (TradedLot< HighBorder)
         {   if ( MathAbs (HighBorder-TradedLot)<= MathAbs (TradedLot-(HighBorder-LotStep_f)))
            {  TradedLot=HighBorder; break ; }
             else
            {  TradedLot=HighBorder-LotStep_f;   break ; }
   }  }  }
   if (TradedLot>=MaxLot_f) return (MaxLot_f);
   return (TradedLot);
}
//--- TradedLotFunc() - end -----
 

ve TradedLotFunc() her zaman sıfırdan fazlasını mı döndürür?

değilse, kodun devamı saçmalıktır if (Deal_f<= 0.0 ) return (MinLot_f); - Parti üyesi misiniz? ..ve makineli tüfek yeniden ateşlendi ..

(TradedLot<=MinLot_f) dönerse ( MinLot_f ); - Parti üyesi misiniz? ..ve makineli tüfek yeniden ateşlendi ..

---------------------

Genel olarak, işlevin doğru çalıştığını hayal edersek, ticaret hesabında ilk ve tek emri açmak pek uygun değildir..

sadece mevcut açık pozisyonları veya açılan emrin zararı durdurmayı hesaba katmadığı için, yani bu bir okul seçeneğidir.

ve gerçek hayatta ticaret yapan tek bir aklı başında insan bu iyiliği kullanmaz..

 

İpuçları için teşekkürler, ama sorumu tam olarak doğru formüle edemedim .... Kayıp / çalınan para miktarından başlamak istiyorum, lotu hesaplamak için. Açıkçası euro.bucks ve pound.bucks marjı farklı, ama tam olarak gitmek istediğim yer bu değil. İdeal olarak, parametreleri girdi olarak alacak bir fonksiyon almalıyım:

1- mevduat para birimi (dolar ve euro'ya bakacağım),

2- mevduat tutarı (1000)

3- İşlem yapacağım parite (CADJPY ve USDCHF'yi kontrol etmek istiyorum),

4- Geçerken mevduatın yüzde azalması (%2 varsayın)

5- belirli sayıda pip (4 basamaklı platformlar için 100 pip ve beş basamaklı platformlar için 1000 pip).

Çıkış parametresi olarak parti boyutunu almak istiyorum.

Yani, (ters kotasyonlu çiftler için her şey açıktır, EURUSD, GBPUSD, AUDUSD, NZDUSD, yani eğer karşıt para mevduat para birimi ise) ...

1000 dolar depozito ile para birimi 100 (4 hane) / 1000 pip (5 hane) geçtiğinde %2 (yani 20 dolar) kaybettim/kazandım, çok fazla 0.02 kullanmalıyım.

(Tekrar ediyorum, GBPUSD'de işlem yapmak için EURUSD'den daha fazla fon kullanılacağı açıktır, hatta NZDUSD'den daha fazla, ancak fonları kullanmamak benim için önemlidir, ancak nominal kayıp / veya kar ... söyle bana ne atlıyorum ... kafam tamamen yemek yapmıyor ... ne kadar yaklaşık bir hafta olursa olsun, bu problemle ne kadar uğraşırsam uğraşayım). Karşı para birimindeki kayıp miktarını hesaplamam gereken noktaya geldim. burada ... Yardımın için minnettar olacağım!

 
gochu :

İpuçları için teşekkürler, ama sorumu tam olarak doğru formüle edemedim .... Kayıp / çalınan para miktarından başlamak istiyorum, lotu hesaplamak için. ...

MODE_TICKVALUE istek kimliğiyle https://docs.mql4.com/en/marketinformation/marketinfo işlevine bakın