
MQL5: MetaTrader 5'te Emtia Vadeli İşlemler Ticaret Komisyonu (CFTC) Raporlarının Analizi ve İşlenmesi
Giriş
MetaQuotes Software Corp. tarafından yatırımcı araçlarından biri olarak geliştirilen MetaTrader 5 alım satım terminali, nesne yönelimli programlamayı destekleyen MQL5 programlama dilini içerir. Bir taraftan MQL5, önceki sürümü olan MQL4 ile uyumlu değildir; diğer taraftan, tam özellikli nesne yönelimli dilin birçok yeni olanağına sahiptir. Dolayısıyla, MQL4'te halihazırda becerilere sahip olan yatırımcılar, bu (aslında) yeni dili kavramak zorundadır; söz konusu yatırımcıları bu makalenin hedef kitlesi olarak görüyorum.
Bu makalede, şu sorunun çözümünü göstereceğim: Emtia Vadeli İşlemler Ticaret Komisyonu (CFTC) Raporlarının farklı verilerini alıp analiz etmeyi sağlayan yatırımcı aracının geliştirilmesi gereklidir. Bu konu Meta COT Projesi - MetaTrader 4'te CFTC Rapor Analizi için Yeni Ufuklar makalesinde zaten ele alınmıştır; bu nedenle okuyucunun kavramlara aşina olduğunu varsayacağım ve o makalede "açıklanmamış" ayrıntılara değineceğim.
Fikir şudur: Komisyon tarafından sağlanan dosyalardan ara işleme ve dönüştürme olmadan veri alınmasına olanak tanıyan tek bir gösterge geliştirmek. Ayrıca, bu, farklı amaçlar için kullanılabilir: Verileri bir gösterge olarak çizmek, diğer göstergelerde veri kaynağı olarak, otomatik analiz için script dosyalarında, Alım Satım stratejileri geliştirirken Expert Advisor'larda.
1. COT raporlarının türleri
Üç rapor türü vardır: Mevcut Eski Rapor (COT), Ek Emtia İndeksi (CIT), Mevcut Dağıtılmış Rapor (DCOT); bunların aralarındaki fark Tablo 1'de sunulmuştur.
Açıklama | Mevcut Eski Raporlar | Ek Emtia İndeksi | Mevcut Dağıtılmış Raporlar |
---|---|---|---|
Kısa adı | COT | CIT | DCOT |
Referans başlığı | Mevcut Eski Raporlar | Ek Emtia İndeksi | Mevcut Dağıtılmış Raporlar |
Son veri dosyasına referans: | |||
Raporda sunulan yatırımcı grupları | Ticari olmayan Ticari Raporlanamayan | Ticari olmayan Ticari Raporlanamayan İndeks Yatırımcıları | Üretici/Tüccar/İşleyici/Kullanıcı Swap Yatırımcıları Yönetilen Para Diğer Raporlanabilirler Raporlanamayan |
Tablo 1. Yatırımcıların Taahhüt Raporları Türleri
Vadeli işlem piyasalarında pozisyonlarını rapor etmesi gereken yatırımcılar, raporların sınıflandırılması ve dönemsellik prensipleri hakkında bilgiler "Trade Stocks and Commodities With the Insiders: Secrets of the COT Report" adlı kitapta ve Meta COT Projesi - MetaTrader 4'te CFTC Rapor Analizi için Yeni Ufuklar 4 başlıklı makalede bulunabilir.
Bu kaynaklarda açıklanmayan iki raporu ele alacağım.
CIT kısaltması, İndeks Yatırımcılarının Taahhütleri anlamına gelir. Bu rapor, 2007'den itibaren yayınlanmaktadır. Mevcut CIT raporu web sayfasına https://cftc.gov/dea/options/deaviewcit.htm adresinden ulaşılabilir. İndeks yatırımcıları, hedger'lardan ve spekülatörlerden ayrı bir gruptadır.
Ek Raporun açıklaması https://www.cftc.gov/MarketReports/CommitmentsofTraders/AbouttheCOTReports/index.htm adresinde bulunabilir. Tüm bu indeks yatırımcıları genellikle piyasalarda uzun pozisyonlar açar ve bunları sözleşmeden sözleşmeye aktarır.
2009 itibarıyla Komisyon tarafından yayınlanan Yatırımcı Raporlarının Dağıtılmış Taahhütleri'nin açıklaması açıklama notlarında bulunabilir.
Dağıtılmış COT raporu, yatırımcıları aşağıdaki dört yatırımcı kategorisine ayırarak eski COT raporlarındaki şeffaflığı artırır: Üretici/Tüccar/İşleyici/Kullanıcı, Swap Yatırımcıları, Yönetilen Para ve Diğer Raporlanabilirler.
- Üretici/Tüccar/İşleyici/Kullanıcı. “Üretici/tüccar/işleyici/kullanıcı” ağırlıklı olarak fiziksel bir emtianın üretimi, işlenmesi, paketlenmesi veya taşınması ile uğraşan ve bu faaliyetlerle ilişkili riskleri yönetmek veya riskten korunmak için vadeli işlem piyasalarını kullanan tüzel kişidir.
- Swap Yatırımcısı. "Swap yatırımcısı", esas olarak bir emtia için swap işlemlerini yapan ve bu swap işlemleriyle ilişkili riski yönetmek veya riskten korunmak için vadeli işlem piyasalarını kullanan tüzel kişidir. Swap yatırımcısının karşı tarafları, riskten korunma fonları gibi spekülatif yatırımcılar veya fiziksel emtiadaki işlemlerinden kaynaklanan riskleri yöneten geleneksel ticari müşteriler olabilir.
- Yatırım Uzmanı. Bu raporun amacı doğrultusunda "yatırım uzmanı", kayıtlı emtia piyasası danışmanı (CTA), kayıtlı emtia havuzu operatörü (CPO) veya CFTC tarafından tanımlanan kayıtlı olmayan fondur. Bu yatırımcılar, müşteriler adına organize edilen vadeli işlemler alım satımını yönetmek ve yürütmekle ilgilenirler.
- Diğer Raporlanabilirler. Diğer üç kategoriden birine girmeyen diğer her raporlanabilir yatırımcı, “diğer raporlanabilirler” kategorisine alınır.
Raporlanan enstrümanların tam listesi Ek 2'de sunulmaktadır. CIT ve DCOT raporlarında belirli bir enstrümanın varlığını yansıtan sütunlar da vardır.
2. CSV dosyalarından harici verileri kullanan bir COT göstergesi yazma
Gösterge aşağıdaki gibi çalışacaktır. Raporun türü (Tablo 1'de listelenenlerden biri), veri türü ve yatırımcı grubu, göstergenin giriş parametrelerinde tanımlanır.
Veri türü şu şekilde olabilir:
- net uzun pozisyonlar
- açık pozisyonda net uzun vadeli kur oranı
- Net uzun pozisyonlar için hesaplanan Williams İndeksi
- açık pozisyon
Olası veri türlerinin listesi tam değil; kullandığım en temel verileri içerecek şekilde kolaylıkla genişletilebilir. Mevcut sembol için, veri dosyalarından belirtilen veriler talep edilir (bunların indirilmesi ve paketlerinin açılması aşağıda açıklanmıştır). Veri erişimi ve bu dosyalardan indirmek için CCFTCReport sınıfını kullanacağız.
Gösterge aşağıdaki yapıya sahiptir:
2.1. Sabitler
Sabitleri tanımlamak için enum veri türü kullanılır. Gösterge tarafından desteklenen rapor türleri şunlardır:enum cot_type_report // type of report { COT, DCOT, CIT };
Yatırımcı grupları:
enum cot_type_traders // types of traders { noncommercial, // Non-commercial commercial, // Commercial nonreportable, // Non-reportable index, // Index traders producer, // Producers swapdealers, // Swap dealers managedmoney, // Managed money otherreportables // Other reportable traders };
Göstergede kullanılabilecek veri türleri:
enum cot_type_data // type of COT data { netlongs, // net longs netlongsrate, // net longs rate in the open interest willams_index, // Williams index openinterest // Open interest };
2.2. Sınıflar
Farklı nesneleri tek bir değişken içinde saklamak için yapıları ve sınıfları kullanmak mümkündür. Ancak, bir dize türünde dinamik diziler veya değerler içeriyorlarsa, iki yapı türü değişkeni atamak mümkün değildir. Bu nedenle COT kaydını depolamak için yapı yerine sınıfı ve veri atama yöntemini kullandık.
class cot_record // class for data record of COT report { public: datetime COT_DATE; //date double COT_OPENINTEREST; //open interest double COT_LONGNONCOM; //longs of non-commercial traders double COT_SHORTNONCOM; //shorts of non-commercial traders double COT_LONGCOM; //longs of commercial traders double COT_SHORTCOM; //shorts of commercial traders double COT_LONGNONREPORTABLE; //longs of the other non-reportable traders double COT_SHORTNONREPORTABLE; //shorts of the other non-reportable traders double COT_LONGINDEX; //longs of index traders double COT_SHORTINDEX; //shorts of index traders double COT_LONGPRODUCER; //longs of Producer/Merchant/Processor/User double COT_SHORTPRODUCER; //shorts of Producer/Merchant/Processor/User double COT_LONGSWAPDEALERS; //longs of Swap Dealers double COT_SHORTSWAPDEALERS; //shorts of Swap Dealers double COT_LONGMANAGEDMONEY; //longs of Managed Money traders double COT_SHORTMANAGEDMONEY; //shorts of the Managed Money traders double COT_LONGOTHERREPORTABLES; //Other Reportables double COT_SHORTOTHERREPORTABLES; string COT_ID; //instrument identifier string COT_NAME; //instrument (symbol) name void copyvar(const cot_record &from) // copying contents (values of variables) from one class to another { COT_ID = from.COT_ID; COT_NAME = from.COT_NAME; COT_DATE = from.COT_DATE; COT_OPENINTEREST = from.COT_OPENINTEREST; COT_LONGNONCOM = from.COT_LONGNONCOM; COT_SHORTNONCOM = from.COT_SHORTNONCOM; COT_LONGCOM = from.COT_LONGCOM; COT_SHORTCOM = from.COT_SHORTCOM; COT_LONGNONREPORTABLE = from.COT_LONGNONREPORTABLE; COT_SHORTNONREPORTABLE = from.COT_SHORTNONREPORTABLE; COT_LONGINDEX = from.COT_LONGINDEX; COT_SHORTINDEX = from.COT_SHORTINDEX; COT_LONGPRODUCER = from.COT_LONGPRODUCER; COT_SHORTPRODUCER = from.COT_SHORTPRODUCER; COT_LONGSWAPDEALERS = from.COT_LONGSWAPDEALERS; COT_SHORTSWAPDEALERS = from.COT_SHORTSWAPDEALERS; COT_LONGMANAGEDMONEY = from.COT_LONGMANAGEDMONEY; COT_SHORTMANAGEDMONEY = from.COT_SHORTMANAGEDMONEY; COT_LONGOTHERREPORTABLES = from.COT_LONGOTHERREPORTABLES; COT_SHORTOTHERREPORTABLES = from.COT_SHORTOTHERREPORTABLES; }; };
Şu andan itibaren okuyucunun, Meta COT Projesi - MetaTrader 4'te CFTC Rapor Analizi için Yeni Ufuklar makalesinde ele alınan COT raporlarının CSV biçimine aşina olduğunu varsayacağım. Bu türün sınıf örneği, COT raporunun tek bir satırını depolamak için kullanılacaktır. Bu sınıf örneklerinin bir dizisi, COT kayıtlarının alanlarına depolama ve kolay erişim için bunların kullanılmasına izin verecektir. CCFTCReport sınıfı, veri depolama ve erişim için geliştirilmiştir:
class CCFTCReport // COT report { private: cot_type_report type; //type of current report cot_record data[]; //cot report data int sizedata; //number of records in the current report string idsymbol; //symbol identifier in cot ("CFTC Contract Market Code" field) string terminalsymbol; //symbol name in the client terminal public: void ~CCFTCReport(){ sizedata=0; }; bool Init( cot_type_report passedtype, string sym="" ); //initialization of class instance bool LoadFile( string filename ); //load data from file string Name(); //returns short report name bool Type(cot_type_report passedtype); //sets type of report cot_type_report Type(){return(type);}; //returns report type bool TestGroup( cot_type_traders type_trader ); //check for the presence of specified group of traders bool DefineIdSymbol(); //definition of id in the cot report bool GetString( int handle, cot_record& arr ); //gets line (record) from csv file string GetFieldCommaDelimited(string &str); //gets field from csv string double At(datetime time,cot_type_traders type_trader,cot_type_data typedata=netlongs); //gets data from the report };
CCFTCReport sınıf örneği tek bir sembol için tüm raporu içerir; rapor türü COT, CIT veya DCOT olabilir. Numaralandırmalar ve sınıflar "cot.mqh" içerme dosyasında listelenir.
2.3. Giriş parametreleri
Giriş parametreleri giriş değişkenleri tarafından tanımlanır. Bu parametreler, yatırımcılar grubunun, veri türünün ve gerekli COT rapor türünün belirlenmesine olanak tanır:
input cot_type_traders type_trader = noncommercial; //type of traders input cot_type_data type_data = netlongs; //type of the indicator input cot_type_report type_report = COT; //type of report
2.4. OnInit işlevi
Bir gösterge, şu amaçlar için kullanılan OnInit işlevine sahiptir: Rapor dosyasından veri indirmek, giriş parametrelerini kontrol etmek, göstergenin arabelleklerini atamak.
INDICATOR_DATA özelliğiyle başlatılan arabellek, grafikte çizilen verileri içerir. INDICATOR_CALCULATIONS özelliğiyle başlatılan arabellek, ara hesaplamaları içerir.
SetIndexBuffer( 0, BufferData, INDICATOR_DATA ); IndicatorSetString(INDICATOR_SHORTNAME,indname); SetIndexBuffer( 1, BufferCalculations, INDICATOR_CALCULATIONS );
2.5. OnCalculate işlevi
Bu işlev, gerekli verilerin seçilmesi, istenen verilerin hesaplanması ve bunların çizilmesi için kullanılır.
Çalışmasını ayrıntılı olarak ele alalım. İkinci çağrı biçimi kullanılır:
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 &TickVolume[], const long &Volume[], const int &Spread[]){
Hesaplama ve çizim için çubukları belirleyelim.
int pos=rates_total-prev_calculated-1; if( pos >= rates_total-1 )pos--;
Öğelerin zaman serileri gibi indekslenmesi gerektiğini belirtelim.
ArraySetAsSeries(Time, true); ArraySetAsSeries(BufferData, true); ArraySetAsSeries(BufferCalculations, true);
Birtakım denemelerden sonra, göstergenin arabellekleriyle ilgili tüm diziler için zaman serileri indekslemesini kullanmanın daha iyi olduğunu buldum. Aynısı, OnCalculate işlevine parametreler olarak iletilen diziler için de uygundur, son (yeni) öğenin 0'a eşit bir indeksi vardır.
Hesaplama döngüsü aşağıdaki gibidir:
for(int i=pos;i>=0;i--) { cot_type_data passed = type_data; if(type_data==netlongs || type_data==netlongsrate || type_data==willams_index) { // For the types of the data (net longs, net longs rate, Williams Index) it returns net longs // Further calculations are based on these data. passed = netlongs; } double res = Report.At(Time[i], type_trader, type_data ); //get report data BufferCalculations[i] = res; BufferData[i] = CalcData( type_data, i, Time ); }
BufferCalculations dizisi , COT raporundan seçilen birincil verileri depolamak için kullanılır.
BufferData dizisi, grafik üzerinde çizilmeye hazır verileri içerir. Rapordan alınan değerler (net uzun pozisyonlar, açık pozisyonlar) ve hesaplanan değerler (uzun vadeli kur oranı, Williams İndeksi) olabilir. Güzel bir çözüm bulamadığım şu noktayı özetlemek istiyorum. OnCalculate işlevine iletilen diziler sonraki düzeylerde gerekli olabilir ve onlara ancak bu çağrılarda iletilirse erişebiliriz; bu nedenle kodu karıştırdığını düşünüyorum.
CalcData işlevi çağrısı:
BufferData[i] = CalcData( type_data, i, Time );
CalcData işlevi CalcIndex işlevini çağırır:
double CalcData( cot_type_data type_data, int i, const datetime& Time[] ) { // net longs rate in the open interest if( type_data == netlongsrate ) return( BufferCalculations[ i ] / Report.At( Time[i], type_trader, openinterest )); // Williams Index if( type_data == willams_index )return( CalcIndex( i, Time, BufferCalculations ) ); return(BufferCalculations[i]); }
CalcIndex işlevi içindeki Zaman dizisine erişmem gerekiyordu; bu nedenle onu çağrılar hiyerarşisine göre iletmek zorunda kaldım. 8 diziyi de kullanmamız gerekirse, kodun nasıl görüneceğini hayal edin.
3. Veri Dosyalarını İndirme
Tüm dosya bağlantıları Tablo 1'de sunulmuştur. Her yıl için ayrı dosya vardır ve dosya adında yıl numarası mevcuttur. Örneğin https://www.cftc.gov/sites/default/files/files/dea/history/deacot2010.zip dosyası 2010 yılı raporunu içerir, https://www.cftc.gov/sites/default/files/files/dea/history/deacot2009.zip dosyası 2009 yılı raporunu içerir vb.
Tüm bu dosyaları indirmek ve İstemci Terminali yükleme dizininin \MQL5\files\ klasörüne açmak gereklidir. Her yıl için deacotXXXX adında kendi ayrı klasörünü oluşturmak gerekir; burada XXXX bir yıla karşılık gelir. Sonuç olarak, aşağıdaki klasör yapısını elde edeceğiz.
Şek.1. Raporlar için klasör yapısı.
Veri hazırlama süreci basitleştirilebilir. Aşağıdaki tüm işlemler (CFTC web sitesindeki güncellemeleri kontrol etme, uygun klasörlere indirme ve açma) "Cotdownloader" script dosyası tarafından gerçekleştirilir. Script dosyası çekirdeği (veri indirme), WININET_TEST script dosyasına dayanır. Fiyat Histogramında (Piyasa Profili) yayınlanan CProgressBar sınıfını ve MQL5 makalesindeki uygulamasını kullandım. Harici uygulamalar, Windows API kullanılarak yürütülür; bu, Gerçek Alım Satım İşleminde Bir Alım Satım Robotunun Otomatik Optimizasyonu makalesinde açıklanmıştır.
Bir script dosyasının kullanımı basittir: Herhangi bir grafiğe eklemeniz yeterlidir. Çalışırken, veri indirme ile ilgili bilgileri grafikte bir ilerleme çubuğu olarak ve Experts sekmesinde metin mesajları olarak bildirir.
Şek.2. Veri indirme işlemi.
4. Kullanım Örneği
Bir göstergeyi çalıştırmak için, onu seçilen sembolün grafiğine eklemek ve giriş parametrelerini belirtmek gerekir.
Şek. 3 Cot göstergesinin giriş parametreleri
Artık, numaralandırılmış veri türlerinin değişken adları ve değerleri yerine kullanıcı dostu gösterimi belirtebileceğinizi unutmayın. Bu, şu şekilde yapılır: Değişken adını değiştirmek için bir giriş değişkeni bildirirken bir açıklama belirtmelisiniz:
input cot_type_traders type_trader = noncommercial; //Type of traders input cot_type_data type_data = netlongs; //Type of the indicator input cot_type_report type_report = COT; //Type of report
Aynısı değerler için de geçerlidir - Numaralandırılmış değerleri bildirirken açıklamalarda açıklamanın belirtilmesi gerekir:
enum cot_type_data // types of data { netlongs, // Net longs netlongsrate, // Net longs rate in open interest willams_index, // Williams Index openinterest // Open Interest };
Giriş parametreleri doğru bir şekilde belirtilmişse ve dosyalar indirilip açılmışsa, gösterge ayrı bir pencerede görünecektir:
Şek. 4 COT göstergesi
Hata olması durumunda, "Araç Kutusu" penceresinin "Experts" sekmesinde yazdırılacaktır.
Şek. 5 Hata mesajı
5. Sürüm Notları
Gösterge, tam özellikli bir bitmiş ürün olarak konumlandırılmamıştır. Bu, basit bir kod yazarak daha fazla kullanılabilecek sonuçları nasıl elde edebileceğimizi gösteren bir örnektir. Örneğin, belirli bir aracı tarafından sağlanan İstemci Terminali ayarlarıyla COT raporu verilerinin türünü özelleştirmeye olana tanıyan modülü geliştirmedik. Bu özellik, DefineIdSymbol işlevi içinde uygulanır. İlk birkaç satır şu şekildedir:
bool CCFTCReport::DefineIdSymbol() { idsymbol=""; if(terminalsymbol=="USDLFX" || terminalsymbol=="DX_CONT" || StringFind(terminalsymbol,"DX")==0)idsymbol="098662"; //U.S. DOLLAR INDEX - CE FUTURES U.S. if( terminalsymbol == "FC_CONT" || StringFind( terminalsymbol, "FC")== 0)idsymbol = "061641"; //FEEDER CATTLE if( terminalsymbol == "LC_CONT" || StringFind( terminalsymbol, "LC")== 0)idsymbol = "057642"; //LIVE CATTLE if( terminalsymbol == "QM_CONT" || StringFind( terminalsymbol, "QM")== 0)idsymbol = "067651"; //CRUDE OIL, LIGHT SWEET - NEW YORK MERCANTILE EXCHANGE
İstemci terminalinin bir sembolüne rapordan bir sembol atamanız gerekiyorsa bu kodu değiştirerek manuel olarak yapmanız gerekir. BrocoTrader4 terminalinden ayarları kullandım. Bu makaledeki örnekler için Metaquotes-Demo ve Alpari-Demo sunucularında açılan demo hesapları kullandım. DCOT raporları için yalnızca 2 enstrüman mevcuttur: XAUUSD (altın), XAGUSD (gümüş).
Şu anda CIT raporları desteklenmemektedir; zira bu sunucularda herhangi bir finansal enstrüman bulunmamaktadır. Görünecekleri zaman, yalnızca koddaki bazı satırların açıklamasını kaldırarak ve değiştirerek desteklerini dahil etmek kolaydır.
6. COT Göstergesi iCustom aracılığıyla Nasıl Kullanılır?
Göstergeyi Şek.3'te sunulan bir formda kullanmıyorum. MQL5 dili, iCustom işlevini kullanarak özel göstergeleri tekrar kullanma olanağına sahiptir.
6.1. Yeni gösterge oluşturma
COT raporlarının görsel analizlerinin birçok yolu vardır. Bunlardan biri, farklı yatırımcı gruplarının pozisyonlarını farklı renklerle gösteren bir histogramdır.
Şu görevi ele alalım: Farklı yatırımcı gruplarının (COT raporlarından ticari ve ticari olmayan) pozisyonlarını bir histogram olarak çizen bir COTnet göstergesi oluşturmak. Kullanıcı, veri türünü seçme olanağına sahip olmalıdır: net uzun pozisyonlar, net uzun vadeli kur oranı, Williams İndeksi.
İşlem, MQL5'te göz önünde bulundurulan MQL5 Sihirbazı ile basitleştirilebilir: Kendi Göstergenizi Oluşturun makalesi. Sonuç olarak, gösterge kodu (çizim stilleri MQL5 Sihirbazı tarafından oluşturulmuştur) aşağıdaki gibi görünür:
#property indicator_separate_window #property indicator_buffers 2 #property indicator_plots 2 //---- plot Noncommercial #property indicator_label1 "Noncommercial" #property indicator_type1 DRAW_HISTOGRAM #property indicator_color1 Blue #property indicator_style1 STYLE_SOLID #property indicator_width1 5 //---- plot Commercial #property indicator_label2 "Commercial" #property indicator_type2 DRAW_HISTOGRAM #property indicator_color2 Red #property indicator_style2 STYLE_SOLID #property indicator_width2 5 //--- indicator buffersKitaplığı sınıflarla dahil etmek için giriş değişkenleri, genel değişkenler ve önişlemci yönergesi aşağıdaki gibi görünür:
#include <cot.mqh> input cot_type_data type_data = netlongs; // Indicator's type double NoncommercialBuffer[]; double CommercialBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int handlecomm, handlenoncomm;
OnInit işlevinin kodu aşağıdaki gibidir:
int OnInit() { SetIndexBuffer(0,NoncommercialBuffer,INDICATOR_DATA); SetIndexBuffer(1,CommercialBuffer,INDICATOR_DATA); cot_type_traders td = commercial; cot_type_report tr = COT; handlecomm = iCustom(NULL, 0, "cot", td, type_data, tr ); td = noncommercial; handlenoncomm = iCustom(NULL, 0, "cot", td, type_data, tr ); return(0); }Özel göstergelerin nasıl kullanılacağını ele alalım (ticari olmayan yatırımcılar örneğinde). iCustom işlevinin ilk çağrısından sonra, işleve şu parametreler (raporumuz için gerekli) iletilir:
- NULL – İstemci terminalindeki geçerli sembol
- 0 – Mevcut zaman dilimi
- "cot" – Özel göstergemizin dosya adı (uzantı olmadan belirtildiğini unutmayın)
- td = ticari (ihtiyacımız olan yatırımcılar grubu)
- type_data = Göstergenin türü, giriş parametrelerinde belirtilir
- tr = COT – Rapor türü
Sonuç olarak, göstergenin verilerini almak için daha sonra kullanılacak bir tanıtıcımız var.
if(BarsCalculated(handlecomm)<rates_total || BarsCalculated(handlenoncomm)<rates_total) return(0); int to_copy = clctocopy(rates_total, prev_calculated ); if( !copycotbuf(handlecomm, CommercialBuffer, to_copy ) ) { Print("Error in data of commercial traders"); return( 0 ); } if( !copycotbuf(handlenoncomm, NoncommercialBuffer, to_copy ) ) { Print("Error in data of non-commercial traders"); return( 0 ); } return(rates_total);
Biraz zaman harcadık, kısa bir kod yazdık ve sonucu elde ettik:
Şek. 6 cotnet göstergesi
6.2. iCustom ayrıca script dosyalarında da kullanılabilir
Şu görevi ele alalım: İstatistiksel tahminleri hesaplamak için cotsignals script dosyasını oluşturmak.
- Ticari olmayan yatırımcıların net uzun pozisyonlarının işareti mum rengiyle aynıdır: Pozitifse, haftalık trend boğa, negatifse trend ayıdır.
- Mum rengi (beyaz/siyah), ticari olmayan yatırımcıların net uzun pozisyonlarının artması/azalması ile doğrudan ilişkilidir.
- Mum rengi, ticari olmayan yatırımcıların net uzun pozisyonlarında hesaplanan Williams İndeksi değerine bağlı olarak siyah veya beyazdır. Aşırı alım durumunda (% 75'ten fazla) renk siyahtır, aşırı satım durumunda (% 25'ten az) mum rengi beyazdır.
COT raporundaki verileri kullanacağız. Bu örnekleri kullanarak kendi COT veri yorumlama yöntemlerinizi geliştirebilir ve bundan yararlanabilirsiniz. Sizin durumunuzda, 3 yıllık bir döneme karşılık gelen 150 haftalık geçmiş çubuğu kontrol edeceğiz. Bir script dosyası yazmadan önce gerekli veri türlerini ve sınıflarını tanımlamamız gerekir:
Olası istatistik türleri için numaralandırma:
enum cot_type_statistics //types of statistics, used for calculation { speculantsign, //Sign of non-commercial traders' net longs speculantchange, //Volume changes of non-commercial traders' longs willamszones //Overbought/oversold zones of Williams Index };
Belirtilen sembolün istatistiklerini almak için özel sınıf oluşturalım:
class CCOTStatistic { private: int bars ; // number of weekly bars in symbol history string symbol; // symbol name in Client Terminal double netlongsspeculantsdata[]; // data for speculators' net longs double willamsindexspeculantsdata[]; // data for speculators' Williams index net longs cot_type_statistics liststatistic[]; // list of statistics public: //initialization and initial setup void Init( string symbol_passed, cot_type_statistics& listpassed[] ); //Get the forecast for the direction int GetCotSignalDirection( int ibar, cot_type_statistics type_stat ); bool Get( double& probably[] ); // returns statistics };
Get yöntemi ile istenen istatistikler döndürülür; bunun nasıl çalıştığını açıklayalım. İlk olarak, gerekli diziler özel gösterge kullanılarak verilerle doldurulur. Ticari olmayan (spekülatör) yatırımcıların net uzun pozisyonlarının değerlerine ve Williams İndeksi değerlerine ihtiyacımız var:
if (!LoadDataFromCOTIndicator(symbol, PERIOD_W1, noncommercial, netlongs, COT, netlongsspeculantsdata, bars)) return(false); // we have got the data - speculators' net longs if (!LoadDataFromCOTIndicator(symbol, PERIOD_W1, noncommercial, willams_index, COT, willamsindexspeculantsdata, bars)) return(false); // we have got the data - speculators' Williams Index
İstatistik hesaplama kodu (hesaplanacak tek bir parametremiz var - bu, haftalık mum rengi için bir tahmin olasılığıdır) aşağıdaki gibi görünür:
for(int istat = 0; istat < ArraySize(liststatistic); istat++) { int cntsignals = 0; int cntsucsess = 0; for(int i=bars-1; i>=0; i--) { double colorcandle=iClose(symbol,PERIOD_W1,i)-iOpen(symbol,PERIOD_W1,i); if(symbol=="USDCHF" || symbol=="USDCAD" || symbol=="USDJPY") colorcandle=-colorcandle; double cotdirection=GetCotSignalDirection(i,liststatistic[istat]); if(cotdirection==0)continue; //no signal cntsignals++; if(cotdirection*colorcandle>0) cntsucsess++; //color and direction are same } if(cntsignals!=0) probably[istat]=1.*cntsucsess/cntsignals; Print("Calculation complete for ",symbol,GetStringTypeStatistic(liststatistic[istat]), " the correct forecast probability=",DoubleToString(probably[istat],2)); Print("Total signals:",cntsignals,"success:",cntsucsess); }LoadDataFromCOTIndicator işlevi karmaşıktır; zira göstergeden veri almak için çok sayıda kontrol yapılması gerekir; bu nedenle bunu ayrıntılı olarak ele alalım:
bool LoadDataFromCOTIndicator( string symbol, //symbol name ENUM_TIMEFRAMES timeframe, //timeframe cot_type_traders type_trader, //group of traders type cot_type_data type_data , //indicator type cot_type_report type_report, //report type double& loadto[], //output data array int nbars ) //number of requested bars { int cothandle; nbars+=10 ; //for reserve cothandle = iCustom( symbol , timeframe, "cot", type_trader, type_data, type_report );
Son satırda, arabelleklerden veri almak için kullanılabilecek özel göstergenin tanıtıcısını alıyoruz.
Göstergenin başarıyla oluşturulduğunu kontrol etmeliyiz:
if( cothandle == INVALID_HANDLE ){ Print("Error in indicator creation for symbol ", symbol ); return(false); }
İhtiyacımız olan geçmiş verilerini kontrol etmek:
int n = BarsSinh( symbol, timeframe ); if( n < nbars ) {
Yeterli geçmiş verisi yoksa yükleyelim:
Print("Loading history for ", symbol ); //, " start at ", loadtm CheckLoadHistory( symbol ,timeframe, loadtm ); n = BarsSinh( symbol, timeframe ); if( n < nbars ) { Print("Not enough history for the "+symbol, " total ", n, "bars"); return(false); } }
BarsSinh (belirtilen sembol ve zaman diliminde mevcut olan çubuk sayısını döndürür) ve CheckLoadHistory (geçmişin indirilmesi) işlevi, MQL5 Referans'taki script dosyası koduna dayalıdır.
Göstergenin ara belleğindeki verileri kullanmadan önce, verilerin hazırlanıp hazırlanmadığını kontrol etmeliyiz; zira yalnızca bir tanıtıcının varlığı hesaplamanın bittiğini garanti etmez.
Bir sonraki çağrı bu kontrolü gerçekleştirir ve hesaplamalar bittiğinde bekler:
if( !WaitForCalculcateIndicator( cothandle ) ){ Print("Timeout for the COT indicator calculation"); return(false); }
Veriler hazır, onları kopyalamamız gerekiyor:
int res = CopyBuffer(cothandle, 0, 0, nbars, loadto );
Ardından, verilerin başarıyla kopyalandığını kontrol ediyoruz:
if( res != nbars ){ Print("Error in obtaining the data, ", MyErrorDescription(_LastError) ); return(false); }
Ve son olarak:
return(true);
Verileri aldık, bunları işlev parametresiyle iletilen diziye döndürüyoruz.
Elde edilen istatistikler CSV dosyasına yazdırılacaktır; CCOTOutFile sınıfı bu amaç için geliştirilmiştir:
class CCOTOutFile { private: string filename; int handle; public: bool Init( string passedname ); void PutString( string symbol, double& probably[] ); void PutHeader( cot_type_statistics& arrheaders[] ) ; void ~CCOTOutFile(){ FileClose(handle); } };
Bu, çıktı verileriyle dosyayı oluşturur, dizeleri .csv biçiminde yazar, başlığı oluşturur ve sınıf örneğini yok ederken dosyayı kapatır.
Gerekli tüm kitaplıklar yazıldığı için script dosyasının kodu kısa olacaktır.
Giriş parametreleri ve dahil edilen kitaplıklar:
input int NBars =150; //History depth W1 #include <common.mqh> #include <cot.mqh>
Analiz için sembollerin listesi:
string listsymbols[] = {"EURUSD", "GBPUSD", "USDCHF", "USDCAD", "USDJPY", "AUDUSD", "XAUUSD"};
Nesne başlatma:
void OnStart() { CCOTOutFile outfile; //file with results if( !outfile.Init("cotw1signals.csv") )return;
Hesaplama için istatistik listesi:
cot_type_statistics list_statistic[]= // statistic types list
{ speculantsign, speculantchange, willamszones };
CSV dosyası başlığını yazma:
outfile.PutHeader( list_statistic ); //writing CSV file header
Ana döngüde her sembol ve sinyal için istatistikler alırız ve sonuçları dosyaya yazarız:
for( int i = 0; i < ArraySize(listsymbols); i++ ) //for all symbols in the list { Print( "Analysis for "+listsymbols[i] ); CCOTStatistic stat; stat.Init( listsymbols[i ], list_statistic ); double probably[]; //probability of a signal if( !stat.Get( probably ) ) { Print( "Error in statistics calculation for the symbol ", listsymbols[i] ); return; } outfile.PutString( listsymbols[i], probably ); //write string to .csv file } Print("Calculation complete."); }
Script dosyası Alpari-Demo sunucusunda test edilmiştir. MetaQuotes-Demo sunucusunda çalıştırırsanız, "XAUUSD sembolü için istatistik hesaplamasında hata oluştu" mesajını yazdıracaktır; zira bu sembol şu anda mevcut değildir.
Script dosyasının yürütülmesinin bir sonucu olarak dosyayı alacağız; bu aşağıdaki gibi görünür:
Daha açık hale getirmek için, Excel'i açalım, ortalama değerleri hesaplayalım ve bir olasılıklar histogramı oluşturalım:
Şek. 8 Tahmin olasılığı
- 0,54 - ticari olmayan yatırımcılar işareti,
- 0,50 – ticari olmayan yatırımcıların net uzun pozisyonlarındaki hacim değişiklikleri,
- 0,48 – Williams İndeksi'nin aşırı alım/aşırı satım bölgeleri.
Gördüğümüz gibi, ticari olmayan yatırımcıların net uzun pozisyonları için en iyi tahmin sonuçlarını aldık. En kötü sonuç Williams İndeksi bölgeleri içindir. 0,48 değeri, Williams İndeksi'nin aşırı alım durumunda dahi beyaz mum olasılığının 0,52'ye ve aşırı satım durumunda durum için siyah renk olasılığının 0,52'ye eşit olduğu anlamına gelir. Yani Williams tarafından sunulan formdaki kullanımı rasyonel değildir. Belki sonuçlar daha büyük zaman dilimleri kullanılarak iyileştirilebilir: Ay veya belki daha büyük bir zaman dilimi. Demo sunucularında ve COT raporlarında bulunan tüm sembolleri kullandık.
Sonuç
MQL5, bir alım satım sistemi geliştirmek için gerekli olan tüm görev döngüsünü programlamanıza olanak tanıyan bir araçtır:- Harici veri kaynaklarına erişmek için kullanılan karmaşık algoritmalara sahip göstergeler,
- Diğer göstergelerde, script dosyalarında ve Expert Advisor'larda yeniden kullanımı,
- Kendi istatistiksel ve kantitatif analiz algoritmalarının uygulanması.
- Nesne yönelimli programlama, hata ayıklama için harcanan zamanı büyük ölçüde azaltır.
- Hata ayıklayıcı.
- MQL4'ten MQL5'e geçiş yapmak kolaydır.
- Nesne yönelimli modelin uygulanması başarılı olup kullanımı kolaydır.
- Dokümantasyon iyi organize edilmiştir.
- Windows API ile entegrasyon, platformu genişletir; örneğin İnternet sayfalarıyla çalışmaya olanak tanır.
Dezavantajları:
Benim için asıl sorun geçmiş verilere erişimdi:- Zaman serilerine erişmek için gerekli temel işlevlerin olmaması (MQL4'te Time[], Open[], Close[] ve diğerleri gibi)
- Verilere erişirken, erişilebilirliklerine ilişkin çok sayıda kontrol yapmak, ayrıntılarını anlamak gerekir.
Bir hata ayıklayıcı mevcut, ancak pek çok kullanışlı özelliği içermiyor: Hata ayıklama göstergeleri yok, ayrıca diziler ve sınıflar gibi karmaşık nesnelerin kontrollerini yapmak imkansız. Avantajlarını ve dezavantajlarını içeren liste kapsamlı değildir; yalnızca bu makaleyi hazırlarken rastladıklarımı listeledim.
Ek 1. Dosyaların listesi
Tüm dosyalar İstemci Terminali klasöründe yer alır. Dosyaları sources.zip dosyasından İstemci Terminali klasörüne çıkarın.
№ | Dosya adı | Açıklama |
---|---|---|
1 | MQL5\Files\unzip.exe | .zip arşivlerini açmak için Windows uygulaması |
2 | MQL5\Include\Cdownloader.mqh | İnternetten CFTC arşivlerini indiren sınıf |
3 | MQL5\Include\ClassProgressBar.mqh | Grafik penceresinde indirme işlemini göstermek için kullanılan CProgressBar sınıfı |
4 | MQL5\Include\common.mqh | Tüm göstergelerde ve script dosyalarında kullanılan ortak işlevler ve sabitler |
5 | MQL5\Include\cot.mqh | Cot raporlarından verileri seçen CCFTCReport sınıfı |
6 | MQL5\Include\ErrorDescription.mqh | Hata Açıklama kitaplığı |
7 | MQL5\Indicators\cot.mq5 | Temel gösterge cot'si |
8 | MQL5\Indicators\cotnet.mq5 | cot.mq5'in özel kullanıcı göstergesi olarak kullanımına basit bir örnek olan cotnet göstergesi |
9 | MQL5\Scripts\cotdownloader.mq5 | Cotdownloader script dosyası, arşiv dosyalarını internetten indirir |
10 | MQL5\Scripts\cotsignals.mq5 | Cotsignals script dosyası, COT raporlarının istatistiksel analiz örneği |
Tablo 2. Dosyaların listesi
Ek 2. COT raporlarında bulunan sembollerin listesi
№ | Sembol adı | Değişimde kimlik | İstemci Terminalinde Kimlik | CIT'de mevcut | DCOT'ta mevcut |
---|---|---|---|---|---|
1 | BUĞDAY - CHICAGO BOARD OF TRADE | 001602 | ZW | x | x |
2 | BUĞDAY - KANSAS CITY BOARD OF TRADE | 001612 | x | x | |
3 | BUĞDAY - MINNEAPOLIS GRAIN EXCHANGE | 001626 | x | ||
4 | MISIR - CHICAGO BOARD OF TRADE | 002602 | ZC | x | x |
5 | YULAF - CHICAGO BOARD OF TRADE | 004603 | ZO | x | |
6 | SOYA FASULYESİ - CHICAGO BOARD OF TRADE | 005602 | ZS | x | x |
7 | KÜÇÜK SOYA FASULYESİ - CHICAGO BOARD OF TRADE | 005603 | x | ||
8 | KÜKÜRT FİNANSAL ENSTRÜMAN - CHICAGO CLIMATE FUTURES EXCHANGE | 006261 | x | ||
9 | KARBON FİNANSAL ENSTRÜMAN - CHICAGO CLIMATE FUTURES EXCHANGE | 006268 | x | ||
10 | RGGI CO2 İZNİ 2009 - CHICAGO CLIMATE FUTURES EXCHANGE | 00626U | x | ||
11 | SOYA FASULYESİ YAĞI - CHICAGO BOARD OF TRADE | 007601 | ZL | x | x |
12 | ABD HAZİNE BONOSU - CHICAGO BOARD OF TRADE | 020601 | ZB | ||
13 | ABD UZUN VADELİ HAZİNE BONOSU - CHICAGO BOARD OF TRADE | 020604 | |||
14 | GULF # 6 FUEL %3,0 SULFUR SWAP - NEW YORK TİCARET BORSASI | 02165A | x | ||
15 | NY RES FUEL %1,0 SULFUR SWAP - NEW YORK TİCARET BORSASI | 02165B | x | ||
16 | EUR %1 FUEL OIL NWE CAL SWAP - NEW YORK TİCARET BORSASI | 02165C | x | ||
17 | EUR %3,5 FUEL OIL RTD CAL SWAP - NEW YORK TİCARET BORSASI | 02165E | x | ||
18 | SING FUEL OIL 180 CAL SWAP - NEW YORK TİCARET BORSASI | 02165G | x | ||
19 | EAST WEST FUEL OIL SPR SWAP - NEW YORK TİCARET BORSASI | 02165I | x | ||
20 | NY %1 V GULF %3 FUEL OIL SPR - NEW YORK TİCARET BORSASI | 02165T | x | ||
21 | NO. 2 ISITMA YAĞI | 022651 | x | ||
22 | SING GASOIL SWAP - NEW YORK TİCARET BORSASI | 02265J | x | ||
23 | SING GASOIL/RDAM GASOIL SWAP - NEW YORK TİCARET BORSASI | 02265T | x | ||
24 | NYMEX HEATING OIL/RDAM GASOIL - NEW YORK TİCARET BORSASI | 02265U | x | ||
25 | GASOIL (ICE) SWAP - NEW YORK TİCARET BORSASI | 02265V | x | ||
26 | UP DOWN GC ULSD VS HO SPR SWAP - NEW YORK TİCARET BORSASI | 022A13 | x | ||
27 | SING GASOIL BALMO SWAP - NEW YORK TİCARET BORSASI | 022A22 | x | ||
28 | NATURAL GAS ICE HENRY HUB - ICE OTC | 023391 | x | ||
29 | NATURAL GAS - NEW YORK TİCARET BORSASI | 023651 | QG | x | |
30 | MICHCON BASIS SWAP - NEW YORK TİCARET BORSASI | 02365A | x | ||
31 | M-3 BASIS SWAP - NEW YORK TİCARET BORSASI | 02365C | x | ||
32 | TCO BASIS SWAP - NEW YORK TİCARET BORSASI | 02365D | |||
33 | NGPL TEXOK BASIS SWAP - NEW YORK TİCARET BORSASI | 02365G | x | ||
34 | NGPL MIDCON BASIS SWAP - NEW YORK TİCARET BORSASI | 02365K | x | ||
35 | WAHA BASIS SWAP - NEW YORK TİCARET BORSASI | 02365O | x | ||
36 | HOUSTON SHIP CH INDEX SWAP - NEW YORK TİCARET BORSASI | 023A10 | x | ||
37 | CBT ETHANOL - CHICAGO BOARD OF TRADE | 025601 | x | ||
38 | CHICAGO ETHANOL SWAP - NEW YORK TİCARET BORSASI | 025651 | x | ||
39 | SOYA KÜSPESİ - CHICAGO BOARD OF TRADE | 026603 | ZM | x | |
40 | JAPAN C&F NAPTHA SWAP - NEW YORK TİCARET BORSASI | 03265C | x | ||
41 | PAMUK NO. 2 - ICE FUTURES U.S. | 033661 | CT | x | x |
42 | HENRY HUB BASIS SWAP - NEW YORK TİCARET BORSASI | 035652 | x | ||
43 | HOUSTON SHIP CH BASIS SWAP - NEW YORK TİCARET BORSASI | 035653 | x | ||
44 | NW PIPE ROCKIES BASIS SWAP - NEW YORK TİCARET BORSASI | 035654 | x | ||
45 | PANHANDLE BASIS SWAP - NEW YORK TİCARET BORSASI | 035655 | x | ||
46 | HENRY HUB SWAP - NEW YORK TİCARET BORSASI | 03565B | |||
47 | HENRY HUB PENULTIMATE GAS SWAP - NEW YORK TİCARET BORSASI | 03565C | x | ||
48 | ÇELTİK - CHICAGO BOARD OF TRADE | 039601 | ZR | x | |
49 | FRZN KONSANTRE PORTAKAL SUYU - ICE FUTURES U.S. | 040701 | JO | x | |
50 | 2-YILLIK ABD HAZİNE BONOLARI - CHICAGO BOARD OF TRADE | 042601 | |||
51 | 10-YILLIK ABD HAZİNE BONOLARI - CHICAGO BOARD OF TRADE | 043602 | ZN | ||
52 | 5-YILLIK ABS HAZİNE BONOLARI - CHICAGO BOARD OF TRADE | 044601 | |||
53 | 30-GÜNLÜK FEDERAL FONLAR - CHICAGO BOARD OF TRADE | 045601 | ZQ | ||
54 | SÜT Sınıf III - CHICAGO TİCARET BORSASI | 052641 | x | ||
55 | LEAN HOGS - CHICAGO TİCARET BORSASI | 054642 | HE | x | x |
56 | CANLI SIĞIR - CHICAGO TİCARET BORSASI | 057642 | LC | x | x |
57 | RANDOM UZUNLUK KERESTE - CHICAGO TİCARET BORSASI | 058643 | LB | x | |
58 | BESİ SIĞIRI - CHICAGO TİCARET BORSASI | 061641 | FC | x | x |
59 | AYLIK PJM ELEKTRİK - NEW YORK TİCARET BORSASI | 064657 | x | ||
60 | ISO NEW ENGLAND LMP SWAP - NEW YORK TİCARET BORSASI | 06465H | x | ||
61 | PJM CAL MONTH OFF PK LMP SWAP - NEW YORK TİCARET BORSASI | 06465M | x | ||
62 | ISO NEW ENG OFF PK LMP SWAP - NEW YORK TİCARET BORSASI | 06465S | x | ||
63 | CINERGY CAL MONTH LMP SWAP - NEW YORK TİCARET BORSASI | 064A01 | x | ||
64 | CINERGY OFF PEAK LMP SWAP - NEW YORK TİCARET BORSASI | 064A02 | |||
65 | PJM N ILL PEAK DAY AHEAD - NEW YORK TİCARET BORSASI | 064A34 | x | ||
66 | PJM JCPL PEAK DAY AHEAD - NEW YORK TİCARET BORSASI | 064A48 | x | ||
67 | PJM PEPCO PEAK DAY AHEAD - NEW YORK TİCARET BORSASI | 064A50 | x | ||
68 | PJM PSEG PEAK DAY AHEAD - NEW YORK TİCARET BORSASI | 064A54 | x | ||
69 | PJM WESTERN PEAK DAY AHEAD - NEW YORK TİCARET BORSASI | 064A56 | |||
70 | PJM WESTERN PEAK REAL TIME - NEW YORK TİCARET BORSASI | 064A58 | x | ||
71 | PJM WESTERN OFF PEAK REAL TIME - NEW YORK TİCARET BORSASI | 064A59 | x | ||
72 | ISO NEW ENG INT HUB PEAK SWAP - NEW YORK TİCARET BORSASI | 064A60 | x | ||
73 | MW IND TRANS PEAK SWAP - NEW YORK TİCARET BORSASI | 064A62 | x | ||
74 | NYISO ZONE 5 MW PEAK SWAP - NEW YORK TİCARET BORSASI | 064A66 | |||
75 | ISO NEW ENG HUB OFF PEAK SWAP - NEW YORK TİCARET BORSASI | 064A78 | |||
76 | MT BELVIEU PROPANE 5 DEC SWAP - NEW YORK TİCARET BORSASI | 06665O | |||
77 | MT BELVIEU ETHANE 5 DEC SWAP - NEW YORK TİCARET BORSASI | 06665P | x | ||
78 | MT BELV NORM BUTANE 5 DEC SWAP - NEW YORK TİCARET BORSASI | 06665Q | x | ||
79 | MT BELV NAT GASOLINE 5 DEC SWP - NEW YORK TİCARET BORSASI | 06665R | x | ||
80 | CRUDE OIL LIGHT SWEET - ICE FUTURES EUROPE LIGHT SWEET - ICE FUTURES EUROPE | 067411 | x | ||
81 | CRUDE OIL, LIGHT SWEET - NEW YORK TİCARET BORSASI | 067651 | QM | x | |
82 | WTI CRUDE OIL CALENDAR SWAP - NEW YORK TİCARET BORSASI | 06765A | x | ||
83 | DUBAI CRUDE OIL CALENDAR SWAP - NEW YORK TİCARET BORSASI | 06765G | x | ||
84 | WTI CRUDE OIL FINANCIAL - NEW YORK TİCARET BORSASI | 06765I | x | ||
85 | BRENT FINANCIAL - NEW YORK TİCARET BORSASI | 06765J | x | ||
86 | BRENT (ICE) CALENDAR SWAP - NEW YORK TİCARET BORSASI | 06765N | x | ||
87 | BRENT-DUBAI SWAP - NEW YORK TİCARET BORSASI | 06765O | x | ||
88 | COCOA - ICE FUTURES U.S. | 073732 | CC | x | x |
89 | PALLADIUM - NEW YORK TİCARET BORSASI | 075651 | PA | x | |
90 | PLATINUM - NEW YORK TİCARET BORSASI | 076651 | PL | x | |
91 | SUGAR NO. 11 - ICE FUTURES U.S. | 080732 | SB | x | x |
92 | COFFEE C - ICE FUTURES U.S. | 083731 | KC | x | x |
93 | SILVER - COMMODITY EXCHANGE INC. | 084691 | SI,XAGUSD,ZI | x | |
94 | COPPER-GRADE #1 - COMMODITY EXCHANGE INC. | 085692 | HG | x | |
95 | GOLD - COMMODITY EXCHANGE INC. | 088691 | GC,GOLD,XAUUSD | x | |
96 | RUSSIAN RUBLE - CHICAGO TİCARET BORSASI | 089741 | USDRUB,USDRUR | ||
97 | CANADIAN DOLLAR - CHICAGO TİCARET BORSASI | 090741 | 6C,USDCAD | ||
98 | SWISS FRANC - CHICAGO TİCARET BORSASI | 092741 | 6S,USDCHF | ||
99 | MEXICAN PESO - CHICAGO TİCARET BORSASI | 095741 | |||
100 | BRITISH POUND STERLING - CHICAGO TİCARET BORSASI | 096742 | 6B,GBPUSD | ||
101 | JAPANESE YEN - CHICAGO TİCARET BORSASI | 097741 | 6J,USDJPY | ||
102 | ABD DOLLAR INDEX - ICE FUTURES U.S. | 098662 | DX | ||
103 | EURO FX - CHICAGO TİCARET BORSASI | 099741 | 6E,EURUSD | ||
104 | GASOLINE BLENDSTOCK (RBOB) - NEW YORK TİCARET BORSASI | 111659 | XRB | x | |
105 | RBOB CALENDAR SWAP - NEW YORK TİCARET BORSASI | 11165K | x | ||
106 | NEW ZEALAND DOLLAR - CHICAGO TİCARET BORSASI | 112741 | 6N,NZDUSD | ||
107 | VIX FUTURES - CBOE FUTURES EXCHANGE | 011700 | |||
108 | DOW JONES INDUSTRIAL AVERAGE - CHICAGO BOARD OF TRADE | 124601 | |||
109 | 3-MONTH EURODOLLARS - CHICAGO TİCARET BORSASI | 132741 | |||
110 | S&P 500 STOCK INDEX - CHICAGO TİCARET BORSASI | 138741 | |||
111 | E-MINI S&P 500 STOCK INDEX - CHICAGO TİCARET BORSASI | 13874A | ES,SPX | ||
112 | NASDAQ-100 STOCK INDEX - CHICAGO TİCARET BORSASI | 209741 | NQ | ||
113 | NASDAQ-100 STOCK INDEX (MINI) - CHICAGO TİCARET BORSASI | 209742 | |||
114 | DOW JONES UBS EXCESS RETURN - CHICAGO BOARD OF TRADE | 221602 | |||
115 | AUSTRALIAN DOLLAR - CHICAGO TİCARET BORSASI | 232741 | 6A,AUDUSD | ||
116 | RUSSELL 2000 MINI INDEX FUTURE - ICE FUTURES U.S. | 23977A | |||
117 | NIKKEI STOCK AVERAGE - CHICAGO TİCARET BORSASI | 240741 | |||
118 | NIKKEI STOCK AVERAGE YEN DENOM - CHICAGO TİCARET BORSASI | 240743 | |||
119 | E-MINI MSCI EAFE - CHICAGO TİCARET BORSASI | 244741 | |||
120 | E-MINI MSCI EMERGING MARKETS - CHICAGO TİCARET BORSASI | 244742 | |||
121 | INTEREST RATE SWAPS 10YR - CHICAGO BOARD OF TRADE | 246602 | |||
122 | INTEREST RATE SWAPS 5YR - CHICAGO BOARD OF TRADE | 247602 | |||
123 | S&P GSCI COMMODITY INDEX - CHICAGO TİCARET BORSASI | 256741 | |||
124 | SING JET KERO SWAP - NEW YORK TİCARET BORSASI | 26265D | |||
125 | E-MINI S&P 400 STOCK INDEX - CHICAGO TİCARET BORSASI | 33874A | |||
126 | GULF JET NY HEAT OIL SPR SWAP - NEW YORK TİCARET BORSASI | 86465A | x | ||
127 | SING JET KERO GASOIL SPR SWAP - NEW YORK TİCARET BORSASI | 86465C | x | ||
128 | JET CIF NWE/GASOIL FUT - NEW YORK TİCARET BORSASI | 86465D | x | ||
129 | GULF # 6 FUEL OIL CRACK SWAP - NEW YORK TİCARET BORSASI | 86565A | x | ||
130 | 3.5% FUEL OIL RDAM CRACK SPR - NEW YORK TİCARET BORSASI | 86565C | x | ||
131 | NAPTHA CRACK SPR SWAP - NEW YORK TİCARET BORSASI | 86665A | x | ||
132 | GASOIL CRACK SPR SWAP - NEW YORK TİCARET BORSASI | 86765C | x |
Tablo 3. COT raporlarında bulunan sembollerin listesi
MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal makale: https://www.mql5.com/ru/articles/34





- Ü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