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

 

mql4'te iCustom yardımıyla, programlamadan hiçbir şey anlamasam da, başkasının hazır göstergelerini kullanarak sakince göstergeler yaptım... Yeterince sezgiye sahiptim. Ve mql5'te nasıl anlamaya çalışırsam çalışayım hiçbir şey çalışmıyor. Bana yardım et lütfen.

Ex5'te bu gösterge var. İndirilenler klasörüne koyun. Her iki çizgisini de alıp diğer dönemlerde grafiği çizmek, yani iCustom kullanarak çoklu zaman çerçevesi yapmak istiyorum.

Sıfırdan bir gösterge yazamadığım için basit bir Bears Power göstergesinin kodunu aldım. Orada hiçbir şeyi değiştirmedim, gösterge_chart_window ve DRAW_LINE'ı ve anladığım kadarıyla mevcut TF'de varsayılan parametrelerle ilk tamponun verilerini çekmesi gereken satırı değiştirmem dışında:

ExtBearsBuffer[i]= iCustom ( NULL , 0 , "Downloads\\RSI Analytics" );

Her şey derlenir, hiçbir şey çizilmez. Başka neye ihtiyacı var? :(

 #property copyright    "2009, MetaQuotes Software Corp."
#property link          "http://www.mql5.com"
#property description "Bears Power"
//--- indicator settings
#property indicator_chart_window                        //---------------------------------
#property indicator_buffers 2
#property indicator_plots    1
#property indicator_type1    DRAW_LINE                  //---------------------------------------
#property indicator_color1   Silver
#property indicator_width1    2
//--- input parameters
input int InpBearsPeriod= 13 ; // Period
//--- indicator buffers
double     ExtBearsBuffer[];
double     ExtTempBuffer[];
//--- handle of EMA 
int        ExtEmaHandle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,ExtBearsBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,ExtTempBuffer, INDICATOR_CALCULATIONS );
//---
   IndicatorSetInteger ( INDICATOR_DIGITS , _Digits + 1 );
//--- sets first bar from what index will be drawn
   PlotIndexSetInteger ( 0 , PLOT_DRAW_BEGIN ,InpBearsPeriod- 1 );
//--- name for DataWindow and indicator subwindow label
   IndicatorSetString ( INDICATOR_SHORTNAME , "Bears(" +( string )InpBearsPeriod+ ")" );
//--- get MA handle
   ExtEmaHandle= iMA ( NULL , 0 ,InpBearsPeriod, 0 , MODE_EMA , PRICE_CLOSE );
//--- initialization done
  }
//+------------------------------------------------------------------+
//| Average True Range                                               |
//+------------------------------------------------------------------+
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 &TickVolume[],
                 const long & Volume [],
                 const int &Spread[])
  {
   int i,limit;
//--- check for bars count
   if (rates_total<InpBearsPeriod)
       return ( 0 ); // not enough bars for calculation   
//--- not all data may be calculated
   int calculated= BarsCalculated (ExtEmaHandle);
   if (calculated<rates_total)
     {
       Print ( "Not all data of ExtEmaHandle is calculated (" ,calculated, "bars ). Error" , GetLastError ());
       return ( 0 );
     }
//--- we can copy not all data
   int to_copy;
   if (prev_calculated>rates_total || prev_calculated< 0 ) to_copy=rates_total;
   else
     {
      to_copy=rates_total-prev_calculated;
       if (prev_calculated> 0 ) to_copy++;
     }
//---- get ma buffers
   if ( IsStopped ()) return ( 0 ); //Checking for stop flag
   if ( CopyBuffer (ExtEmaHandle, 0 , 0 ,to_copy,ExtTempBuffer)<= 0 )
     {
       Print ( "getting ExtEmaHandle is failed! Error" , GetLastError ());
       return ( 0 );
     }
//--- first calculation or number of bars was changed
   if (prev_calculated<InpBearsPeriod)
      limit=InpBearsPeriod;
   else limit=prev_calculated- 1 ;
//--- the main loop of calculations
   for (i=limit;i<rates_total && ! IsStopped ();i++)
     {
      ExtBearsBuffer[i]= iCustom ( NULL , 0 , "Downloads\\RSI Analytics" ); \\--------------------------------------------
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
Технический индикатор RSI ANALYTICS
Технический индикатор RSI ANALYTICS
  • incelemeler: 5
  • 2013.11.01
  • STRAT ANALYTICS
  • www.mql5.com
Зачем нам RSI в отдельном окне, если его можно построить в основном окне графика, что гораздо более понятно? RSI ANALYTICS - это индикатор, следящий за рынком, созданный на основе той же идеи, что и традиционный RSI (индекс относительной силы). При этом он строится не в отдельном подокне, а в том же окне, что и график цены финансового...
 
Nilog :

mql4'te iCustom yardımıyla, programlamadan hiçbir şey anlamasam da, başkasının hazır göstergelerini kullanarak sakince göstergeler yaptım... Yeterince sezgiye sahiptim. Ve mql5'te nasıl anlamaya çalışırsam çalışayım hiçbir şey çalışmıyor. Bana yardım et lütfen.

Ex5'te bu gösterge var. İndirilenler klasörüne atın. Her iki çizgisini de alıp diğer dönemlerde grafiği çizmek, yani iCustom kullanarak çoklu zaman çerçevesi yapmak istiyorum.

Sıfırdan bir gösterge yazamadığım için basit bir Bears Power göstergesinin kodunu aldım. Orada hiçbir şeyi değiştirmedim, gösterge_chart_window ve DRAW_LINE'ı ve anladığım kadarıyla mevcut TF'de varsayılan parametrelerle ilk tamponun verilerini çekmesi gereken satırı değiştirmem dışında:

Her şey derlenir, hiçbir şey çizilmez. Başka neye ihtiyacı var? :(

mql5'te, özel ve standart göstergelerle çalışma, mql4'tekinden farklı şekilde düzenlenmiştir. iCustom kullanarak mql4'te yalnızca bir gösterge değeri elde etmek mümkünse, mql5'te tüm geçmiş derinliği için gösterge değerlerini bir diziye alabilirsiniz. İkinci ana fark, gösterge tamponlarındaki indekslemenin yönüdür.

Kodun tamamına bakmak ve orijinali ile karşılaştırmak sıkıcıdır, bu yüzden sadece ana kodlara dikkat çekeceğim:

Dosya, Göstergeler klasöründe veya aynı Göstergeler klasörünün bir alt klasöründe bulunmalıdır.

MA göstergesinin tutamağını almak için satır

ExtEmaHandle= iMA ( NULL , 0 ,InpBearsPeriod, 0 , MODE_EMA , PRICE_CLOSE );

ve işte MA göstergesinin değerini almak için satır

 if ( CopyBuffer (ExtEmaHandle, 0 , 0 ,to_copy,ExtTempBuffer)<= 0 )

bu durumda, ek bir arabellek veya diziye.

Özel gösterge verilerinin alındığı ortaya çıktı

ExtBearsHandle= iCustom ( NULL , 0 , "RSI Analytics" );
CopyBuffer (ExtBearsHandle, 0 , 0 ,to_copy,ExtTempBuffer)

Ve sonra, bu ek tampondan gösterge değerlerini aldıktan sonra, onları bir şekilde işleyebilir veya indeksleme yönünü unutmadan, dokunmadan gösterge tamponuna koyabilirsiniz.

 
Alexey Viktorov :


Teşekkür ederim! Anladığım kadarıyla bir şeyler yazdım ve şimdi derleme sırasında sadece bir hata çıkıyor. Çizgide

 CopyBuffer (ExtBearsHandle, 0 , 0 ,to_copy,ExtTempBuffer);

to_copy hatası - bildirilmemiş tanımlayıcı.

Hangi bölümde ve nasıl beyan ederim?

 
Nilog :

Teşekkür ederim! Anladığım kadarıyla bir şeyler yazdım ve şimdi derleme sırasında sadece bir hata çıkıyor. Çizgide

to_copy hatası - bildirilmemiş tanımlayıcı.

Hangi bölümde ve nasıl beyan ederim?

İpuçlarımı kodunuzla ve daha önce düzeltilmiş kaynak kodla karşılaştırmanız gerekiyor. Bu kodlarda bu değişken bildirilir. Ve sözlerimin yanı sıra, genel olarak bina göstergelerinin mantığını anlamaya çalışmalı ve sadece sabun için bızı değiştirmemelidir.

 
MetaTrader 5'te, bir danışmanın bir para birimi üzerindeki çalışması, örneğin RTS endeksindeki işten kökten farklı olabilir mi?
 
lil_lil :
MetaTrader 5'te, bir danışmanın bir para birimi üzerindeki çalışması, örneğin RTS endeksindeki işten kökten farklı olabilir mi?

Uzman Danışman, YAZILDIĞI şekilde çalışacaktır. Ve başka türlü değil.

Ancak dikkate alınması gereken nüanslara gelince: RTS bir takastır, yani NETTING tipi bir pozisyon muhasebesi anlamına gelir. Uzman Danışman başlangıçta ağ üzerinde çalışmak üzere tasarlanmadıysa, çalışmanın sonucu tahmin edilemez.

 
Vladimir Karputov :

Uzman Danışman, YAZILDIĞI şekilde çalışacaktır. Ve başka türlü değil.

Ancak dikkate alınması gereken nüanslara gelince: RTS bir takastır, yani NETTING tipi bir pozisyon muhasebesi anlamına gelir. Uzman Danışman başlangıçta ağ üzerinde çalışmak üzere tasarlanmadıysa, çalışmanın sonucu tahmin edilemez.

Teşekkürler , ağ üzerinde çalışmak üzere tasarlanıp tasarlanmadığını koddan tam olarak nasıl öğreneceksiniz.

Stratejide çok yönlü pozisyonlar yoktur.

 
lil_lil :

Teşekkürler , ağ üzerinde çalışmak üzere tasarlanıp tasarlanmadığını koddan tam olarak nasıl öğreneceksiniz.

Stratejide çok yönlü pozisyonlar yoktur.

Ve eğer öyleyse (işte her zaman BİR pozisyon vardır), o zaman hiçbir fark yoktur - en azından netleştirme, en azından riskten korunma.

 
Vladimir Karputov :

Ve eğer öyleyse (işte her zaman BİR pozisyon vardır), o zaman hiçbir fark yoktur - en azından netleştirme, en azından riskten korunma.

Para birimlerinde (Forex) bir ters sinyal ile pozisyonlar kapatılır, ancak borsada değil. Nereye bakmalı, ne aramalı?

 
lil_lil :

Bir ters sinyal ile, pozisyonlar para birimlerinde kapatılır, ancak borsada kapatılmaz. Nereye bakmalı, ne aramalı?

Pozisyonu kapatma komutunun gittiği yeri arayın.