[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 814

 
Aç[1] Kapat[1]
 

Bakiye 600-1199 lot 0.1

Bakiye 1200-1799 lot 0.2

Denge 1800-2399 lot 0.3 vb.

Bir danışmanda nasıl organize edilir? Teşekkür ederim.

 
Maniac :

Bakiye 600-1199 lot 0.1

Bakiye 1200-1799 lot 0.2

Denge 1800-2399 lot 0.3 vb.

Bir danışmanda nasıl organize edilir? Teşekkür ederim.

 double Lot()
{
   double balance=AccountBalance();
   if (balance> 600 && balance< 1199 ) return ( 0.1 );
   if (balance> 1200 && balance< 1799 ) return ( 0.2 );
   if (balance> 1800 && balance< 2399 ) return ( 0.3 );
return (MarketInfo( Symbol (), MODE_MINLOT));
}
 

çağrı: bilet=OrderSend(Symbol(),OP_BUY, Lot() ,Ask,3,Bid-25*Point,Ask+25*Point,"Siparişim #",magic,0, CLR_NONE );
 
IgorM :

çağrı: bilet=OrderSend(Symbol(),OP_BUY, Lot() ,Ask,3,Bid-25*Puan,Ask+25*Puan,"Siparişim #",magic,0,CLR_NONE);

Bu durumda, denge bulutlarda olabilir ve eşitlik büyük bir düşüşte olabilir. Buna göre, partinin boyutu, açılması mümkün olandan daha büyük olabilir ve tüm yapı tepetaklak yuvarlanır...

Açmadan önce, partiyi gerçekten mümkün olana göre ayarlamak daha iyidir.

Bunun için bir fonksiyon yaptım. Victor ( Vinin ) tarafından biraz düzeltildi - deneyin:

 // ===========================================================================
// --- Функция рассчёта величины лота для открытия позиции. Редакция VininI---
// Если лот превышает возможный для открытия позы, то он корректируется 
// ===========================================================================

double CorrectLots( double lt)
{
   double ltcorr;
   double pnt =      MarketInfo( Symbol (),MODE_POINT);
   double mspr =     MarketInfo( Symbol (),MODE_SPREAD);
   double dig =      MarketInfo( Symbol (),MODE_DIGITS);
   double MaxLot =   MarketInfo( Symbol (),MODE_MAXLOT);
   double MinLot =   MarketInfo( Symbol (),MODE_MINLOT);
   double StpLot =   MarketInfo( Symbol (),MODE_LOTSTEP);
   double OneLot =   MarketInfo( Symbol (),MODE_MARGINREQUIRED);
   double TradeMrg = NormalizeDouble (AccountFreeMargin()/ 4.0 ,dig);     // Свободные средства, разрешенные к торговле
   
   
   double Money=lt*OneLot+mspr*pnt;           // Вычисляем стоимость открываемой позы
   if (Money>=TradeMrg)                       // Если цена позиции равна или больше, чем есть свободных средств, то ...
      {
         lt= MathFloor (TradeMrg/OneLot/StpLot)*StpLot;   // ... рассчитаем допустимый лот
         Print ( "Func CorrectLots: полученный лот " ,lt, " скорректирован под допустимый " ,lt); 
      }
       else 
         Print ( "Func CorrectLots: лот вернули без изменений" );
   lt= MathMin (MaxLot, MathMax (MinLot, lt)); // Проверим превышение допустимых ...
   
   return (lt);                            
}

Çizgide

 double TradeMrg = NormalizeDouble (AccountFreeMargin()/ 4.0 ,dig);     // Свободные средства, разрешенные к торговле

... serbest marj dörde bölünür ve serbest marjın sadece dörtte biri işlem için uygun kabul edilir.

4'e bölmeyi kaldırabilir ve istediğiniz gibi bahis yapabilirsiniz, en azından tüm marjı kullanın.

Ancak işlev, izin verilenden çok daha büyük bir boyut kullanmanıza izin vermez.

 
artmedia70 :
Bu durumda, denge bulutlarda olabilir ve eşitlik büyük bir düşüşte olabilir. Buna göre, partinin boyutu, açılması mümkün olandan daha büyük olabilir ve tüm yapı tepetaklak yuvarlanır...


neden bu kadar üzücü...

fonksiyonumdaki son getiri() enstrüman için mevcut minimum lotu verecektir, eğer hesap büyük kaldıraçlı bir sent hesabıysa, o zaman bakiye 600'den az olduğunda, EA muhtemelen bir süre daha işlem yapacak :)

Not: görev belirlidir ve sorgulayıcıya aramanın yönünü vermek için bir dal

 
IgorM :


neden bu kadar üzücü...

fonksiyonumdaki son getiri() enstrüman için mevcut minimum lotu verecektir, eğer hesap büyük kaldıraçlı bir sent hesabıysa, o zaman bakiye 600'den az olduğunda, EA muhtemelen bir süre daha işlem yapacak :)

Not: görev belirlidir ve sorgulayıcıya aramanın yönünü vermek için bir dal

Peki, cömertçe bağışlayın... :) Bu kadar kızmayın efendim... :)

İşte benim sürümümdeki işlev:

 // ==========================================================================
// ------------ Функция рассчёта величины лота для открытия позиции ---------
// Если лот превышает возможный для открытия позы, то он корректируется 
// ==========================================================================

double CorrectLots( double lt)
{
   double ltcorr;
   double pnt =      MarketInfo( Symbol (),MODE_POINT);
   double mspr =     MarketInfo( Symbol (),MODE_SPREAD);
   double dig =      MarketInfo( Symbol (),MODE_DIGITS);
   double MaxLot =   MarketInfo( Symbol (),MODE_MAXLOT);
   double MinLot =   MarketInfo( Symbol (),MODE_MINLOT);
   double StpLot =   MarketInfo( Symbol (),MODE_LOTSTEP);
   double OneLot =   MarketInfo( Symbol (),MODE_MARGINREQUIRED);
   double TradeMrg = NormalizeDouble (AccountFreeMargin()/ 4.0 ,dig);       // Свободные средства, разрешенные к торговле
   
   lt= MathAbs (lt);
   ltcorr=lt;                       // Зададим начальное значением ltcorr равным значению lt
   
   if (lt>=MaxLot) ltcorr=MaxLot;   // Проверим превышение допустимых ...
   if (lt<=MinLot) ltcorr=MinLot;   // ... значений лота
   
   double Money=lt*OneLot+mspr*pnt; // Вычисляем стоимость открываемой позы

   if (Money<TradeMrg)               // Если свободных средств больше, чем цена позиции - 
      {
         return (ltcorr);             // ... возвращаем неизменённый лот
      }
   else if (Money>=TradeMrg)         // Если цена позиции равна или больше, чем есть свободных средств, то ...
      {
         ltcorr= MathAbs ( MathFloor (TradeMrg/OneLot/StpLot)*StpLot);       // ... рассчитаем допустимый лот
         double MoneyCorr=ltcorr*OneLot+mspr*pnt;                      
         Print ( "Func CorrectLots: лот " ,lt, " скорректирован до " ,ltcorr,
               " Стоимость позы до корректировки = " ,Money,
               " Стоимость позы после корректировки = " ,MoneyCorr
               ); 
         return (ltcorr);                                                 // ... и вернём его значение
      }
   Print ( "Func CorrectLots: лот вернули без изменений" );
   return (ltcorr);                                                       // Возврат изначального лота в непредусмотренных случаях с сообщением
}
 
IgorM :


neden bu kadar üzücü...

fonksiyonumdaki son getiri() enstrüman için mevcut minimum lotu verecektir, eğer hesap büyük kaldıraçlı bir sent hesabıysa, o zaman bakiye 600'den az olduğunda, EA muhtemelen bir süre daha işlem yapacak :)

Not: görev belirlidir ve sorgulayıcıya aramanın yönünü vermek için bir dal

Görüyorsun, Igor - burada bir kişi sordu, ona doğru cevap verdin ve olduğu gibi unutabilirsin. Ama sonuçta, dengeden dans etmek içgüdüsel değildir. Dengenin çok yüksek göklerde olabileceği ve işlerin gerçek durumu nedeniyle - tasarruf zamanı. Ve burada hala Xr-r benzeriyiz ... ve siparişin üstünde ve büyük bir sürü ... ve o rr - bir kez, evet eksi olarak gittim ... Öz sermaye - orada, öyle olmasına rağmen
zaten orada ... Bu nedenle, fonlardan dans etmenin dengeden daha iyi olduğunu önerdim ... :)

 

Güzel gün!

Lütfen yeni başlayanlara, tüm döviz çiftlerini aynı anda işlemesi için MQL4'te özel bir gösterge yazmanın mümkün olup olmadığını söyleyin. Anladığım kadarıyla, gösterge tablosunda 8 satıra kadar görüntülenebilir, ancak sadece bir satıra ihtiyacım olacak. Onlar. Tüm döviz çiftleri için aynı anda dizilerden veya değişkenlerden işlenen bu satır için bir dizi alabilir miyim?

Cevabınız için şimdiden teşekkür ederim.

 
Igor_Sev :

Onlar. Tüm döviz çiftleri için aynı anda dizilerden veya değişkenlerden işlenen bu satır için bir dizi alabilir miyim?


Teorik olarak, herhangi bir engel görmüyorum. Başka bir soru, bu diziyi özel olarak işleyip işleyemeyeceğinizdir.
 
Roger :

Teorik olarak, herhangi bir engel görmüyorum. Başka bir soru, bu diziyi özel olarak işleyip işleyemeyeceğinizdir.


ve bir araç yazarken program kodundaki tüm döviz çiftlerine nasıl başvurabilirim? Yazma araçları örneklerine baktım, bir döviz çiftine referans yok, belirli bir tırnak grafiğine bağlı olan varsayılan olarak işleniyor.

Demek istediğim, Excel ve VBA şimdi tüm bunları yapıyor, DDE sunucusu aracılığıyla 22 döviz çifti hakkında bilgi alıyorum ve VBA program kodunu kullanarak eşzamanlı işlemlerini kastediyorum, ancak bu son derece elverişsiz, çünkü önce 2 saat beklemeniz gerekiyor Excel'de grafiklerle analiz için veri geçmişinin toplanması. Evet ve programdan programa atlamak sakıncalı, bu yüzden tüm bunları MT4'e nasıl aktaracağımı düşünüyorum.