
MetaTrader 5'te sürekli vadeli işlem sözleşmeleri
Giriş
Yatırımcı, yalnızca komisyoncunun sembolleriyle oluşturulabileceğinden MetaTrader 5'te kendi çizelgelerini oluşturamaz. Yatırımcıya sentetik bir ürün gerekir: sürekli vadeli işlem sözleşmesi. Sorun şu ki, yalnızca bir komisyoncu sözleşmelerin birleştirilmesini gerçekleştirebilir ve vadeli işlemleri verilen sembole bağlayıp bağlayamayacağına yalnızca komisyoncu karar verir.
Neyse ki, kapalı vadeli işlemlerin geçmişi her zaman terminalde mevcuttur. Terminalde vadeli işlem sözleşmelerini birleştirmek için bu geçmişi kullanın.
Sözleşmeler:
- Makaledeki tüm veriler, çizimler ve ekran görüntüleri gerçek Ukrayna Borsa endeksi vadeli işlemlerine dayanmaktadır.
- Değiştirilen veya makaleye eklenen kod bölümleri renkle işaretlenecektir. Örneğin:
//+------------------------------------------------------------------+ //| This is an example | //| of the edited code | //+------------------------------------------------------------------+
İlk sorun: tarihler çakışıyor
Yakın vadeli işlemler çakışan tarihlerle işlem görüyor.
Bu, vadeli işlemlerin alım satıma konu olduğu ve diğer vadeli işlemlerin kapanması için daha iki ay olduğu anlamına gelir.
Şek. 1. Vadeli işlem sözleşmelerinde tarihler çakışıyor
Şekil, UX-12.13 vadeli işlemleri hala açık olmasına rağmen, 2013.09.16'nın UX-3.14 vadeli işlem alım satımının başlangıç tarihi olduğunu göstermektedir.
İkinci sorun: birleştirme yolunun seçilmesi
İki birleştirme yöntemi vardır:
- Basit ekleme – mevcut enstrümanın dolaşım tarihi sona erdiğinde ve bir sonraki enstrüman başka bir barda açıldığında. Basit ekleme sırasında, grafikteki fiyatlar geçmiş değerleriyle eşleşecek ancak aynı zamanda birleşim yerlerinde her zaman fiyat boşlukları olacak, yani grafik düzgün olmayacak.
Şek. 2. Birleştirme. Basit ekleme
- kaydırmalı ekleme: mevcut enstrümanın kapanmasına 5-10 gün var ve bu 5-10 çubuğu bir sonraki enstrüman çubuklarıyla değiştirmeye başlıyoruz. 5-10 bar aralığına geçiş dönemi denir. Kaydırmalı ekleme sırasında fiyatlar yanlış değerler gösterecektir (mevcut enstrümana karşılık gelmeyecektir) ancak basit ekleme yöntemine göre grafik daha düzgün olacaktır.
Şek. 3. Birleştirme. Kaydırmalı ekleme
Terminaldeki ayarlar
"Piyasa gözlemi" penceresinde vadeli işlemler azalan düzende yerleştirilmelidir:
Şek. 4. Piyasa gözlemi
İndikatör oluşturma
Varsayılan gösterge, terminal_data_folder\\MQL5\\Indicators klasörüne yerleştirilmelidir. Göstergelerim içinde (\\Göstergeler içinde açacaksınız) Sentetikler klasörü oluşturun. Standart Kitaplıktaki \\Göstergeler klasöründeki alandan tasarruf etmenize olanak tanır ve göstergelerin MQL5 Depolama başlatma senkronizasyonunu kolaylaştırır. Klasörün son yolu şöyle görünür: terminal_data_folder\\MQL5\\Indicators\\MyIndicators\\Synthetics.
Sentetikler klasöründe yeni bir dosya oluşturun:
Şek. 5. Yeni dosya oluşturma göstergesi
Yeni dosya türünü ayarlayın - "Özel gösterge":
Şek. 6. Yeni dosya türü - "Özel gösterge"
"İleri"ye basın ve "Özel göstergenin genel özellikleri" penceresini açın. "SYNT" göstergesinin adını girin, iki seçenek ekleyin. İlk seçenek olan "Birleştirme için vadeli işlem sayısı" bağlanacak enstrümanların sayısını belirler. 2'nin "Birleştirme için vadeli işlem sayısı"nın mümkün olan en minimum değeri olduğuna dikkat edin. İkinci seçenek "Yapıştırma türü", varsayılan göstergedeki birleştirme türünü belirler - "basit ekleme":
Şek. 7. Özel gösterge parametreleri
"Yapıştırma türü" seçeneğine dikkat edin: birleştirme, "basit ekleme" veya "kaydırma ile ekleme" olabilir. Bu aşamada, bu iki birleştirme türünün listesini ekleyemezsiniz. Bu nedenle varsayılan "basit ekleme"yi bırakın. "SYNT" gösterge kodu yazma sırasında, ekleme türlerini içeren açılır listeyi görmek için Sonra seçeneğini açın.
Bir sonraki pencerede gösterge olay işleyicilerini seçin:
Şek. 8. Gösterge olay işleyicileri
OnTimer() işlevinin "SYNT" göstergesinde kullanılacağını unutmayın. Göstergenin ana işlevi OnTimer() içinde ayarlanır. Gösterge hem bitmiş alım satım işleminin bulunduğu sembol grafiğine (bu sembol OnCalculate olaylarını içermez) hem de aktif bir alım satım işleminin olduğu sembol grafiğine eklenebilir.
"İleri"ye basın ve "Özel gösterge programının genel özellikleri"nde "Ayrı pencerede gösterge"yi işaretleyin:
Şek. 9. "Ayrı pencerede gösterge" seçeneği
"Bitti" düğmesine basın, "SYNT" gösterge şablonunu göreceksiniz.
Açılır listenin düzenlenmesi
Ekleme türleri listesini açılır liste olarak görmek için gösterge seçeneklerinde ENUM_GLUING_TYPE numaralandırmasını bildirmeniz gerekir.
Giriş parametreleri bloğunun başlangıcında global alanda numaralandırmayı bildirin:
#property indicator_separate_window //+------------------------------------------------------------------+ //| Splicing types enumeration | //+------------------------------------------------------------------+ enum ENUM_GLUING_TYPE { simple_addition, // simple addition||simple addition addition_with_shift // addition with shift||addition with shift }; //--- input parameters || input parameters input ENUM_GLUING_TYPE gluing_type=simple_addition; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+
Artık açılır listenin nasıl görüntülendiğini kontrol edebilirsiniz.
Gösterge (F7) dosyasını derlemelisiniz. Şimdi, göstergeyi ekledikten sonra, açılır listenin başlattığı seçeneklerde görebilirsiniz:
Şek. 10. Artık parametrelerdeki
açılır listeye sahipsiniz
İlk kez grafiğe eklendiğinde veya özellikleri değiştirildiğinde "Genel" sekmesinde görüntülenecek olan göstergenin açıklamasını ekleyin:
#property version "1.00" //+------------------------------------------------------------------+ //| version "1.00": The timer history swapping | //+------------------------------------------------------------------+ #property description "Indicator for several futures splicing." #property description "Is drawn in the latest futures window" #property description "Uses N first symbols for drawing" #property description "which were taken from the \"Market review\"." #property indicator_separate_window
Gösterge oluşturma yöntemi - DRAW_COLOR_CANDLES - renkli mum grafikler.
Renk indeksi deposu için 4 gösterge arabelleğine ve 1 arabelleğe ihtiyacınız var. Çizginin stili, gösterge - STYLE_SOLID - sürekli çizgi. Gösterge kodundaki her şeyi göster:
#property description "taken from the \"Market review\"." //--- indicator settings || indicator settings #property indicator_separate_window #property indicator_buffers 5 #property indicator_plots 1 //--- plot Bars || bars plotting #property indicator_label1 "SYNT" #property indicator_type1 DRAW_COLOR_CANDLES #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //+------------------------------------------------------------------+ //| enumeration of splicing methods | //+------------------------------------------------------------------+
"number_futures_gluing" giriş parametresini - oluşturma için gerekli enstrüman sayısını girin. Varsayılan "number_futures_gluing" değeri 2'ye eşittir:
//--- input parameters || input parameters input int numder_futures_gluing=2; input ENUM_GLUING_TYPE gluing_type=simple_addition;
Renk indeksi depolaması ve LoadHistory[] yardımcı dizisi için 4 gösterge arabelleği, 1 arabellek bildirin:
#property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- indicator buffers || indicator buffers double OpenBuffer[]; double HighBuffer[]; double LowBuffer[]; double CloseBuffer[]; double ColorCandlesColors[]; double LoadHistory[]; //+------------------------------------------------------------------+ //| enumeration of splicing methods | //+------------------------------------------------------------------+
Tek boyutlu dinamik dizilere gösterge arabellekleri ekleyin, arabellek indekslemeyi zaman serisi gibi ayarlayın:
//--- indicator buffers mapping //--- indicator buffers mapping SetIndexBuffer(0,OpenBuffer,INDICATOR_DATA); SetIndexBuffer(1,HighBuffer,INDICATOR_DATA); SetIndexBuffer(2,LowBuffer,INDICATOR_DATA); SetIndexBuffer(3,CloseBuffer,INDICATOR_DATA); SetIndexBuffer(4,ColorCandlesColors,INDICATOR_COLOR_INDEX); SetIndexBuffer(5,LoadHistory,INDICATOR_CALCULATIONS); //--- set buffer indexing as timeseries //--- set buffer indexing as in timeseries ArraySetAsSeries(OpenBuffer,true); ArraySetAsSeries(HighBuffer,true); ArraySetAsSeries(LowBuffer,true); ArraySetAsSeries(CloseBuffer,true); ArraySetAsSeries(ColorCandlesColors,true); //--- return(INIT_SUCCEEDED);
"Veri penceresi"nde gösterge serisinin adını ("Açık", "Yüksek", "Düşük" ve "Kapat") görüntülemek için s_symbol değişkenine ihtiyacınız vardır:
input int numder_futures_gluing=2; input ENUM_GLUING_TYPE gluing_type=simple_addition; //--- symbol name string s_symbol; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+
Göstergeyi etkinleştirmek için shft_array değişkenine ve iki good_history ve indicator_rendered bayrağına ihtiyacınız var:
input ENUM_GLUING_TYPE gluing_type=simple_addition; //--- symbol name string s_symbol; int shift_array=0; bool good_history=false; //history is not prepared||history not prepared bool indicator_rendered=false; // indicator is not drawn //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+
Ardından göstergeyi ayarlayın ve arabellek renk indeksini seçilen renge bağlayın:
ArraySetAsSeries(CloseBuffer,true); ArraySetAsSeries(ColorCandlesColors,true); //--- set accuracy || accuracy of the indicator values IndicatorSetInteger(INDICATOR_DIGITS,0); //--- set drawing line empty value || empty value of the drawing line PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0); //--- set labels for the line || displayed name in the DataWindow PlotIndexSetString(0,PLOT_LABEL,s_symbol+" Open;"+s_symbol+" High;"+s_symbol+" Low;"+s_symbol+" Close"); IndicatorSetString(INDICATOR_SHORTNAME,"SYNT"); //--- set number of colors in color buffer || number of colors in the buffer PlotIndexSetInteger(0,PLOT_COLOR_INDEXES,9); //--- set line color || set the line color PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,clrBlue); PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,clrOrange); PlotIndexSetInteger(0,PLOT_LINE_COLOR,2,clrRed); PlotIndexSetInteger(0,PLOT_LINE_COLOR,3,clrGreen); PlotIndexSetInteger(0,PLOT_LINE_COLOR,4,clrPink); PlotIndexSetInteger(0,PLOT_LINE_COLOR,5,clrIndigo); PlotIndexSetInteger(0,PLOT_LINE_COLOR,6,clrPaleVioletRed); PlotIndexSetInteger(0,PLOT_LINE_COLOR,7,clrDarkViolet); PlotIndexSetInteger(0,PLOT_LINE_COLOR,8,clrDimGray); //--- return(INIT_SUCCEEDED);
OnInit() işlevine 3 saniye aralıklarla zamanlayıcının başlatılmasını ve rasgele sayı üreteciyi ekleyin:
PlotIndexSetInteger(0,PLOT_LINE_COLOR,7,clrDarkViolet); PlotIndexSetInteger(0,PLOT_LINE_COLOR,8,clrDimGray); //--- EventSetTimer(3); //--- random number generator initializor MathSrand(GetTickCount()); //--- return(INIT_SUCCEEDED);
Birleştirmeyi işlemek için en az iki sembol gereklidir.
OnCalculate() işlevinde birleştirme için enstrüman sayısını kontrol edin:
const long &tick_volume[], const long &volume[], const int &spread[]) { //--- checking the number of instruments || checking the number of instruments if(numder_futures_gluing<=1) { //--- create the message line string comm=StringFormat("For the indicator choose not less than %d symbols",numder_futures_gluing); //--- display the message in comment in the chart main window Comment(comm); return(0); } //--- return value of prev_calculated for next call return(rates_total);
Birleştirme için sembol sayısını kontrol ettikten sonra, göstergenin hali hazırda çizilip çizilmediğini kontrol edersiniz. Gösterge çizilmişse, OnCalculate() işlevinden çıkabilirsiniz:
Comment(comm); return(0); } if(indicator_rendered==true) return(rates_total); //--- return value of prev_calculated for next call return(rates_total);
"SYNT" göstergesi esas olarak gün çubukları geliştirme eğilimini analiz etmek için kullanıldığından, her bir fiyat adımında yeniden hesaplama yapmaya gerek olmadığını düşünüyorum. Her fiyat adımında, "SYNT" göstergesi hesaplaması yapılmayacaktır.
Dahası, göstergeyi yalnızca aşağıdaki durumlarda hesaplamanız gerekir:
- gösterge ilk kez başlatıldıysa;
- tarih değiştiyse (örneğin, eklemeler vardı).
if(indicator_rendered==true) return(rates_total); //--- if calculations were started the first time //--- or if we need to calculate the indicator for two or more bars (changes in history) //--- remember, that the "0" bar - is the left-most if(prev_calculated==0 || rates_total>prev_calculated+1) { } //--- return value of prev_calculated for next call return(rates_total);
Zorunlu gösterge arabelleği başlatma
"SYNT" göstergesi arabellekleri bağlı dinamik dizilerdir.
Gösterge ilk kez başlatıldığında, arabellekler zorla başlatılır. OnCalculate() içindeki başlatma ile devam edin. Neden bunu OnInit'de değil de OnCalculate()'de gerçekleştirmeniz gerekiyor? Açıklama aşağıdaki resimde:
Şek. 11. OnCalculate() içindeki dizi başlatma
Şekil 11'de görebileceğiniz gibi, OnCalculate() olayı her durumda gerçekleşecektir, oysa grafik güncellemesini "Update" komutu aracılığıyla başlattığınızda OnInit() etkinleştirilir. Bu nedenle, dizilerin başlatılması OnCalculate() içinde gerçekleştirilecektir:
//--- remember, that the "0" bar - is the left-most if(prev_calculated==0 || rates_total>prev_calculated+1) { //--- arrays initialization ArrayInitialize(OpenBuffer,0); ArrayInitialize(HighBuffer,0); ArrayInitialize(LowBuffer,0); ArrayInitialize(CloseBuffer,0); } //--- return value of prev_calculated for next call return(rates_total);
ArrayInitialize() işlevi, gösterge arabelleğini başlatır. Bu durumda başlatma sıfırları gösterir.
Arabellek göstergesini EMPTY_VALUE ile başlatmaya çalışırsanız "SYNT" üzerindeki göstergeleri birleştiremezsiniz.
Basit ekleme algoritması
Şek. 12. Basit Ekleme Algoritması
Resimdeki tarihler UX-9.13, UX-12.13 ve UX-3.14 vadeli işlem dolaşımlarının başlangıç ve bitiş tarihleridir. Bu veriler tabloda sunulmaktadır:
Sembol | Dolaşım başlar | Dolaşım biter |
---|---|---|
UX-9.13 | 2013.03.15 | 2013.09.16 |
UX-12.13 | 2013.06.17 | 2013.12.16 |
UX-3.14 | 2013.09.16 | 2014.03.17 |
Şekil 10'da 2013.12.25 tarihi - gerçek bir takvim tarihidir. UX-3.14 sembolü hala geçerlidir.
SimpleAddition işlevinde "Basit ekleme" birleştirme yöntemi uygulanacaktır:
//+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { //--- } //+------------------------------------------------------------------+ //| Simple addition | //| Simple addition. Add in the indicator array | //| sibmUP symbol | //+------------------------------------------------------------------+ bool SimpleAddition(string simbUP,string simbDOWN,ENUM_TIMEFRAMES period,int Color) { } //+------------------------------------------------------------------+
simbUP yukarı vadeli işlemlerdir, simbDOWN aşağı vadeli işlemlerdir, ikisi de "Piyasa incelemesi" penceresinde bulunur. Renk - vadeli işlemleri çizmek için kullanılan renk.
SimpleAddition() işlevinin tam kodu aşağıda verilmiştir:
//+------------------------------------------------------------------+ //| Simple addition | //| Simple addition. Add in the indicator array | //| sibmUP symbol | //+------------------------------------------------------------------+ bool SimpleAddition(string simbUP,string simbDOWN,ENUM_TIMEFRAMES period,int Color)////// { datetime expiration_time_UP; // simbUP symbol expiration date datetime expiration_time_DOWN; // simbDOWN expiration date expiration_time_UP=int(SymbolInfoInteger(simbUP,SYMBOL_EXPIRATION_TIME)); if(expiration_time_UP>TimeLocal()) { expiration_time_UP=TimeLocal(); } if(simbDOWN!="") { expiration_time_DOWN=int(SymbolInfoInteger(simbDOWN,SYMBOL_EXPIRATION_TIME)); } else { expiration_time_DOWN=int(SymbolInfoInteger(simbUP,SYMBOL_START_TIME)); } //--- Open, High, Low and Close prices will be copied in the rates[] array MqlRates rates[]; ArraySetAsSeries(rates,true); int copied=0; //--- copied number copied=CopyRates(simbUP,period,expiration_time_DOWN,expiration_time_UP,rates); if(copied>0) { for(int j=shift_array;j<shift_array+copied;j++) { //--- write prices in buffers OpenBuffer[j]=rates[j-shift_array].open; HighBuffer[j]=rates[j-shift_array].high; LowBuffer[j]=rates[j-shift_array].low; CloseBuffer[j]=rates[j-shift_array].close; ColorCandlesColors[j]=Color; } shift_array=shift_array+copied; indicator_rendered=true; ChartRedraw(); } else { Print("Unable to get the symbol history data",simbUP); indicator_rendered=false; return(false); } //--- Simple addition end return(true); } //+------------------------------------------------------------------+
Kaydırma algoritması ile ekleme
Şek. 13. Kaydırma ekleme algoritması ile ekleme
Bu algoritmada birleştirme, basit eklemeye kıyasla, sembol kapanmadan 10 gün önce başlar. "Kaydırma ile ekleme" birleştirme yöntemi AdditionWithShift() işlevinde işlenir:
//--- Simple addition end return(true); } //+------------------------------------------------------------------+ //| Addition With Shift | //| Addition with Shift. Add in the indicator array only | //| sibmUP symbol | //+------------------------------------------------------------------+ bool AdditionWithShift(string simbUP,string simbDOWN,ENUM_TIMEFRAMES period,int Color) { //--- return(true); } //+------------------------------------------------------------------+
AdditionWithShift() ve SimpleAddition() işlevleri arasındaki fark iki satırdadır - tarihlerden 10 gün çıkarırsınız:
. . . expiration_time_UP=int(SymbolInfoInteger(simbUP,SYMBOL_EXPIRATION_TIME))-86400*10; . . . expiration_time_DOWN=int(SymbolInfoInteger(simbDOWN,SYMBOL_EXPIRATION_TIME))-86400*10; . . .
Kodlardaki ufak farklılıktan dolayı AdditionWithShift() işlevinin tam kodunu göstermeyeceğim, kodu makalenin gösterge dosyasında bulabilirsiniz.
AdditionWithShift() ve SimpleAddition() işlevleri arasındaki bu kadar küçük farka rağmen, bunları tek bir evrensel işlev yapmak için birleştirmemeniz daha iyidir (algoritmada daha fazla değişiklik olması veya örneğin testlerin başlatılması durumunda).
Sembol geçmişi ön yüklemesi
CheckLoadHistory() işlevi, tüm sembol geçmişini yardımcı arabelleğe tmp_rates kopyalar.
Kopyalama işlemi başarılı olursa good_history bayrağına true değeri atanır; bu, göstergeyi çizmeye başlayabileceğiniz anlamına gelir:
//--- Addition With Shift end return(true); } //+------------------------------------------------------------------+ //| Request to receive all history from a trade server | //| Request to recieve all history from a trade server | //+------------------------------------------------------------------+ bool CheckLoadHistory(string symbol,ENUM_TIMEFRAMES period) { MqlRates tmp_rates[]; // the Open, High, Low and Close prices will be copied in the rates[]array datetime start_time; // start time of the instrument trades datetime expiration_time; // expiration time of the instrument trade start_time=int(SymbolInfoInteger(symbol,SYMBOL_START_TIME)); expiration_time=int(SymbolInfoInteger(symbol,SYMBOL_EXPIRATION_TIME)); if(CopyRates(symbol,period,start_time,expiration_time,tmp_rates)>0) { good_history=true; } else { good_history=false; } //--- return(true); } //+------------------------------------------------------------------+
Tüm sembol geçmişini kopyalayabilirsiniz çünkü vadeli işlem ömrü çok kısadır ve tüm geçmiş kopyalama fazla yer kaplamaz.
OnTimer - göstergenin ana işlevi
Artık iki birleştirme yöntemi için koda ve geçmiş yükleme koduna sahipsiniz, böylece OnTimer() işlevini değiştirebilirsiniz:
//+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { if(indicator_rendered==true) return; if(good_history==true) { int t=0; // color || color int number; switch(gluing_type) { case simple_addition: for(int n=0;n<numder_futures_gluing;n++) { //--- get the random number number=MathRand(); //--- get the color index as the modulo t=number%(PlotIndexGetInteger(0,PLOT_COLOR_INDEXES)-1); SimpleAddition(SymbolName(n,true),SymbolName(n+1,true),PERIOD_D1,t); } break; case addition_with_shift: for(int n=0;n<numder_futures_gluing;n++) { //--- get random number number=MathRand(); //--- get the color index as the modulo t=number%(PlotIndexGetInteger(0,PLOT_COLOR_INDEXES)-1); AdditionWithShift(SymbolName(n,true),SymbolName(n+1,true),PERIOD_D1,t); } break; } } else { for(int n=0;n<numder_futures_gluing;n++) { CheckLoadHistory(SymbolName(n,true),PERIOD_D1); } } } //+------------------------------------------------------------------+
Gösterge oluşturulur. Derleyip grafiğe ekleyebilirsiniz. Kapalı alım satım sembolünü seçmek ve H1 dönemini ayarlamak daha iyidir.
"SYNT" göstergesinin ilk çıkışı
Farklı birleştirme yöntemlerinin iki "SYNT" gösterge şablonunu grafiğe ekledikten sonra, şu yöntemleri karşılaştırabilirsiniz:
Şek. 14. İki vadeli işlem birleştirme karşılaştırması yöntemi
Göstergeleri birleştirme imkanı (standart ve özel)
Özel göstergeler, OnCalculate ilk çağrı ve "SYNT" göstergesiyle birleştirilebilir:
int OnCalculate (const int rates_total, // size of the array price[] const int prev_calculated, // calculated bars during the previous call const int begin, // tangible data starting point const double& price[] // calculation array );
"Gezgin" penceresinde "Özel göstergeler" listesini açın. Ardından "Örnekler" listesini açın, göstergeyi seçin ve "SYNT" içine yerleştirin. "Parameters" sekmesinde, açılır listeden "Önceki gösterge verileri" öğesini seçin.
"SYNT" göstergesine ekleyebileceğiniz göstergelerin listesi aşağıdadır, bunlar "SYNT" üzerinde hatasız olarak başlatılır:
- AMA (Uyarlanabilir Hareketli Ortalama);
- BB (Bollinger Bantları);
- Özel Hareketli Ortalama;
- DEMA (Double Exponential Moving Average);
- FrAMA (Fractal Adaptive Moving Average);
- TEMA (Triple Exponential Moving Average).
Ekli Özel Hareketli Ortalama göstergesiyle üç vadeli işlemi birleştiren "SYNT" göstergesi:
Şek. 15. Birleştirilmiş üç sembol örneği
Sonuç
Günlük zaman dilimlerinde açılan eski grafik sembollerinin davranışını analiz etmek daha kolaydır. Teknik göstergelerin sayısı sınırlı olsa da, bu yöntem sürekli vadeli işlemlerde fiyat davranışının izlenmesine yardımcı olur.
MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal makale: https://www.mql5.com/ru/articles/802





- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz