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

 
novichok2018 :

Evet, teşekkürler, sayfayı okudum. Yalnızca MKL4'teki bilgim, yalnızca benim döngümde konumların sıfırdan sonuncuya ve örnekte tam tersine sondan sıfıra taşındığını fark etmek için yeterliydi. Ve mola nerede araya girecek ve anlamadım. Ve büstümü tersine çevirdiğimde pozisyonlar kapanmayı hiç bıraktı .

Pozisyonları kapatırken, pozisyonlarda boşluk kalmaması için döngü tersine çevrilmelidir. Bu döngüde break ifadesine ihtiyacınız yoktur - bu, döngünün kesintiye uğraması ve gövdesinden çıkışıdır. Ayrıca devam etmeniz gerekiyor - döngünün bir sonraki yinelemesine geçiş.

Ve neden senin için kapanmıyor ve bunun için ne yaptın - sadece sen biliyorsun.

 
Artyom Trishkin :

Pozisyonları kapatırken, pozisyonlarda boşluk kalmaması için döngü tersine çevrilmelidir. Bu döngüde break ifadesine ihtiyacınız yoktur - bu döngünün kesilmesi ve gövdesinden bir çıkıştır. Ayrıca devam etmeniz gerekiyor - döngünün bir sonraki yinelemesine geçiş.

Ve neden senin için kapanmıyor ve bunun için ne yaptın - sadece sen biliyorsun.


Tam olarak yönlendirildiği gibi yaptı. İşte düzeltilmiş kod:

 void ClosePoz()
  { int total= OrdersTotal ();
   if (total> 0 )
   {
       for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
      {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
         { double WPR0 = iWPR ( NULL , PERIOD_M5 ,bars, 0 );
         if ( OrderType ()== OP_BUY && MathAbs (WPR0)> 80 )
           OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( MarketInfo ( OrderSymbol (), MODE_BID ), int ( MarketInfo ( OrderSymbol (), MODE_DIGITS ))),slippage, clrNONE );                  
         }
         continue ;
      }
    } 
  } 
  

Şimdi her iki pozisyonu da kapatıyor ama birini kapatmıyor, ikincisini bekliyor. tımarhane. Belki de ClosePoz() fonksiyonunu yanlış yere ekliyorum diye düşündüm, bir sürü seçeneği karıştırdım. Sonuç sıfır. Yardım için ruhun çığlığı. Hiç kimse sorunu çözemez olamaz.

 

ilk hesaptan (100$) nasıl para çekilir?

 
novichok2018 :

Tam olarak yönlendirildiği gibi yaptı. İşte düzeltilmiş kod:

Şimdi her iki pozisyonu da kapatıyor ama birini kapatmıyor, ikincisini bekliyor. tımarhane. Belki de ClosePoz() fonksiyonunu yanlış yere ekliyorum diye düşündüm, bir sürü seçeneği karıştırdım. Sonuç sıfır. Yardım için ruhun çığlığı. Hiç kimse sorunu çözemez olamaz.

İyi bilmiyorum. dizimin üstüne çektim. Tabii ki, kontrol edemiyorum - orada koşullarınız yeterli değil, bu yüzden - kendiniz

 //+------------------------------------------------------------------+
void ClosePoz( const string symbol_name, const int magic_number, const double wpr_buy, const double wpr_sell)
  { 
   int total= OrdersTotal ();
   for ( int i=total- 1 ; i>= 0 ; i--)
     {
       if ( OrderSelect (i, SELECT_BY_POS ))
        {
         ENUM_ORDER_TYPE type= OrderType ();
         if (type> ORDER_TYPE_SELL )               continue ;
         if ( OrderMagicNumber ()!=magic_number)   continue ;
         if ( OrderSymbol ()!=symbol_name)         continue ;
         int digits=( int ) SymbolInfoInteger ( OrderSymbol (), SYMBOL_DIGITS );
         if (type== ORDER_TYPE_BUY )
           {
             double close_price= SymbolInfoDouble ( OrderSymbol (), SYMBOL_BID );
             if ( iWPR ( NULL , PERIOD_M5 ,bars, 0 ))>wpr_buy)
              {
               ResetLastError ();
               if (! OrderClose ( OrderTicket (), OrderLots (),close_price,slippage, clrNONE );
                   Print ( __FUNCTION__ " > Позиция Buy #" , OrderTicket (), " не закрыта. Ошибка: " , GetLastError ());
              }
           }                
         else
           {
             double close_price= SymbolInfoDouble ( OrderSymbol (), SYMBOL_ASK );
             if ( iWPR ( NULL , PERIOD_M5 ,bars, 0 ))<wpr_sell)
              {
               ResetLastError ();
               if (! OrderClose ( OrderTicket (), OrderLots (),close_price,slippage, clrNONE );
                   Print ( __FUNCTION__ " > Позиция Sell #" , OrderTicket (), " не закрыта. Ошибка: " , GetLastError ());
              }
           }                
        }
     }
  } 
//+------------------------------------------------------------------+
Evet ve kontrol işlevi içindeki WPR bir şekilde normal değil. WPR, kapatma işlevini çağırmanın koşullarından biri olmalıdır
 
Anladığım kadarıyla mevduattaki lot sayısını değiştirmek imkansız.
 
igrok333 :
Anladığım kadarıyla mevduattaki lot sayısını değiştirmek imkansız.

İhtiyacınız olan hacme sahip bir tane daha açmanız yeterli

 
Alekseu Fedotov :

İhtiyacınız olan hacme sahip bir tane daha açmanız yeterli

O zaman mevcut olanı silip yenisini koymak daha kolaydır. Sonuçta, gerekli hacmin önceden ayarlanmış olandan daha fazla olması gerekmez. Evet ve bir siparişi takip etmek daha kolaydır.

 

İyi günler bir sorum var nasıl anladığımı anlatıyım

mumun en altına bir alış ve en üstüne bir satış koyan danışmanlar için yazılı bir algoritma var mı?

ve bir danışmana nasıl uyarlanır?
 
iisvlg : Uzman Danışmanlar için mumun en altına al ve en tepeye sat yazan yazılı bir algoritma var mı ve bunu bir Expert Advisor'a nasıl uyarlayabilirim?

Harika olurdu!!!

 
iisvlg :

İyi günler bir sorum var nasıl anladığımı anlatıyım

mumun en altına bir alış ve en üstüne bir satış koyan danışmanlar için yazılı bir algoritma var mı?

ve bir danışmana nasıl uyarlanır?

SATIN ALMA LİMİTİ'ni Düşük ve SATIŞ LİMİTİ'ni Yüksek olarak ayarlayın.

Algoritmalarla ilgili olarak , tabanı kazın