[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 149

 

lütfen acemi birine söyle, AccountBalance() - bakiyedeki fon miktarını gösterir ve benim hesaplanan bakiyemi (calc_balance) hesaplamam gerekiyor,

özü basittir, ancak henüz yazıya uygun değildir, toplam açık ve bekleyen emir sayısı (Ordertotal), örneğin 3 adet, açık pozisyon başına maksimum risk% 2'dir,

bir sonraki anlaşmayı açmak için maks. uzlaştırma bakiyesinin riski (%2), yani. formülün mantığı yaklaşık olacaktır: calc_balance=AccountBalance()-2%-2%-2%,

yani sıralı çıkarma - ancak kodda nasıl yazılacağı henüz mümkün değil, yardımlarınızı bekliyorum.

Şimdiden teşekkürler!

 
Equity (AccountEquity() ) ve Marjın (AccountMargin() ) Alış ve Satış pozisyonları için ayrı ayrı nasıl olduğunu söyleyin?
 
TG :
Equity (AccountEquity() ) ve Marjın (AccountMargin() ) Alış ve Satış pozisyonları için ayrı ayrı nasıl olduğunu söyleyin?
AccountEquity() sadece hesabınız için ve AccountMargin() sizin koşullarınızla mümkündür, Kim'in çok "Faydalı Fonksiyonları"na bakın!
 
Beyler, birisi D1'de destek ve direnç seviyelerini tercihen gecikmesiz olarak ayarlayan bir gösterge veya danışman önerebilir mi)))
 
Top2n :
Beyler, birisi D1'de destek ve direnç seviyelerini tercihen gecikmesiz olarak ayarlayan bir gösterge veya danışman önerebilir mi)))
Aranan: DailyPivotPoints
 

Hepinize iyi günler! Bir sorunum var ve neyin yanlış olduğunu anlayamıyorum.


İki fonksiyon verilmiştir. 1'i ararsam hiçbir şey işe yaramaz. İkinci durumda, her şey çalışıyor. Bana neyin yanlış olduğunu söyle?

Şimdiden teşekkürler!

 int OrderBuy(double pLots, string pComment, int pMagic, int pDatetime, color pColor)
{
   int ticket = 0;
   int err = 0;
   int c = 0;
   int NumberOfTries = 100;
   for (c = 0; c < NumberOfTries; c++) 
     {
         RefreshRates();
         ticket = OrderSend(Symbol(), OP_BUY, pLots, Ask, 0, Ask-0.0005, Ask+0.0005, pComment, pMagic, pDatetime, pColor);
         err = GetLastError();
         if (err == 0/* NO_ERROR */) break;
         if (!(err == 4/* SERVER_BUSY */ || err == 137/* BROKER_BUSY */ || err == 146/* TRADE_CONTEXT_BUSY */ || err == 136/* OFF_QUOTES */)) break;
         Sleep(5000);
      }
      return(ticket);

}


int OrderSell(double pLots, string pComment, int pMagic, int pDatetime, color pColor)
{
   int ticket = 0;
   int err = 0;
   int c = 0;
   int NumberOfTries = 100;
   
   for (c = 0; c < NumberOfTries; c++) 
   {
         RefreshRates();
         ticket = OrderSend(Symbol(), OP_SELL, pLots, Bid, 0, Bid+0.0005, Bid-0.0005, pComment, pMagic, pDatetime, pColor);
         err = GetLastError();
         if (err == 0/* NO_ERROR */) break;
         if (!(err == 4/* SERVER_BUSY */ || err == 137/* BROKER_BUSY */ || err == 146/* TRADE_CONTEXT_BUSY */ || err == 136/* OFF_QUOTES */)) break;
         Sleep(5000);
    }
    return(ticket);

}





//вызовы функций

ticket = OrderBuy(lot, "---"+count+" ---", MagicNumber, 0, HotPink);
         Print(ticket+":тикет");//здесь выдает -1
         if (ticket < 0) 
               {
                  Print("Error: ", GetLastError());//здесь выдает "0";
                  return (0);
               } 




ticket = OrderSell(lot, "---"+count+" ---", MagicNumber, 0, HotPink);
         Print(ticket+":тикет");
         if (ticket < 0) 
               {
                  Print("Error: ", GetLastError());
                  return (0);
               } 
 
Terminalin hesaplamalarını karşılamak istiyorsanız, en kolay yol olandan, ilgili siparişi açarsanız geriye ne kalacağını çıkarmaktır:
 double ld_MarginPosition = AccountFreeMargin() - AccountFreeMarginCheck();
 
arabon :

Hepinize iyi günler! Bir sorunum var ve neyin yanlış olduğunu anlayamıyorum.


İki fonksiyon verilmiştir. 1'i ararsam hiçbir şey işe yaramaz. İkinci durumda, her şey çalışıyor. Bana neyin yanlış olduğunu söyle?

Şimdiden teşekkürler!


Bir döngüde OrderSell ve OrderBuy'da hata değerini sıfırlayan GetLastError() işlevi ( Dikkatli bir şekilde GetLastError hakkındaki yardıma bakın), bu nedenle

Print("Error: ", GetLastError());

fonksiyonu çağırırken 0 verecek. Direkt döngüde yazdırmayı deneyin, ardından siparişin nerede, hangi hatadan dolayı açılmadığını göreceksiniz.

 

Aracı "çeviren" basit bir gösterge yaptım. Bazen algı için tam tersine bir çift görmek daha kolaydır ve aynı resme bakarken göz "bulanıklaşır". Ne yazık ki, aşağıdaki ikinci bölümde, grafik Close[i]'den alınmıştır, bir dosyadan okumadan (bir dosyayla çalışmayı hiç denemedim bile), tam teşekküllü bir grafik görüntüleyebilirsiniz, herkes var mı? Düşüncesi olan var mı.


Dosyalar:
converter.mq4  2 kb
 

Yine de, Kim'in işlevleri arasında herhangi bir arama bulamadım.

Açık siparişlerin marjı ayrı ayrı nasıl doğru bir şekilde hesaplanır?

şöyle düşündüm:

в цикле
if (OrderType() == OP_BUY ) {  
   MarginBuy += (OrderOpenPrice()*OrderLots()/AccountLeverage())*MarketInfo( Symbol (), MODE_LOTSIZE);
}
         
if (OrderType() == OP_SELL ) {  
   MarginSell += (OrderOpenPrice()*OrderLots()/AccountLeverage())*MarketInfo( Symbol (), MODE_LOTSIZE);
}

terminalin gösterdiğinden farklı değerler aldı

Terminalin hesaplamalarını karşılamak istiyorsanız, en kolay yol olandan, ilgili siparişi açarsanız geriye ne kalacağını çıkarmaktır:
 double ld_MarginPosition = AccountFreeMargin() - AccountFreeMarginCheck();


Sadece alıp götürmek işe yaramaz, her yön için ayrı ayrı hesaplamalara ihtiyacım var.

Neden: