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

 
kopeyka2 :

şimdilik olsun

başka (yerel olmayan) bir zaman dilimi


Genel olarak, yardımı görmezden gelirsiniz. diyaloğu bırakıyorum. Ayrıca bensiz - Kodun doğru çalışması için tüm verileri verdim, ancak duymak istemiyorsunuz ve kendi yolunuzla bir şeyler yapmak istiyorsunuz. Zaman üzgün.
 
Artyom Trishkin :
Genel olarak, yardımı görmezden gelirsiniz. diyaloğu bırakıyorum. Ayrıca bensiz - Kodun doğru çalışması için tüm verileri verdim, ancak duymak istemiyorsunuz ve kendi yolunuzla bir şeyler yapmak istiyorsunuz. Zaman üzgün.

İlgilenip zaman ayırdığınız için teşekkür ederim... Muhtemelen henüz elime ulaşmamış bir şey var... Tekerlekler ve motor konusunda hemfikirim.

Büyük olasılıkla, tutamacı bırakacağım ve ortalama süre için iClose için ortalama değeri hesaplayacağım.

 
kopeyka2 :

İlgilenip zaman ayırdığınız için teşekkür ederim... Muhtemelen henüz elime ulaşmamış bir şey var... Tekerlekler ve motor konusunda hemfikirim.

Büyük olasılıkla, tutamacı bırakacağım ve ortalama süre için iClose için ortalama değeri hesaplayacağım.

 //+------------------------------------------------------------------+
//|                                                       TestMA.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                                 https://mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link        "https://mql5.com"
#property version    "1.00"
#property description "Выводит данные скользящей средней с заданного таймфрейма на любом текущем"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots    1
//--- plot LWMA
#property indicator_label1    "MA"
#property indicator_type1    DRAW_LINE
#property indicator_color1    clrBlue
#property indicator_style1    STYLE_SOLID
#property indicator_width1    1
//--- input parameters
input uint                  InpPeriod         =   14 ;             // MA period
input int                   InpShift          =   0 ;             // MA shift
input ENUM_MA_METHOD        InpMethod         =   MODE_SMA ;       // MA method
input ENUM_APPLIED_PRICE    InpApplierPrice   =   PRICE_CLOSE ;   // MA applied price
input ENUM_TIMEFRAMES       InpTimeframe      =   PERIOD_H1 ;     // LRMA timeframe
//--- indicator buffers
double          BufferMA[];
//--- global variables
//ENUM_TIMEFRAMES   timeframe1;
int             period_ma;
int             shift_ma;
int             handle_ma;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- timer
   EventSetTimer ( 90 );
//--- set global variables
   period_ma= int (InpPeriod< 1 ? 1 : InpPeriod);
   shift_ma=InpShift;
   //timeframe1=(InpTimeframe>Period() ? InpTimeframe : Period());
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,BufferMA, INDICATOR_DATA );
//--- setting indicator parameters
   IndicatorSetString ( INDICATOR_SHORTNAME , "Any TF MA on current" );
   IndicatorSetInteger ( INDICATOR_DIGITS , Digits ());
//--- setting plot buffer parameters
   string label=TimeframeToString(InpTimeframe)+ " " +MethodToString(InpMethod)+ "(" +( string )period_ma+ ")" ;
   PlotIndexSetString ( 0 , PLOT_LABEL ,label);
//--- setting buffer arrays as timeseries
   ArraySetAsSeries (BufferMA, true );
//--- create handles
   ResetLastError ();
   handle_ma= iMA ( NULL ,InpTimeframe,period_ma,shift_ma,InpMethod,InpApplierPrice);
   if (handle_ma== INVALID_HANDLE )
     {
       Print ( "The " ,TimeframeToString(InpTimeframe), " iMA(" ,( string )period_ma, ") object was not created: Error " , GetLastError ());
       return INIT_FAILED ;
     }
//--- get timeframe
   Time ( NULL ,InpTimeframe, 1 );
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//--- Проверка количества доступных баров
   if (rates_total< fmax (period_ma, 4 )) return 0 ;
//--- Проверка и расчёт количества просчитываемых баров
   int limit=rates_total-prev_calculated;
   if (limit> 1 )
     {
      limit=rates_total- 1 ;
       ArrayInitialize (BufferMA, EMPTY_VALUE );
     }
//--- Подготовка данных
   if ( Time ( NULL ,InpTimeframe, 1 )== 0 )
       return 0 ;
   int bars=(InpTimeframe== PERIOD_CURRENT ? rates_total : Bars ( NULL ,InpTimeframe));
   int count=(limit> 1 ? fmin (bars,rates_total) : 1 ),copied= 0 ;
   copied= CopyBuffer (handle_ma, 0 , 0 ,count,BufferMA);
   Comment (TimeframeToString(InpTimeframe), " " ,MethodToString(InpMethod), ": copied=" ,copied, ", count=" ,count, ", bars=" ,bars, ", rates_total=" ,rates_total);
   if (copied!=count) return 0 ;
      
//--- Расчёт индикатора
   //for(int i=limit; i>=0 && !IsStopped(); i--)
   //  {
   //   
   //  }

//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
//| Custom indicator timer function                                  |
//+------------------------------------------------------------------+
void OnTimer ()
  {
   Time ( NULL ,InpTimeframe, 1 );
  }
//+------------------------------------------------------------------+
//| Возвращает Time                                                  |
//+------------------------------------------------------------------+
datetime Time ( const string symbol_name, const ENUM_TIMEFRAMES timeframe, const int shift)
  {
   datetime array[];
   ArraySetAsSeries (array, true );
   return ( CopyTime (symbol_name,timeframe,shift, 1 ,array)== 1 ? array[ 0 ] : 0 );
  }
//+------------------------------------------------------------------+
//| Возвращает наименование таймфрейма                               |
//+------------------------------------------------------------------+
string TimeframeToString( const ENUM_TIMEFRAMES timeframe)
  {
   return StringSubstr ( EnumToString (timeframe), 7 );
  }
//+------------------------------------------------------------------+
//| Возвращает наименование метода МА                                |
//+------------------------------------------------------------------+
string MethodToString( ENUM_MA_METHOD method)
  {
   return StringSubstr ( EnumToString (method), 5 );
  }
//+------------------------------------------------------------------+

Gereksiz her şeyi kaldırdı.

Hafta sonları kene olmadığını ve satırın yalnızca eşleşen zaman dilimlerinde - çalışma zaman dilimi ve ayarlardaki zaman dilimlerinde - hemen görüntüleneceğini unutmayın.

Ayarlarda belirtilenden farklı bir zaman diliminde çalıştırırsanız, o zaman hafta sonu keneler olmadan, grafiğin sağ fare tuşu ile yenilenmesi için zorlamanız gerekir: Yenile, böylece çizgi çizilir.

 
Artyom Trishkin :

Gereksiz her şeyi kaldırdı.

Hafta sonları kene olmadığını ve satırın yalnızca eşleşen zaman dilimlerinde - çalışma zaman diliminde ve ayarlardaki zaman dilimlerinde - hemen görüntüleneceğini unutmayın.

Ayarlarda belirtilenden farklı bir zaman diliminde çalıştırırsanız, o zaman hafta sonu keneler olmadan, grafiğin sağ fare tuşu ile yenilenmesi için zorlamanız gerekir: Yenile, böylece çizgi çizilir.

Çok teşekkürler !!1 Bütün gün tembellik yaptım…. Gözler kapalı. tekrar SPS
 

Herkese iyi günler.

 
Anladım. Teşekkür ederim.
 
Herkese iyi günler.
Zaman uyumsuzluğu sorunu ile karşılaştım, çözümü için yardım rica ediyorum.
Siparişlerin neden geç kaldığını anlamaya çalışırken, hata ayıklama bilgilerini Expert Advisor'a kaydediyorum, kesinlikle güvenilir, ekran görüntüsünde görebilirsiniz. Mesaj süresinin, çubukların başlama zamanından (TF=M30) 4,5 saat daha uzun olduğunu görüyorum, siparişler bu gecikmeyle ayrılıyor. Onlar. hata ayıklama bilgisine göre, giriş koşulunun karşılandığını görüyorum, örneğin barda saat 10:00 ve sipariş barda saat 14:30 ile ayrılıyor. İlk defa bununla karşılaştım. Ne yapalım?
Dosyalar:
MT5dataerror.jpg  724 kb
 

YouTube'da takip eden bir durdurma kodu buldum, bunu nasıl kullanabilirim?

 #include <Trade\Trade.mqh> 
CTrade trade;

void OnTick ()
  {
     double Ask = NormalizeDouble ( SymbolInfoDouble ( _Symbol , SYMBOL_ASK ), _Digits );
    
         if ( PositionsTotal ()< 2 )
    
    trade.Buy( 0.10 , NULL , Ask ,( Ask - 1000 * _Point ),( Ask + 500 * _Point ), NULL );
    
    CheckTrailingStop( Ask );
   
  }
void    CheckTrailingStop( double Ask )
  {
     double SL = NormalizeDouble ( Ask - 150 * _Point , _Digits );
     
     for ( int i= PositionsTotal ()- 1 ; i>= 0 ; i--)
     {
     string symbol= PositionGetSymbol (i);
     if ( _Symbol ==symbol)
     {
     ulong PositionTicket= PositionGetInteger ( POSITION_TICKET );
     
     double CurrentStopLoss= PositionGetDouble ( POSITION_SL );
     if (CurrentStopLoss<SL)
     {
       trade.PositionModify(PositionTicket,(CurrentStopLoss + 10 * _Point ), 0 );
     }
   }
  }   
}
 
Vladimir Baskakov :

YouTube'da takip eden bir durdurma kodu buldum, bunu nasıl kullanabilirim?

bu trol sadece satın almak içindir ve şöyle uygulanır, kullanılamaz.

 
Nikolay Khrushchev :

bu trol sadece satın almak içindir ve şöyle uygulanır, kullanılamaz.

tamam teşekkürler