MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 56

 

Geliştirmeye devam ediyorum:

koşul doğruysa

açık sipariş 1

fiyat olması gereken yere gitti mi gitmedi mi

açık sipariş2

LastLot= sipariş 2 (veya daha fazla)

LastPrice= order2 (veya daha yüksek)

fiyat doğru giderse ya da gitmezse...

LastLot= sipariş 3 (veya daha fazla)

LastPrice= sipariş 3 (veya üstü)

sorun şu ki - son (veya değil) emir her zaman zararı durdur ve al arasında olacak, bu yüzden emrin kendisi askıda kalacağı için geri kalanı kapatıldığında değeri sıfırlanmayacak. Bilinmeyen bir miktarda geri kalanıyla nasıl bağlanır.

Sonuncuyu veya sondan bir öncekini diğerlerine bağlama mekanizması, sayıları sayılarla birlikte değiştiği için etkisiz olduğu ortaya çıktı.

sonuç "bu serinin emirlerinden biri kapanırsa diğerlerini kapat" gibi bir şey olmalıdır.

seri geri sayım - mevcut yönün ilk sırası (başka bir tür açmaz) burada veya bazı ek tanımlayıcılar veya diğer bağlama yöntemleri. Anahtar - koşullara göre ilk sipariş açılır, geri kalanı yardımcı doldurmadır.

Düşüncesi olan var mı?

 
trader781 :

Geliştirmeye devam ediyorum:

koşul doğruysa

açık sipariş 1

fiyat olması gereken yere gitti mi gitmedi mi

açık sipariş2

LastLot= sipariş 2 (veya daha fazla)

LastPrice= order2 (veya daha yüksek)

fiyat doğru giderse ya da gitmezse...

LastLot= sipariş 3 (veya daha fazla)

LastPrice= sipariş 3 (veya üstü)

sorun şu ki - son (veya değil) emir her zaman zararı durdur ve al arasında olacak, bu yüzden emrin kendisi askıda kalacağı için geri kalanı kapatıldığında değeri sıfırlanmayacak. Bilinmeyen bir miktarda geri kalanıyla nasıl bağlanır.

Sonuncuyu veya sondan bir öncekini diğerlerine bağlama mekanizması, sayıları sayılarla birlikte değiştiği için etkisiz olduğu ortaya çıktı.

sonuç "bu serinin emirlerinden biri kapanırsa diğerlerini kapat" gibi bir şey olmalıdır.

seri geri sayım - mevcut yönün ilk sırası (başka bir tür açmaz) burada veya bazı ek tanımlayıcılar veya diğer bağlama yöntemleri. Anahtar - koşullara göre ilk sipariş açılır, geri kalanı yardımcı doldurmadır.

Düşüncesi olan var mı?

Kaotik, anlaşılmaz. Düşüncelerinizi daha net ifade etmeye çalışın.

İşte burada: " fiyat olması gereken yere gittiyse veya gitmediyse - açık emir2 " - her durumda " açık emir2 " nasıl anlaşılır?

Ve ayrıca böyle "veya" sadece daha fazlası ...

Ve böylece " Bilinmeyen bir miktarla geri kalanıyla nasıl bağlantı kurulur " gibi sorular olmaz - bu yüzden önce miktarı bulmanız gerekir.

 
Vitalie Postolache :

Kaotik, anlaşılmaz. Düşüncelerinizi daha net ifade etmeye çalışın.

İşte burada: " fiyat olması gereken yere gittiyse veya gitmediyse - açık emir2 " - her durumda " açık emir2 " nasıl anlaşılır?

Ve ayrıca böyle "veya" sadece daha fazlası ...

Ve böylece " Bilinmeyen bir miktarla geri kalanıyla nasıl bağlantı kurulur " gibi sorular olmaz - bu yüzden önce miktarı bulmanız gerekir.

sayılarla tamam

döviz kuru EURUSD=1 .10000

mevcut sipariş için TOR'a göre bir satın alma emri açma komutu verildi (zaten yazılmış)

EURUSD=1.10200 satın alma işlemine eklenirse (zaten yazılmıştır)

EURUSD=1.09800 satın alma işlemine eklenirse (zaten yazılmıştır)

ve benzeri 200'lük artışlarla

bu emirlerden herhangi biri kapanırsa (durur ve alımlar durur, ancak hiç olmaz)

tüm ızgarayı kapat

ızgarayı tanımlamanın bir yolunu arıyorum
 
trader781 :

sayılarla tamam

döviz kuru EURUSD = 1.10000

mevcut sipariş için TOR'a göre bir satın alma emri açma komutu verildi (zaten yazılmış)

EURUSD=1.10200 satın alma işlemine eklenirse (zaten yazılmıştır)

EURUSD=1.09800 satın alma işlemine eklenirse (zaten yazılmıştır)

ve benzeri 200'lük artışlarla

Bu emirlerden herhangi biri kapanırsa (durur ve alımlar durur)

tüm ızgarayı kapat

ızgarayı tanımlamanın bir yolunu arıyorum
Sipariş numarası ile yorumlar eklenebilir. Ve eğer tüm siparişler aynı türden ise, o zaman sadece onları sayın ve sayıyı düzeltin.
 
Vitalie Postolache :
Sipariş numarası ile yorumlar eklenebilir. Ve eğer tüm siparişler aynı türden ise, o zaman sadece onları sayın ve sayıyı düzeltin.

Yorumları düşündüm, ancak incelemelere bakılırsa, şef onları yenmez olarak görüyor ve ya siliyor ya da kendi başına değiştiriyor.

ve yeniden hesaplama hakkında, yani bir sonrakini eklerken miktarı sayıp düzeltmem gerekiyor mu?

 
trader781 :

ve yeniden hesaplama hakkında, yani bir sonrakini eklerken miktarı sayıp düzeltmem gerekiyor mu?

Evet. Ve son seferden beri sayı azaldıysa, kalanların hepsini kapatın.

Ayrıca geçmişte kapatılan siparişleri de izleyebilirsiniz. Ve belirtilen özelliklere karşılık gelen yeni kapalı bir sipariş göründüğünde, seriyi kapatın.

Yine de TP/SL'yi sırayla ayarlayamazsınız, ancak tüm seri için EA'daki toplam TP/SL'yi hesaplayabilirsiniz. Ve seriyi kapatmak için onlara. Avantajlar - DC durma seviyelerini görmez, TP veya SL bir siparişte çalıştıysa, serinin geri kalanını bulma sorunu ortadan kalkar.
 
İyi günler .. Herkese Mutlu Yıllar .. Hepinize en iyi ve bol kazançlar dilerim .. Lütfen bu kodu, hesap kaldıracını dikkate alarak lot hesaplamasının mümkün olan en yüksek düzeyde gerçekleşmesi için değiştirin.
//+------------------------------------------------------------------+
double volume( string symbol, double risk, double sl)
  {
   double lot= 0.0 ;
   double procent= 0.0 ;
   double balans= 0.0 ;
   double tc = SymbolInfoDouble (symbol, SYMBOL_TRADE_CONTRACT_SIZE );
   double tv = SymbolInfoDouble (symbol, SYMBOL_TRADE_TICK_VALUE );
   double ts= SymbolInfoDouble (symbol, SYMBOL_TRADE_TICK_SIZE );
   double point= SymbolInfoDouble (symbol, SYMBOL_POINT );

   if (Type_Balanse==Balance) balans= AccountInfoDouble ( ACCOUNT_BALANCE );
   if (Type_Balanse==Equity) balans= AccountInfoDouble ( ACCOUNT_EQUITY );
   if (Type_Balanse==FreeMargin) balans= AccountInfoDouble ( ACCOUNT_FREEMARGIN );

   procent=(balans/ 100.0 )*risk;

   switch (( int ) MarketInfo (symbol, MODE_PROFITCALCMODE ))
     {
       case 0 : if (sl!= 0 && tv!= 0 ) lot=procent/(sl*tv); break ;
       case 1 : if (sl!= 0 && point!= 0 && tc!= 0 ) lot=procent/(sl*point*tc); break ;
       case 2 : if (sl!= 0 && point!= 0 && tv!= 0 && ts!= 0 ) lot=procent/(sl*point*(tv/ts)); break ;
     }
   return (NormalizeVolume(symbol,lot));
  }
 
Peki, basit bir dille soracağım, danışmana nasıl kayıt olunur kaldıraca bağlı olarak lotun otomatik hesaplanması.. Kaldıraç 1:50 depozito 3000 diyelim..
 
Movlat Baghiyev :
Peki, basit bir dille soracağım, danışmana nasıl kayıt olunur kaldıraca bağlı olarak lotun otomatik hesaplanması.. Kaldıraç 1:50 depozito 3000 diyelim..

Şu şekilde deneyin:

void OnTick ()
{
   Comment ( cLot( 100 ) );
}
//===============================================================================================
//------------------------------------ Расчет лота по риску ------------------------------------+
//===============================================================================================
double cLot( double Percent= 0 ) {
double Free= AccountFreeMargin (),
        One_Lot= MarketInfo ( _Symbol , MODE_MARGINREQUIRED ),
        Min_Lot= MarketInfo ( _Symbol , MODE_MINLOT ),
        cStep= MarketInfo ( _Symbol , MODE_LOTSTEP ),
        Lots_New= 0 ;
if (Percent > 100 ) {
    Percent = 100 ;
  }
   if (Percent == 0 ) {
    Lots_New = 0 ;
     return ( 0 );
   } else {
    Lots_New = MathFloor (Free*Percent/ 100 /One_Lot/cStep)*cStep;
   }
   if (Lots_New < Min_Lot) {
    Lots_New = Min_Lot;
  }
   if (Lots_New*One_Lot > Free) {
     return ( 0 );
  }
   return ( NormalizeDouble (Lots_New,LotDigit()));
}
//===============================================================================================
//-------------------- Кол-во знаков после точки в значении торгового лота ---------------------+
//===============================================================================================
int LotDigit(){
   double lotStep = MarketInfo ( _Symbol , MODE_LOTSTEP );
return (( int ) MathCeil ( MathAbs ( MathLog (lotStep)/ MathLog ( 10 ))));
}
 
Üzgünüm, bir çeşit risk yüzdesi seçimine ihtiyacım vardı. 0,01'e kadar bir adımla mümkün olan en fazla lotu hemen açmam benim için sadece aptalca