Komut dosyaları: Export Indicator's Values - sayfa 2

[Silindi]  
İşe yaramıyor.
 
Değerleri 50 dönemlik Üstel Hareketli Ortalama'dan dışa aktaramıyorum, biri bana yardımcı olabilir mi?
 

Klasördeki dosyayı arayın

C:\Users\XXX\AppData\Roaming\MetaQuotes\Terminal\ZXVVDASDADDEDADS23132\MQL5\Files

 
Komut dosyası çok güzel, ancak veriler excel'in RDTR işlevini kullanmak için bir RTD sunucusu aracılığıyla doğrudan excel'e gidebilseydi daha çok isterdim. Böyle bir şey planladınız mı?
 
 
Jose Luis Perez Navarro:
Komut dosyası çok iyi, ancak veriler excel'in RDTR işlevini kullanmak için bir RTD sunucusu aracılığıyla doğrudan excel'e gidebilseydi daha çok isterdim. Aklınızda böyle bir şey var mı?
xm.cm gerçek14
 

Evet çalışıyor. ...MQL5\Files yoluna bakmanız gerekiyor, orada CSV dosyası var.

OBV (gerçek hacim) değerlerini kaydetmek için değiştirdim, sadece aşağıdaki kodu değiştirin


Indicator_Directory_And_Name="Examples\\OBV";
IndicatorPeriod=VOLUME_REAL;
 
Ecirba:

Merhaba,

İş için teşekkürler. Ne yazık ki betiği çalıştırdığımda herhangi bir dosya oluşturulmuyor. Script'i C:/temp/ dosyasına yazacak şekilde güncelledim. Hata ayıklamada çalıştırdığımda dosya adının doğru olduğunu görebiliyorum ve herhangi bir hata almıyorum ancak dosya yok.

Bir ipucu var mı?


Tanıtıcıyı kontrol ederseniz, muhtemelen -1 döndürür. (geçersiz tanıtıcı)


Print ( "fileHandle Value=", fileHandle);


Bazı nedenlerden dolayı MT5, dosyaları varsayılandan farklı yerlere kaydetmenizi sevmez. Sadece orijinal kod olarak bırakın ve ...MQL5\Files yoluna yazacaktır

 

Komut dosyası için tebrikler, volatilitypivot bayrağının değerlerini csv'ye aktarıyorum, ancak komut dosyası yalnızca yüksek değerleri doğru bir şekilde dışa aktarıyor, düşük değerlerin görünmesi gereken satırlarda bir hata görünüyor.

Biri bana yardım edebilir mi lütfen?

VolatilityPivot komut dosyası

#property indicator_chart_window
//--- Göstergeyi hesaplamak ve çizmek için 4 tampon kullanılır
#property indicator_buffers 4
//--- 4 grafik kullanılır
#property indicator_plots   4
//+----------------------------------------------+
//| Boğa göstergesi çizim parametreleri |
//+----------------------------------------------+
//--- gösterge 1'i çizgi olarak çizme
#property indicator_type1   DRAW_LINE
//--- mavi renk gösterge çizgisi için kullanılır
#property indicator_color1  clrBlue
//--- gösterge 1 satırı bir nokta-tire satırıdır
#property indicator_style1  STYLE_DASHDOTDOT
//--- gösterge 1 satır genişliği 2'ye eşittir
#property indicator_width1  2
//---- gösterge etiketinin görüntülenmesi
#property indicator_label1  "Upper VolatilityPivot"
//+----------------------------------------------+
//| Bir düşüş göstergesi çizme parametreleri |
//+----------------------------------------------+
//--- gösterge 2'yi çizgi olarak çizme
#property indicator_type2   DRAW_LINE
//--- Gösterge çizgisi için HotPink rengi kullanılır
#property indicator_color2  clrHotPink
//--- gösterge 2 satırı bir nokta-tire satırıdır
#property indicator_style2  STYLE_DASHDOTDOT
//--- gösterge 2 satır genişliği 2'ye eşittir
#property indicator_width2  2
//---- gösterge etiketinin görüntülenmesi
#property indicator_label2  "Lower VolatilityPivot"
//+----------------------------------------------+
//| Boğa göstergesi çizim parametreleri |
//+----------------------------------------------+
//--- 3 göstergesini etiket olarak çizme
#property indicator_type3   DRAW_ARROW
//--- Gösterge için DeepSkyBlue rengi kullanılır
#property indicator_color3  clrDeepSkyBlue
//--- gösterge 3 genişliği 4'e eşittir
#property indicator_width3  4
//--- gösterge etiketinin görüntülenmesi
#property indicator_label3  "Buy VolatilityPivot"
//+----------------------------------------------+
//| Bir düşüş göstergesi çizme parametreleri |
//+----------------------------------------------+
//--- 4 göstergesini etiket olarak çizme
#property indicator_type4   DRAW_ARROW
//--- gösterge için kırmızı renk kullanılır
#property indicator_color4  clrRed
//--- gösterge 4 genişliği 4'e eşittir
#property indicator_width4  4
//--- gösterge etiketinin görüntülenmesi
#property indicator_label4  "Sell VolatilityPivot"
//+----------------------------------------------+
//| sabitlerin bildirilmesi |
//+----------------------------------------------+
#define  RESET 0  // Gösterge yeniden hesaplama komutunu terminale döndürmek için bir sabit
//+----------------------------------------------+
//| Numaralandırma bildirimi |
//+----------------------------------------------+
enum Mode_
  {
   Mode_ATR=0,   //ATR
   Mode_Price    //Fiyat sapması
  };
//+----------------------------------------------+
//| Gösterge giriş parametreleri |
//+----------------------------------------------+
input uint   atr_range=100;
input uint   ima_range=10;
input double atr_factor=3;
input Mode_  Mode=Mode_ATR;
input  uint  DeltaPrice=200;
input int    Shift=0;          // Göstergenin çubuk cinsinden yatay kaydırması
//+----------------------------------------------+
//--- dinamik dizilerin bildirimi
//--- gösterge tamponları olarak kullanılacaktır
double ExtMapBufferUp[];
double ExtMapBufferDown[];
double ExtMapBufferUp1[];
double ExtMapBufferDown1[];
//---
double dDeltaPrice;
//--- Gösterge tutamaçları için tamsayı değişkenlerinin bildirimi
int ATR_Handle;
//--- veri hesaplamasının başlangıcı için tamsayı değişkenlerinin bildirilmesi
int min_rates_total;
//+------------------------------------------------------------------+
//| CMoving_Average sınıf açıklaması|
//+------------------------------------------------------------------+
#include <SmoothAlgorithms.mqh>
//+------------------------------------------------------------------+
//| Özel gösterge başlatma işlevi |
//+------------------------------------------------------------------+ 
int OnInit()
  {
//--- ATR göstergesinin tutamacını alma
   if(Mode==Mode_ATR)
     {
      min_rates_total=int(atr_range+ima_range)+1;
      ATR_Handle=iATR(NULL,0,atr_range);
      if(ATR_Handle==INVALID_HANDLE)
        {
         Print(" Failed to get handle of the ATR indicator");
         return(INIT_FAILED);
        }
     }
   else
     {
      min_rates_total=3;
      dDeltaPrice=DeltaPrice*_Point;
     }
//--- ExtMapBufferUp[] dinamik dizisini gösterge tamponu olarak ayarlayın
   SetIndexBuffer(0,ExtMapBufferUp,INDICATOR_DATA);
//---- gösterge 1'i Shift ile yatay olarak kaydırma
   PlotIndexSetInteger(0,PLOT_SHIFT,Shift);
//--- gösterge çiziminin başlangıcını kaydırma 1
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,min_rates_total);
//--- tampon öğelerini zaman serisi olarak indeksleme 
   ArraySetAsSeries(ExtMapBufferUp,true);
//--- grafikte görünmeyecek gösterge değerlerinin ayarlanması
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//--- ExtMapBufferDown[] dinamik dizisini bir gösterge tamponu olarak ayarlayın
   SetIndexBuffer(1,ExtMapBufferDown,INDICATOR_DATA);
//---- gösterge 2'yi Shift ile yatay olarak kaydırma
   PlotIndexSetInteger(1,PLOT_SHIFT,Shift);
//--- 2 göstergesinin çizim hesaplamasının başlangıç noktasının kaydırılması
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,min_rates_total);
//--- tampon öğelerini zaman serisi olarak indeksleme 
   ArraySetAsSeries(ExtMapBufferDown,true);
//--- grafikte görünmeyecek gösterge değerlerinin ayarlanması
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//--- ExtMapBufferUp1[] dinamik dizisini bir gösterge tamponu olarak ayarlayın
   SetIndexBuffer(2,ExtMapBufferUp1,INDICATOR_DATA);
//---- gösterge 1'i Shift ile yatay olarak kaydırma
   PlotIndexSetInteger(2,PLOT_SHIFT,Shift);
//--- göstergenin çizim başlangıcını kaydırma 3
   PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,min_rates_total);
//--- tampon öğelerini zaman serisi olarak indeksleme 
   ArraySetAsSeries(ExtMapBufferUp1,true);
//--- grafikte görünmeyecek gösterge değerlerinin ayarlanması
   PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//--- gösterge sembolü
   PlotIndexSetInteger(2,PLOT_ARROW,118);
//--- ExtMapBufferDown1[] dinamik dizisini bir gösterge tamponu olarak ayarlayın
   SetIndexBuffer(3,ExtMapBufferDown1,INDICATOR_DATA);
//---- gösterge 2'yi Shift ile yatay olarak kaydırma
   PlotIndexSetInteger(3,PLOT_SHIFT,Shift);
//--- göstergenin çizim başlangıcını kaydırma 4
   PlotIndexSetInteger(3,PLOT_DRAW_BEGIN,min_rates_total);
//--- tampon öğelerini zaman serisi olarak indeksleme 
   ArraySetAsSeries(ExtMapBufferDown1,true);
//--- grafikte görünmeyecek gösterge değerlerinin ayarlanması
   PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//--- gösterge sembolü
   PlotIndexSetInteger(3,PLOT_ARROW,118);
//--- ayrı bir alt pencerede ve açılır yardımda görüntülenecek adın oluşturulması
   IndicatorSetString(INDICATOR_SHORTNAME,"VolatilityPivot");
//--- gösterge değerlerinin doğruluğunun belirlenmesi
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//--- başlatma sonu
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Özel gösterge yineleme işlevi|
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,    // geçerli tikte geçmişteki çubuk sayısı
                const int prev_calculated,// önceki tikteki çubuklardaki geçmiş miktarı
                const datetime &time[],
                const double &open[],
                const double& high[],     // gösterge hesaplaması için maksimum fiyatların fiyat dizisi
                const double& low[],      // gösterge hesaplaması için minimum fiyatların fiyat dizisi
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//--- çubuk sayısının hesaplama için yeterli olup olmadığını kontrol etme
   if((BarsCalculated(ATR_Handle)<rates_total && Mode==Mode_ATR) || rates_total<min_rates_total) return(RESET);
//--- yerel değişkenlerin bildirimleri 
   double DeltaStop,Stop;
   static double PrevStop;
   int limit,bar;
//--- zaman serilerinde olduğu gibi dizilerdeki öğeleri indeksleme 
   ArraySetAsSeries(close,true);
//--- çubukları yeniden hesaplama döngüsü için 'limit' başlangıç indeksinin hesaplanması
   if(prev_calculated>rates_total || prev_calculated<=0) // bir göstergenin ilk hesaplama başlangıcı için kontrol
     {
      limit=rates_total-min_rates_total-1;               // tüm çubukların hesaplanması için başlangıç indeksi
      PrevStop=close[limit+1];
     }
   else limit=rates_total-prev_calculated;               // yeni çubukların hesaplanması için başlangıç indeksi
//---
   if(Mode==Mode_Price)
     {
      //--- ana gösterge hesaplama döngüsü
      for(bar=limit; bar>=0; bar--)
        {
         ExtMapBufferUp1[bar]=EMPTY_VALUE;
         ExtMapBufferDown1[bar]=EMPTY_VALUE;
         DeltaStop=dDeltaPrice;
         //---
         if(close[bar]==PrevStop) Stop=PrevStop;
         else
           {
            if(close[bar+1]<PrevStop && close[bar]<PrevStop) Stop=MathMin(PrevStop,close[bar]+DeltaStop);
            else
              {
               if(close[bar+1]>PrevStop && close[bar]>PrevStop) Stop=MathMax(PrevStop,close[bar]-DeltaStop);
               else
                 {
                  if(close[bar]>PrevStop) Stop=close[bar]-DeltaStop;
                  else Stop=close[bar]+DeltaStop;
                 }
              }
           }
         //---
         if(close[bar]>Stop) ExtMapBufferUp[bar]=Stop; else ExtMapBufferUp[bar]=EMPTY_VALUE;
         if(close[bar]<Stop) ExtMapBufferDown[bar]=Stop; else ExtMapBufferDown[bar]=EMPTY_VALUE;
         if(ExtMapBufferUp[bar+1]==EMPTY_VALUE && ExtMapBufferUp[bar]!=EMPTY_VALUE) ExtMapBufferUp1[bar]=ExtMapBufferUp[bar];
         if(ExtMapBufferDown[bar+1]==EMPTY_VALUE && ExtMapBufferDown[bar]!=EMPTY_VALUE) ExtMapBufferDown1[bar]=ExtMapBufferDown[bar];
         if(bar) PrevStop=Stop;
        }
     }
//---
   if(Mode==Mode_ATR)
     {
      //--- yerel değişkenlerin bildirimleri 
      double ATR[];
      int to_copy,maxbar;
      //--- SmoothAlgorithms.mqh dosyasından CMoving_Average sınıf değişkenlerinin bildirimi 
      static CMoving_Average EMA;
      //--- zaman serilerinde olduğu gibi dizilerdeki öğeleri indeksleme 
      ArraySetAsSeries(ATR,true);
      to_copy=limit+1;
      if(CopyBuffer(ATR_Handle,0,0,to_copy,ATR)<=0) return(RESET);
      maxbar=rates_total-min_rates_total-1;
      //--- ana gösterge hesaplama döngüsü
      for(bar=limit; bar>=0; bar--)
        {
         ExtMapBufferUp1[bar]=EMPTY_VALUE;
         ExtMapBufferDown1[bar]=EMPTY_VALUE;
         DeltaStop=atr_factor*EMA.EMASeries(maxbar,prev_calculated,rates_total,ima_range,ATR[bar],bar,true);
         //---
         if(close[bar]==PrevStop) Stop=PrevStop;
         else
           {
            if(close[bar+1]<PrevStop && close[bar]<PrevStop) Stop=MathMin(PrevStop,close[bar]+DeltaStop);
            else
              {
               if(close[bar+1]>PrevStop && close[bar]>PrevStop) Stop=MathMax(PrevStop,close[bar]-DeltaStop);
               else
                 {
                  if(close[bar]>PrevStop) Stop=close[bar]-DeltaStop;
                  else Stop=close[bar]+DeltaStop;
                 }
              }
           }
         //---
         if(close[bar]>Stop) ExtMapBufferUp[bar]=Stop; else ExtMapBufferUp[bar]=EMPTY_VALUE;
         if(close[bar]<Stop) ExtMapBufferDown[bar]=Stop; else ExtMapBufferDown[bar]=EMPTY_VALUE;
         //---
         if(ExtMapBufferUp[bar+1]==EMPTY_VALUE && ExtMapBufferUp[bar]!=EMPTY_VALUE) ExtMapBufferUp1[bar]=ExtMapBufferUp[bar];
         if(ExtMapBufferDown[bar+1]==EMPTY_VALUE && ExtMapBufferDown[bar]!=EMPTY_VALUE) ExtMapBufferDown1[bar]=ExtMapBufferDown[bar];
         //---
         if(bar) PrevStop=Stop;
        }
     }
//--- 
   return(rates_total);
  }

csv hatası

 

Bu çok faydalı.

Yazar bir boğa.