Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 873

 
Лауреат :

evet, devam edin, sanırım videoyu YouTube'da bulamadım. ve belgeler sadece en akıllılar içindir

YouTube bizim her şeyimiz mi? Bir de kuzey-güney neresi, YouTube videolarından tanıdınız mı?

 

Expert Advisor başlatıldığında, grafiğe iki hareketli ortalama eklenir ( ChartIndicatorAdd işlevi). Her iki hareketli ortalama da kırmızı ile çizilir. Bunları programlı olarak başka renklerde nasıl boyayabilirim?

 
Kvin_ :

Expert Advisor başlatıldığında, grafiğe iki hareketli ortalama eklenir ( ChartIndicatorAdd işlevi). Her iki hareketli ortalama da kırmızı ile çizilir. Bunları programlı olarak başka renklerde nasıl boyayabilirim?

Kılavuzda her şey açıkça yazılmıştır:

Daha fazla çalışabileceğiniz bir hindi sapı oluşturduğunuzda, satırda bir parametre ayarlayabilirsiniz:

indicator_handle= iMACD (symbol,period,fast_ema_period,slow_ema_period,signal_period,apr);
 
Artyom Trishkin :

YouTube bizim her şeyimiz mi? Bir de kuzey-güney neresi, YouTube videolarından tanıdınız mı?

Eh, tabii ki akıllısın.

 
Kvin_ :

Expert Advisor başlatıldığında, grafiğe iki hareketli ortalama eklenir ( ChartIndicatorAdd işlevi). Her iki hareketli ortalama da kırmızı ile çizilir. Bunları programlı olarak başka renklerde nasıl boyayabilirim?

Özel bir ayarı olan özel bir gösterge kullanın: renk.

Özel Hareketli Ortalama Girdi Rengi kodunda örnek:

İki iMA EA'nın Geçişi örneğinde , şimdi görsel strateji test cihazında üç göstergenin çağrısı görsel olarak farklıdır:

İki iMA'nın çaprazlanması

 
Vladimir Karputov :

Özel bir ayarı olan özel bir gösterge kullanın: renk.

Koddaki örnek Özel Hareketli Ortalama Girdi Rengi :

İki iMA EA'nın Geçişi örneğinde , şimdi görsel strateji test cihazında üç göstergenin çağrısı görsel olarak farklıdır:

Neye ihtiyacın var. Teşekkür ederim!
 

Doğru parti çarpanını ayarlamak mümkün değil.

Daha önce, kod tabanındaki danışmanda, önceki partiyi 2 ile çarpacak şekildeydi.

 if (last_position_type== POSITION_TYPE_BUY && m_symbol. Bid ()+count_positions*ExtStep<last_position_price_open)
         m_trade.Sell(last_position_volume* 2 ,m_symbol.Name());

değiştirdim

 input double    KLot              = 1.5 ;     //Коэффициент умножения лота
//------------------------------------------
if (last_position_type== POSITION_TYPE_BUY && m_symbol. Bid ()+count_positions*ExtStep<last_position_price_open)
         m_trade.Sell(last_position_volume*KLot,m_symbol.Name());


yanlış parti boyutunu alıyorum

 
ilyav :

Doğru parti çarpanını ayarlamak mümkün değil.

Daha önce, kod tabanındaki danışmanda, önceki partiyi 2 ile çarpacak şekildeydi.

değiştirdim

yanlış parti boyutunu alıyorum

Aritmetik işlemler yapıldıktan sonra parti, bu sembol için parti büyüklüğü adımına uygun hale getirilmelidir.

Örnek: Coin Flip lot hesaplaması ve SATIN AL olup olmadığını kontrol edin

 //+------------------------------------------------------------------+
//| Open Buy position                                                |
//+------------------------------------------------------------------+
void OpenBuy( double sl, double tp)
  {
   sl=m_symbol.NormalizePrice(sl);
   tp=m_symbol.NormalizePrice(tp);

   double check_open_long_lot= 0.0 ;
   if (Risk> 0.0 )
     {
      check_open_long_lot=m_money.CheckOpenLong(m_symbol. Ask (),sl);
       Print ( "sl=" , DoubleToString (sl,m_symbol. Digits ()),
             ", CheckOpenLong: " , DoubleToString (check_open_long_lot, 2 ),
             ", Balance: " ,     DoubleToString (m_account.Balance(), 2 ),
             ", Equity: " ,     DoubleToString (m_account.Equity(), 2 ),
             ", FreeMargin: " , DoubleToString (m_account.FreeMargin(), 2 ));
       if (check_open_long_lot== 0.0 )
        {
         Print ( __FUNCTION__ , ", ERROR: method CheckOpenLong returned the value of \"0.0\"" );
         return ;
        }
     }
   else
      check_open_long_lot=InpLots;
   if (last_lots_sl> 0.0 )
      check_open_long_lot=last_lots_sl*InpMartingale;
   if (check_open_long_lot>InpMaxLots)
     {
       Print ( __FUNCTION__ , ", ERROR: check_open_long_lot (" , DoubleToString (check_open_long_lot, 2 ), ") > \"Max lots\" (" , DoubleToString (check_open_long_lot, 2 ), ")" );
       ExpertRemove ();
       return ;
     }
   check_open_long_lot= LotCheck (check_open_long_lot);
   if (check_open_long_lot== 0 )
     {
       Print ( __FUNCTION__ , ", ERROR: LotCheck -> 0.0" );
       return ;
     }
//--- check volume before OrderSend to avoid "not enough money" error (CTrade)
   double check_volume_lot=m_trade.CheckVolume(m_symbol.Name(),check_open_long_lot,m_symbol. Ask (), ORDER_TYPE_BUY );
   if (check_volume_lot!= 0.0 )
     {
       if (check_volume_lot>=check_open_long_lot)
        {
         if (m_trade.Buy(check_open_long_lot, NULL ,m_symbol. Ask (),sl,tp))
           {
             if (m_trade.ResultDeal()== 0 )
              {
               Print ( "#1 Buy -> false. Result Retcode: " ,m_trade.ResultRetcode(),
                     ", description of result: " ,m_trade.ResultRetcodeDescription());
               PrintResult(m_trade,m_symbol);
              }
             else
              {
               Print ( "#2 Buy -> true. Result Retcode: " ,m_trade.ResultRetcode(),
                     ", description of result: " ,m_trade.ResultRetcodeDescription());
               PrintResult(m_trade,m_symbol);
              }
           }
         else
           {
             Print ( "#3 Buy -> false. Result Retcode: " ,m_trade.ResultRetcode(),
                   ", description of result: " ,m_trade.ResultRetcodeDescription());
            PrintResult(m_trade,m_symbol);
           }
        }
       else
        {
         string text= "" ;
         if (Risk> 0.0 )
            text= "< method CheckOpenLong (" + DoubleToString (check_open_long_lot, 2 )+ ")" ;
         else
            text= "< Lots (" + DoubleToString (InpLots, 2 )+ ")" ;
         Print ( __FUNCTION__ , ", ERROR: method CheckVolume (" , DoubleToString (check_volume_lot, 2 ), ") " ,
               text);
         return ;
        }
     }
   else
     {
       Print ( __FUNCTION__ , ", ERROR: method CheckVolume returned the value of \"0.0\"" );
       return ;
     }
//---
  }
 

merhaba bu soru:

göstergedeki arabellek/satır sayısını dinamik olarak değiştirmek mümkün müdür?

 
Andrii Djola :

merhaba bu soru:

göstergedeki arabellek/satır sayısını dinamik olarak değiştirmek mümkün müdür?

Yasaktır.