Alım-satım robotlarını ücretsiz olarak nasıl indirebileceğinizi izleyin
Bizi Twitter üzerinde bulun!
Fan sayfamıza katılın
Komut dosyasını ilginç mi buldunuz?
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
Komut dosyasını beğendiniz mi? MetaTrader 5 terminalinde deneyin
Kütüphaneler

MathTicker - matematiksel modda tik oluşturucu - MetaTrader 5 için kütüphane

Görüntülemeler:
41
Derecelendirme:
(4)
Yayınlandı:
MQL5 Freelance Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git

EAToMath kütüphanesi için alternatif https://www.mql5.com/tr/code/61283

Gerçek tik modunda tikleri kaydeder ve kaydedilen her tikle stratejinizi çağırarak matematik modunda okur.

Oluşturulma nedeni: MQ test cihazı, optimize edici her çalıştırıldığında her bir aracıya tik veri dosyaları yazar. Araçlardan biri ve test süresi için her biri 10GB yazan 36 aracım var - 480GB sürücüde toplam 360GB. Bu işlem her optimizasyondan önce yaklaşık 1 saat sürüyor. Tipik SSD'ler 500-1000 yazma döngüsü ömrüne sahiptir. Her seferinde 360GB yeniden yazıldığında kaynak çok hızlı bir şekilde tükenecektir. Bu kütüphane yalnızca 1 dosya yazar ve ardından 36 ajanın tamamı bu tek dosyadan veri okur. Tüm bunlar kütüphaneyi yazma nedenimizdi: sadece 1 dosya kullanıyoruz + her bir ajana veri yazmak için 1 saat tasarruf + MQ tester ve hatta gerçek tik modunda Virtual ile karşılaştırıldığında hızlanma.
Sorun, her biri kendi sürümüyle fxsaber (EAToMath'in yazarı) ile eşzamanlı olarak araştırıldı. Benim kodum benim için daha açık, bu yüzden onu kullanıyorum.

Ticaret işlemleri için MT4Orders kütüphanesi kullanılır https://www.mql5.com/tr/code/16006
Sanal ticaret için Virtual kütüphanesini kullanmak gerekir https://www.mql5.com/tr/code/22577
Ticaret sonuçlarını görüntülemek için MT4Orders QuickReport https://www.mql5.com/tr/code/47816 veya Report
Keneleri sıkıştırmak için TickCompressorhttps://www.mql5.com/tr/code/66201
Muhtemelen gereksiz keneleri kaldırmak için Control_Trade_Sessions kütüphanesi https://www.mql5.com/tr/code/48059, örneğin bir teklif oturumu bir ticaret oturumundan daha büyükse bağlanır. Tüm keneler kullanılıyorsa, yani seanslar çakışıyorsa da silinebilir.


EAToMath'ten farklılıklar:

Artıları:

  • Kod daha kısa ve basittir, sadece 5 eklenti kütüphanesi vardır. Değiştirmeniz gerekirse, anlaşılması daha kolay olacaktır.

  • Veriler farklı bir algoritma nedeniyle daha iyi sıkıştırılır https://www.mql5.com/tr/code/66201. Yalnızca time_msc, ask ve bid kaydedilirken - tiklerin %86'sına kadarı 3 karakterli sayılar, yani 3 bayt olarak kaydedilir. BTCUSDT 2023 için tik verilerini kaydederken tik başına ortalama boyut = 3,266 Bayt.
    Hacimlerle kaydederken ortalama = 4,835 Bayt. Ve tam tik kaydederken = 8.439 Bayt. Test sonuçlarını içeren tablo aşağıdadır.
    Ek olarak, yerleşik ZIP arşivlemeyi kullanabilirsiniz. Dosya boyutu 2 kat azalır. Böyle bir dosya 245 Mb alırken, 2023 için .tcs'deki dosya boyutlarının toplamı 364 Mb alır, yani sıkıştırma MQ'dan 1,5 kat daha iyidir. Ve matematik modunda tik oluşturma hızı ~2 kat daha hızlıdır. Aşağıdaki tabloya bakın.

  • Daha fazla kaydetme seçeneği vardır:


  • Dosya, sistemde bir bağlantı yapılarak SSD veya RAM diske kaydedilebilir. Dosyalar çok fazla yer kaplayabilir ve RAM sürücü yeterli olmayabilir, bu nedenle birincil sürücüye kaydetmeyi seçebilirsiniz. SSD ve RAM okuma hızları hemen hemen aynı, SSD'nin en sık talep edilen verilerin tam kapasitesinin %5'ine kadarını önbelleğe aldığını okudum.
    Okuma sırasında SSD'de biraz aşınma ve yıpranma oluyor, çünkü bellek hücrelerinin üzerine okuma yapmadan depolamaya göre daha sık yazmanız gerekiyor. Kesin rakamları bilmiyorum ama örneğin her 10 okumada ya da her 1000 okumada 1 üzerine yazma.... Ancak bu, diskin MQ test cihazı tarafından aşındırılmasına kıyasla çok az öneme sahip.

Eksileri:

BidAsk varyantının hızı EAToMath ile karşılaştırılabilir. Diğer varyantlar daha yavaştır çünkü ya daha fazla veri içerirler ya da ek ZIP sıkıştırmasına sahiptirler.

Kullanım Özellikleri:

Symbol(), Digits( ) (=4), Point() (=0.0001) standart fonksiyonlarını stratejide kullanamazsınız, çünkü bunlar test edilen sembolle ilgili olmayan varsayılan değerler üretecektir. Bunların yerine, dosyadan okunan değerler üzerinde geçersiz kılınan _Symbol, _Digits, _Point kullanın. Ayrıca, kaydedilen sembolden değerler içeren yeni sabitler _TickSize ve _TickValue eklenmiştir - bunlar, mevduat para biriminde kar, komisyon ve takasların doğru hesaplanması için gereklidir.

Keneler kaydedilirken seçilen test periyodu ile çalışma sırası:

  1. Gerçek tiklere, gerekli enstrümana ve test tarihlerine göre test modunu seçin. Görev değişkenini Kaydet'ten birine ayarlayın ve keneleri kaydetme seçeneğini seçin. Test cihazını başlatın. Bundan sonra belirtilen klasörde tik içeren bir dosya oluşturulacaktır.

  2. Görev değişkenini Run_Strategy olarak ayarlayın. Daha sonra karşılaştırmak için gerçek tiklerle moddan çıkabilirsiniz. Test cihazını başlatın. Hesaplamalar dosyadan değil, gerçek tiklerle yapılır. Sonuç alın.


  3. Test modunu matematiksel hesaplamalara ayarlayın. Test cihazını başlatın. Hesaplamalar dosyadan alınan tiklerle yapılır. Adım 2'deki sonuçla karşılaştırın. Aynı olmalı, ancak birkaç kat daha hızlı olmalıdır.

Arşiv ile çalışma sırası:

  1. Geçmişteki tüm tiklerle bir arşiv oluşturun: Gerçek tiklerle test modunu, gerekli enstrümanı seçin. Test tarihlerini mevcut geçmişte <= ilk tik ile >= son tik arasında ayarlayın. Görev değişkenini Save...To_Archive seçeneklerinden birine ayarlayın ve tiklerin kaydedilmesi seçeneğini seçin. Test cihazını başlatın. Bundan sonra, belirtilen klasörde aracın adıyla bir klasör oluşturulacak ve burada her yıl için tik içeren dosyalar kaydedilecektir. Gerektiğinde son yılın üzerine yazılabilir, bu amaçla önceki yılların üzerine yazılmasını önlemek için tarihlerde yalnızca geçerli yılı seçin.
  2. Test modunu Matematik olarak ayarlayın. Görev değişkenini Run_Strategy_Fron_Archive olarak ayarlayın.
  3. MathTicker'da: tam arşiv grubunu kullanarak şunları ayarlayın:
    Enstrüman - Enstrüman adına (tiklerinin depolandığı klasörün adıyla eşleşmelidir), testin başlangıç ve bitiş tarihine.

  4. Test cihazını başlatın. Hesaplamalar, gerekli yıllık dosyalardan alınan tiklerle yapılır. İşin bir dosya ile değil, birkaç dosya ile yapılması nedeniyle, biraz daha yavaştır, çünkü dosyaları açmak ve kapatmak zaman alır. Örneğin, 3 yıl için kene oluşturmak 1,7 saniye yerine 2,7 saniye sürecektir.
  5. Aşağıdaki Uzman Danışman tarafından elde edilen tiklerin toplamı, bir ilk tikin küçük bir değeri kadar farklılık gösterebilir. Gerçek tik modunda özel karakterler üzerinde test yaparken, ilk tik yalnızca Satış veya Teklif üretir (her ikisini de kaydetmediyseniz). Arşivden test ederken, her ikisi de önceki tiklerden geri yüklenir.

Çalışma hızını tahmin etmek için en basit Uzman Danışman örneği:

#property tester_no_cache
#include <Forester\MathTicker.mqh> // matematik modunda ticareti bağlama
input int rep=0;//Optimizasyon için tekrarlar
sinput bool AddVolumes=true;
void OnInit(){}

void OnTick(){
   static MqlTick Tick;
   if (SymbolInfoTick(_Symbol, Tick)){
      #ifdef _MathTick_
         if(MathTick.SaveTick(Tick)){ return; }//eğer keneleri kaydedersek, o zaman çıkın ve işlem yapmayın. 
      #endif
       Strategy(Tick);
   }
}
double Sum = 0;int tk=0;
void Strategy(MqlTick& Tick){ // en basit strateji - okuma hızını EAToMath ile karşılaştırmak için kullanılır 
   Sum += Tick.bid+Tick.ask+(AddVolumes?Tick.volume_real:0.0); tk++;
   //if(tk<100){Print(Tick.time," " ",Tick.ask," ",Tick.bid," ",Tick.last," ",Tick.volume_real," ",Tick.flags);}
}

ulong StartTime  = GetMicrosecondCount();
double OnTester(){
   #ifdef _MathTick_ // MathTick ile çalıştırın - dosyadaki sembol parametrelerini tiklerle sayar. Mat modundaki testler için
      if(MathTick.SaveTicksEnd()){return 0;}// tikleri kaydettikten sonra dosyayı kapat ve çık
      if(MathTick.ReadSymbolVars()){
         MathTick.Ticker();// mat modunda tüm tikleri Strategy(MqlTick &Tick)'e besleyecektir.
      }
   #endif
   Print("ticks: ",tk);
   long work_time = (long)(GetMicrosecondCount() - StartTime)/1000;
   //return(NormalizeDouble(work_time, 1)); // iş hızını elde etmek için ve
   return Sum;// hesaplama sonuçlarını karşılaştırmak için
}

1 ayarı arasında geçiş yapabilirsiniz:

//#define RestoreFlags // восстановить флаги тика из изменения ask, bid, volume - добавит 7% к времени генерации тиков 931 вместо 869 мс

Keneler oluşturulurken, kenelerin sıkıştırılmasıyla ilgili istatistikler görüntülenecektir.
Aşağıda istatistiklerin, hacimlerin ve kenelerin oluşturulma zamanının çıktıları bulunmaktadır.

-----------
Hacimsiz MQtest cihazı
pass 1 döndürülen sonuç 4345830621850.311523 in 0:00:08.232

C ZIP sıkıştırma
AskBid. Dosya boyutu: 225 mb
-------------------- İstatistikler: --------------------
3 bayt: %86,6, 62644158 tik
4 bayt: %0,6, 412167 tik
5 bayt: %12,7, 9185484 tik
6 bayt: %0,0, 15274 tik
11 bayt: %0,1, 46214 tik
12 bayt: %0,0, 1 tik
24 bayt: %0.0, 1 tik
Toplam: 72303299 tik, 236108596 bayt.
Ortalama: tik başına 3,266 bayt
son bakiye 0,00 USD

pass 10 döndürülen sonuç 4345830621850.311523 in 0:00:01.485
normalleştirme yok
pass 1 döndürülen sonuç 4345830621850.311523 in 0:00:00. 892
AskBid_Zipped. Dosya boyutu: 106 mb
-------------------- İstatistikler: --------------------
3 bayt: %86.6, 62644158 tik
4 bayt: %0.6, 412167 tik
5 bayt: %12.7, 9185484 tik
6 bayt: %0.0%, 15274 tik
11 bayt: 0.1%, 46214 tik
12 bayt: 0.0%, 1 tik
24 bayt: 0.0%, 1 tik
Toplam: 72303299 tik, 236108596 bayt.
Ortalama: tik başına 3.266 bayt
Sıkıştırılmamış boyut:236108596. Sıkıştırılmış boyut:111720863. ZIP sıkıştırması: %47,3

pass 10 döndürülen sonuç 4345830621850.311523 in 0:00:02.548
normalleştirme yok
pass 2 döndürülen sonuç 4345830621850.311523 in 0:00:01.890




pass 1hacimli MQ test cihazı 0:00:07. 962'de 4345879117123.356445 sonucunu döndürdü

C ZIP sıkıştırma
AskBidVolume. Dosya boyutu: 333 mb
-------------------- İstatistikler: --------------------
4 bayt: %60.4, 43684907 tik
5 bayt: %1.1, 809676 tik
6 bayt: %33.5%, 24194111 tik
7 bayt: 4.9%, 3548666 tik
8 bayt: 0.0%, 7909 tik
12 bayt: 0.1%, 40022 tik
13 bayt: 0.0%, 17964 tik
14 bayt: 0.0, 2 tik
19 bayt: %0.0, 41 tik
32 bayt: %0.0, 1 tik
Toplam: 72303299 tik, 349571243 bayt.
Ortalama: tik başına 4.835 bayt

pass 1 döndürülen sonuç 4345879117123.356445 in 0:00:02.803
normalleştirme yok
pass 4 döndürülen sonuç 4345879117123.356445 in 0:00:01.659
AskBidVolume_Zipped. Dosya boyutu: 204 mb
-------------------- İstatistikler: --------------------
4 bayt: 60.4%, 43684907 tik
5 bayt: 1.1%, 809676 tik
6 bayt: 33.5%, 24194111 tik
7 bayt: 4.9%, 3548666 tik
8 bayt: 0.0%, 7909 tik
12 bayt: 0.1%, 40022 tik
13 bayt: 0.0%, 17964 tik
14 bayt: 0.0%, 2 tik
19 bayt: 0.0%, 41 tik
32 bayt: 0.0%, 1 tik
Toplam: 72303299 tik, 349571243 bayt.
Ortalama: tik başına 4.835 bayt
Sıkıştırılmamış boyut:349571243. Sıkıştırılmış boyut:214897079. ZIP sıkıştırma: %61,5

pass 2 döndürülen sonuç 4345879117123.356445 in 0:00:04.260
normalleştirme yok
pass 2 döndürülen sonuç 4345879117123.356445 in 0:00:03.096
Hepsi. Dosya boyutu: 582 mb
-------------------- İstatistikler: --------------------
8 bayt: %61,5, 44494583 tik
9 bayt: %33,5, 24194111 tik
10 bayt: %4,9, 3548666 tik
11 bayt: %0,0, 7909 tik
15 bayt: %0,1, 40022 tik
16 bayt: %0,0, 17964 tik
17 bayt: %0.0, 2 tik
22 bayt: %0.0, 41 tik
44 bayt: %0.0, 1 tik
Toplam: 72303299 tik, 610166056 bayt.
Ortalama: tik başına 8.439 bayt

geçiş 2 döndürülen sonuç 4345879117123.356445 in 0:00:03.768
normalleştirme yok
geçiş 1 döndürülen sonuç 4345879117123.356445 in 0: 00:02.256
All_Zipped. Dosya boyutu: 245 mb
-------------------- İstatistikler: --------------------
8 bayt: %61,5, 44494583 tik
9 bayt: %33,5, 24194111 tik
10 bayt: %4,9, 3548666 tik
11 bayt: %0,0, 7909 tik
15 bayt: %0.1, 40022 tik
16 bayt: %0.0, 17964 tik
17 bayt: %0.0, 2 tik
22 bayt: %0.0, 41 tik
44 bayt: %0.0, 1 tik
Toplam: 72303299 tik, 610166056 bayt.
Ortalama: Tik başına 8.439 bayt
Sıkıştırılmamış boyut:610166056. Sıkıştırılmış boyut:257105213. ZIP sıkıştırma: %42,1

pass 1 döndürülen sonuç 4345879117123.356445 in 0:00:05.388
normalleştirme yok
pass 10 döndürülen sonuç 4345879117123.356445 in 0:00:03.936

Aynı yıl için .tcs dosyalarının boyutu 2023:

ZIP'li tüm varyantlar, hatta tam tik kaydetme daha kompakttır (3,5 ila 1,5 kat).

Sanal ticaret ve rapor çıktısı için Uzman Danışman örneği:

#property tester_no_cache

#include <MT4Orders.mqh> // https://www.mql5.com/tr/code/16006
#include <Forester\MathTicker.mqh> // matematik modunda ticareti bağlama

#define  ORDER_CURRENCY_DIGITS 2 // İşlem geçmişine yerleştirildiğinde kar/komisyon/takas hesaplamak için basamak ayarı.
#define  VIRTUAL_LIMITS_TP_SLIPPAGE // Limitleyiciler ve TP'ler ilk kabul fiyatından gerçekleştirilir - pozitif kaymalar
#define  ORDER_COMMISSION -0 // Komisyon ataması = Lotlar * ORDER_COMMISSION. 
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/tr/code/22577


#define  REPORT_TESTER             // Test cihazı raporları otomatik olarak kaydedecektir
#define  REPORT_BROWSER            // Tarayıcı başlatma ile rapor oluşturma - DLL izni gerektirir.
#define  USE_highcharts //- Tüm Highcharts ürünlerini ücretsiz olarak indirebilir ve deneyebilirsiniz. Projeniz/ürününüz piyasaya sürülmeye hazır olduğunda, ticari bir lisans satın alın. https://shop.highcharts.com/
#include <MT4Orders_QuickReport.mqh>//


enum VirtTyp {MQ_Tester=0,Virtual1=1,Virtual2=2};
sinput VirtTyp tester1=1;//Test 1
sinput VirtTyp tester2=2;//Test 2

input int rep=0;//Optimizasyon için tekrarlar

bool isOptimization = false, isTester=false; double balInit=0;
VIRTUAL_POINTER Virtual[10];

void OnInit(){
   Virtual[0] = 0; // 0 - gerçek ticaret ortamı
   Virtual[1] = VIRTUAL::Create(AccountBalance()); // Sanallaştırma oluşturuldu 1.
   Virtual[2] = VIRTUAL::Create(AccountBalance()); // Sanallaştırma oluşturuldu 2.
   //Virtual[tester1].Select();
   isOptimization = MQLInfoInteger(MQL_OPTIMIZATION) ;
   isTester = MQLInfoInteger(MQL_TESTER);
   balInit=AccountBalance();
}

void OnTick(){
   //Virtual[0].Select();
   VIRTUAL::NewTick();// tik işaretini geçerli sanal makineye gönder
   static MqlTick Tick;
   if (SymbolInfoTick(_Symbol, Tick)){
      #ifdef _MathTick_
         if(MathTick.SaveTick(Tick)){ return; }//ticks yazıldığında fonksiyondan çıkılacak, Strategy() çağrılmayacaktır
      #endif
       Strategy(Tick);//ticaret
   }
}

void Strategy(MqlTick& Tick){ // en basit strateji - okuma hızını EAToMath ile karşılaştırmak için kullanılır 
   if(Tick.ask==0 || Tick.bid==0){return;}//MQ test cihazı başarısız bir tik üzerinde işlem yapar, Virtual yapmaz. MQ için de yasak
   if(tester1>0){Virtual[tester1].Select(); VIRTUAL::NewTick(Tick);}//sanallaştırma 1'i seçin ve bir onay işareti gönderin
   if(tester2>0){Virtual[tester2].Select(); VIRTUAL::NewTick(Tick);}//sanallaştırma 2'yi seçin ve bir onay işareti gönderin
   if(isNewHour(Tick.time)){//her saatin ilk tik'i
      if(GetHour0(Tick.time) % 2==0){// tester 1'de çift saatlerde satın alın
         Virtual[tester1].Select();//sanallaştırmayı seç 1
         OrderSend(_Symbol, OP_BUY, 1, Tick.ask, 0, Tick.ask - 100 * _Point, Tick.ask + 100 * _Point); 
      }else{//tester 2'de tuhaf saatlerde satış
         Virtual[tester2].Select();//sanallaştırma 2'yi seçin
         OrderSend(_Symbol, OP_SELL, 1, Tick.bid, 0, Tick.bid + 100 * _Point, Tick.bid - 100 * _Point);   
      } 
   }
}

double OnTester(){
   #ifdef _MathTick_ // MathTick ile çalıştırın - sembol parametrelerini tick dosyasından okuyacaktır. Mat modundaki testler için
      if(MathTick.SaveTicksEnd()){return 0;}//ticks kaydettikten sonra geri dön
      if(MathTick.isMath && MathTick.ReadSymbolVars()){
         if(tester1==0){Alert("   >>>>>>>>>   Virtual tester 1=MQ. In math mode can be used only virtual tester.   <<<<<<<<");return 0;}
         if(tester2==0){Alert("   >>>>>>>>>   Virtual tester 1=MQ. In math mode can be used only virtual tester.   <<<<<<<<");return 0;}

         SYMBOL_BASE sb; sb.Point=_Point; sb.Digits=_Digits; sb.Symbol=_Symbol; sb.SymbolID=0; sb.TickSize=_TickSize; sb.TickValue=_TickValue / _TickSize;//this.TickValue_ /= this.TickSize_; //fxsaber\Virtual\Symbol_Base.mqh dosyasındaki SetSymbol() işlevinde olduğu gibi
         Virtual[1].Select(); VIRTUAL::SetSymbolBase(sb); Virtual[2].Select(); VIRTUAL::SetSymbolBase(sb);
         //minFreezeLevel = _minFreezeLevel*_Point; minStopLevel = _minStopLevel*_Point;

         Virtual[tester1].Select();
         MathTick.Ticker();// mat modunda tüm tikleri Strategy(MqlTick &Tick)'e besleyecektir. 
      }
   #endif

  double ret_val=0;
  for (int v = 0 ; v <= VIRTUAL::Total(); v++){
    if(Virtual[v].Select()){
      if(v > 0){
         VIRTUAL::Stop();
         #ifdef _MathTick_ // MathTick ile çalıştırın - sembol parametrelerini tick dosyasından okuyacaktır. Mat modundaki testler için
            if(MathTick.isMath){ VIRTUAL::CalcSwaps( MathTick.swapShort, MathTick.swapLong, 0, MathTick.swap3days ); }//kene dosyasından değiştirir
            else{VIRTUAL::CalcSwaps( _Symbol, 0 );}
         #else
           VIRTUAL::CalcSwaps( _Symbol, 0 );//takasları hesapla - tüm işlemlerin bir takası vardır, yani 2+ farklı enstrüman varsa, her ikisi de ana sembolün takasına sahip olacaktır.
         #endif
      }// test cihazında olduğu gibi tamamlanmamış işlemleri son tik fiyatından kapatın

      if( !isOptimization){QuickReport("report_"+(string)v, true, v,false,true);}
      Print((string)v+" AccountBalance = ",AccountBalance(), "   AccountEquity = ",AccountEquity());
      double prib=AccountBalance()-balInit;
      ret_val += prib; //
  }}
  return ret_val;// hesaplama sonuçlarını karşılaştırmak için
}



bool isNewHour  (datetime &t){ static int next_h=-1; if(t < next_h){ return false; } else { next_h = (GetHour0(t)+1)*3600;return true;}}
int GetHour0    (datetime &t){return((int)( t / 3600));}//1 Ocak 1971'den itibaren geçerli saat

Bu örnek, farklı ticarete sahip 2 sanal makine oluşturur. Çift saatlerde bir test cihazı satın alıyor, diğeri tek saatlerde satıyor.

Bu 2 test cihazı ile karmaşık bir örnektir, tek bir test cihazı ile çalışmanız gerekiyorsa basitleştirilebilir.

Ayrıca MQ test cihazını seçebilir ve hesaplamaların doğruluğunu kontrol etmek için sanal test cihazlarının sonuçlarıyla karşılaştırabilirsiniz. Yalnızca komisyon çakışmayabilir, çünkü birçok farklı komisyon vardır ve sanal test cihazında yalnızca bir varyant programlanmıştır.

MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal kod: https://www.mql5.com/ru/code/65821

EMA_ATR_VA EMA_ATR_VA

Uyarlanabilir Üstel Hareketli Ortalama - ATR Volatilitesi Jose Silva tarafından ATR göstergesine göre ayarlanmıştır.

EMA_STD_VA EMA_STD_VA

Standart sapmanın değerine bağlı olarak uyarlanabilir üstel ortalama.

SAR ADX Signal SAR ADX Signal

Mobil bildirimli SAR ADX Sinyali, MT4 sürümünden yeniden yazılmıştır (kaynak artık bulunamadı). Bu yeniden boyanabilir bir göstergedir, lütfen kullanırken dikkatli olun.

EMA_BB_VA EMA_BB_VA

Uyarlanabilir (Bollinger Bantlarına bağlı) Üstel Hareketli Ortalama (Jose Silva tarafından ayarlanan BB Volatilitesi).