Ücretsiz bir gösterge yazacağım - sayfa 19

 
Tango_X :

OnTimer() kullanarak uyguladım ve hiçbir şey çıkmadı. Ne yazık ki onTimer() olayı sırasında gösterge hesaplanmaz ve gecikme kaydedilir, belki yüksek sesli bir ifade ve yanlış bir şey yaptım, beni düzeltin. Teşekkür ederim!

Yaptığınız şey OnTimer() aracılığıyla bir uygulama değil. Orada yalnızca değerleri alırsınız (ayrıca, tüm tarih ve hatta her saniye, hatta kontroller olmadan). Genel olarak, bunu kendiniz uygulayabilmeniz pek olası değildir. Şube yazarının cevabını bekleyin :)
 
Alexey Kozitsyn :
Yaptığınız şey OnTimer() aracılığıyla bir uygulama değil. Orada yalnızca değerleri alırsınız (ayrıca, tüm tarih ve hatta her saniye, hatta kontroller olmadan). Genel olarak, bunu kendiniz uygulayabilmeniz pek olası değildir. Şube yazarının cevabını bekleyin :)
Evet teşekkür ederim! Yardım etmeye söz verdiği şubenin yazarıyla zaten iletişime geçtim! Bir cevap beklemek))
 
Tango_X :

OnTimer() kullanarak uyguladım ve hiçbir şey çıkmadı. Ne yazık ki, onTimer() olayı sırasında, gösterge hesaplanmaz ve gecikme kaydedilir, belki yüksek sesle bir ifade ve yanlış bir şey yaptım, beni düzeltin. Teşekkür ederim!

//+------------------------------------------------------------------+
//|                                              TestCopyBuffer3.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots    1
//---- plot MA
#property indicator_label1   "MA"
#property indicator_type1   DRAW_LINE
#property indicator_color1   clrRed
#property indicator_style1   STYLE_SOLID
#property indicator_width1   1
//--- input parameters
bool                AsSeries= true ;
int                 period= 15 ;
input ENUM_TIMEFRAMES     TimeFrame= PERIOD_CURRENT ; //Период графика
ENUM_MA_METHOD      smootMode= MODE_EMA ;
ENUM_APPLIED_PRICE price= PRICE_CLOSE ;
int                 shift= 0 ;
//--- indicator buffers
double                    MABuffer[];
int                       ma_handle;
int to_copy;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,MABuffer, INDICATOR_DATA );
   Print ( "Параметр AsSeries = " ,AsSeries);
   Print ( "Индикаторный буфер после SetIndexBuffer() является таймсерией = " ,
         ArrayGetAsSeries (MABuffer));
//--- set short indicator name
   IndicatorSetString ( INDICATOR_SHORTNAME , "MA(" +period+ ")" +AsSeries);
//--- set AsSeries (depends on input parameter)
   ArraySetAsSeries (MABuffer,AsSeries);
   Print ( "Индикаторный буфер после ArraySetAsSeries(MABuffer,true); является таймсерией = " ,
         ArrayGetAsSeries (MABuffer));
//---
   ma_handle= iMA ( Symbol (),TimeFrame,period,shift,smootMode,price);
   EventSetTimer ( 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[])
  {
//--- check if all data calculated
   if ( BarsCalculated (ma_handle)<rates_total) 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;
       //--- last value is always copied
      to_copy++;
     }
//--- try to copy
  
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer ()
  {
//---
   CopyBuffer (ma_handle, 0 , 0 ,to_copy,MABuffer);
   Print ( "Таймер" );
  }
//+------------------------------------------------------------------+
Sanırım ne anlama geliyordu - OnCalculate içindeki her şeyi OnTimer'a taşıyın
 
Yurij Izyumov :
Sanırım ne anlama geliyordu - OnCalculate içindeki her şeyi OnTimer'a taşıyın
Çalışırsa neden olmasın!
 
Burada bir çözüm önerildi, ancak acemi bir programcı olduğum için bunu uygulamak benim için oldukça zor, bu yüzden yardım için bu konuya döndüm
 
Yurij Izyumov :

yeniden yazmak için, dahil edilen tüm göstergelerin de mql5 altında olması gerekir.

Peki bir yeniden çevrime ne dersiniz? Çok karmaşık kod???
 
Tünaydın. Delta_RSI göstergesini kullanıyorum, sürekli olarak aynı anda her iki yönde de histo çiziyorum (ekran görüntüsüne bakın) (bir hata arayın). Ve bilinen renk sinyalini sıfır üstü / altı için farklı renklere boyayabilirsiniz. Görebiliyor musun (düzelt)? Teşekkür ederim.
 
Igor371 :
Tünaydın. Delta_RSI göstergesini kullanıyorum, sürekli olarak aynı anda her iki yönde de histo çiziyorum (ekran görüntüsüne bakın) (bir hata arayın). Ve bilinen renk sinyalini sıfır üstü / altı için farklı renklere boyayabilirsiniz. Görebiliyor musun (düzelt)? Teşekkür ederim.

kırmak için ne yaptığını tarif et)))

program, TF, sıra, vb.

 
Yurij Izyumov :

kırmak için ne yaptığını tarif et)))

program, TF, sıra, vb.

Evet, hiçbir şey yapmıyorum. Örneğin 1000/250'lik büyük periyotlar için M1 üzerinde duruyor. Bir noktada, öz aynı anda sıfırın her iki tarafında olur. Hangi noktada özellikle onu yakalamadım, daha yakından bakacağım. Ve kodda her şey bir paket, düzeltilecek bir şey yok mu?
 
Tünaydın. Göstergenin kırılma anını yakalamak imkansızdır. İşte duruyor ve her şey yolunda, ama bir kez kırıldı. Brocks'ın yaptığı herhangi bir manipülasyona rastlamadık, çünkü genellikle makasçılarla aynı çöpü yaşıyorum (ama her şeyi göstergelerin çizimine ve burada RSI'ye atfediyorum) Ekran görüntüleriyle bir baykuşu nöbet tutacağım .
Dosyalar:
GBPUSD.mM1.png  32 kb
Neden: