"MQL5: Kendi Göstergenizi Oluşturma" makalesi için tartışma - sayfa 5

 
okwh #:

for(int i=1;i<rates_total;i++)
{
MTMBuffer[i]=fiyat[i]-fiyat[i-1];
AbsMTMBuffer[i]=fabs(MTMBuffer[i]);
}

Neden [i]'yi hesaplamak ve i=1'i başlatmak için [i-1] kullanılıyor? [0] yok mu?

MTMBuffer[i]=price[i]-price[i-1];


Merhaba.

Genel olarak konuşmak gerekirse, "i" ile başlayan yerel mql5 gösterge işlevlerinden birini kullanırsanız, rotaya dikkat etmenize gerek yoktur. Copybuffer bunu sizin için yapacaktır.

Öte yandan, belirli bir dev üzerinden giderseniz, özellikle ilk geçiş için çubuk sayısına dikkat etmeniz gerekir, çünkü aksi takdirde aralık dışı olma riskiyle karşı karşıya kalırsınız.


Irsi kullanan bu rsi 'nin koduna bakın, kurs için pozisyon yok ve her şey yolunda gidiyor.

Öte yandan, bu Rsi işlevden geçmez.

Tabiri caizse her şey elle hesaplanıyor ve her şeyin yolunda gitmesi için konumlandırmayı iyi yapmanız gerekiyor.

Rsi code for beginners by William210
Rsi code for beginners by William210
  • www.mql5.com
Rsi beginner tutorial to learn how to code in MQL5
 
//+------------------------------------------------------------------+
//|Gerçek Güç Endeksi.mq5 |
//| Telif Hakkı 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 TSI
#property indicator_label1  "TSI"
#property indicator_type1   DRAW_LINE
#property indicator_color1  Blue
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- giriş parametreleri
input int      r=25;
input int      s=13;
//--- gösterge tamponları
double         TSIBuffer[];
//+------------------------------------------------------------------+
//| Özel gösterge başlatma işlevi |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- gösterge tamponları eşleme

   SetIndexBuffer(0,TSIBuffer,INDICATOR_DATA);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Özel gösterge yineleme işlevi|
//+------------------------------------------------------------------+
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[])
  {
//---
//--- sonraki çağrı için prev_calculated değerini döndürür
   return(rates_total);
  }
//+------------------------------------------------------------------+

neden oninit
içinde 0 döndürmesi gerekiyor?

 
ziyang2048 #:

neden oninit
içinde 0 döndürmesi gerekiyor?

MQL5'te OnInit() fonksiyonu, gösterge, uzman danışman (EA) veya kod başlatıldığında çağrılır. Başlatma işleminin başarılı veya başarısız olduğunu belirtmek için bir tamsayı değeri döndürmesi beklenir.

OnInit() 0 değerini döndürdüğünde, başlatma işleminin başarılı olduğunu gösterir. Başlatma sırasında bir şeylerin yanlış gittiğini bildirmeniz gerekiyorsa, sıfır olmayan bir değer döndürebilirsiniz; bu da göstergenin, EA'nın veya komut dosyasının düzgün çalışmasını engeller.