
MQL5: MetaTrader5における、分析と商品先物取引員会レポートの処理
はじめに
MetaTrader5トレーディングターミナルは、オブジェクト指向に基づき、MQL5言語を含むトレーダー専用ツールの一つとして、MetaQuotesソフトウェア社により開発されました。一方で、MQL5は、旧バージョンのMQL4と互換性はありませんが、他方でオブジェクト指向 言語搭載による新しい様々な可能性を持っています。そのため、MQL4の使用に熟達したトレーダーはこの新言語を理解する必要があり、そのような方がこの記事の読者ターゲットであると考えています。
この記事では、以下の問題に対するソリューションを紹介いたします:商品先物取引委員会レポートという異なるデータの取得・分析を可能とするトレーダー用ツールの開発という問題についてです。このトピックは、すでにMeta COT Project - New Horizons for CFTC Report Analysis in MetaTrader 4という記事にて考察されています。従って、この記事の読者はすでにコンセプトにはある程度親しみがあるので、未だ詳しく紹介されていなかった点について説明していきたいと思います。
計画としては以下の通りです:中間処理・変換なしに公正取引委員会により提供されるファイルのデータの取得を可能にするインジケーターの開発です。さらに、その他の目的のために使用することができます:トレーディング戦略のエキスパートアドバイザーでの開発中に自動分析を実行するスクリプトにて、インジケーターのデータを図として描き、その他のインジケーターのデーターを作図するという目的です。
1. COTレポートの種類
3種類のレポートがあり、カレントレガシーレポート(COT)、サプリメンタルコモディティインデックス(CIT)、カレントディスアグリゲィテッドレポート(DCOT)の3つです。これらの違いは、図1に示されています。
概要 | カレントレガシーレポート | サプリメンタルコモディティインデックス | カレントディスアグリゲィテッドレポート |
---|---|---|---|
ショートネーム | COT | CIT | DCOT |
Refrence title | カレントレガシーレポート | サプリメンタルコモディティインデックス | カレントディスアグリゲィテッドレポート |
Reference to the recent data file | |||
レポートにおけるトレーダーグループ | 非商業筋商業筋報告不要 | 非商業筋商業筋報告不要インデックストレーダー | Producer/Merchant/Processor/User スワップディーラー管理通貨その他の業者報告不要 |
図1建玉明細報告の種類
先物市場でのポジションの状態を報告するトレーダーや、分類の規則、レポートの周期についての情報は"Trade Stocks and Commodities With the Insiders: Secrets of the COT Report" という本や Meta COT Project - New Horizons for CFTC Report Analysis in MetaTrader 4という記事で得ることができます。
これらの文献に記載されていない二つのレポートの紹介をしたいと思います。
CITは、2007年から発行されており、現在のCITレポートのWebページは、https://cftc.gov/dea/options/deaviewcit.htmにて閲覧することができます。インデックストレーダーは、ヘッジャーや投機家とは異なるグループに属しています。
補足 報告書 https://www.cftc.gov/MarketReports/CommitmentsofTraders/AbouttheCOTReports/index.htmにて閲覧できます。これらのインデックストレーダーは市場にてロングポジションを設定することが多く、契約ごとにそれらを変更します。
2009年から、取引委員会は、 建玉報告レポートを発行しており、詳細はこちらで確認できます。explanatory notes.
非集計型COTレポートは、プロデューサー・商人・プロセッサ・ユーザー、スワップディーラー、統制通貨、その他の業者の4つのカテゴリに分けることで、レガシーCOTレポートよりも透明性を増しました。
- プロデューサー・商人・プロセッサ・ユーザー 「プロデューサー・商人・プロセッサ・ユーザー」は主に、物質的商品を生産し、リスクの管理のために先物市場を用いる者を指します。
- スワップディーラー 「スワップディーラー」は、主にスワップを行い、その取引においてリスクを管理するため先物市場を利用する者を指します。スワップディーラーのカウンターパートとなる者は、物質的商品の取引から生じるリスクを管理する、商業的なクライアントやヘッジファンドなどの投機トレーダーです。
- 資産運用管理者 「資産運用管理者」は、登録済み商品投資顧問業者(CTA)、商品先物基金運用者(CPO)、CFTCに認識されていない非登録ファンドを指します。これらのトレーダーは、クライアントの代わりに先物取引を管理・実行に従事しています。
- その他の業者 その他の全てのトレーダーは、カテゴリーに属さず、「その他の業者」というカテゴリーに属しています。
報告済みの金融商品リストはアペンディックス2にて見ることができます。CITやDCOTレポートの固有の金融商品を示すコラムもあります。
2. CSVファイルの外部データーを使用するCOTインジケーターの作成
COTインジケーターは以下の様に稼働します。(図1に載っている内の一つ)レポートの種類、データの種類、トレーダーグループは、インジケーターの入力パラメーターにて定義されます。
データの種類は以下:
- 純ロング
- 未決済建玉での純ロングレート
- 純ロングから計算される、ウィリアムインデックス
- 建玉
データの種類におけるリストは完全ではなく、使用する重要なデータを含むようさらに拡大することもあります。現シンボルにおいて、特定のデータがデータファイルからリクエストされます。(ダウンロードや展開方法は以下に記されています)データへのアクセスとダウンロード
のためのCCFTCReport クラスを使用します。
そのインジケーターは以下の構造を持ちます。
2.1. コンソナント
コンソナントを定義するためには、列挙型データ を使用します。インジケーターにより提供されるレポートの種類は以下です。
enum cot_type_report // type of report { COT, DCOT, CIT };
トレーダーグループ:
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 };
インジケーターに使用できるデータの種類
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. クラス
一つの変数に異なるオブジェクトを格納するために、ストラクチャーとクラスを使用することができます。しかし、もしString型の動的配列や値を持っている場合、ストラクチャー型の二つの変数を割り当てることができません。そのため、COTレコードを保管するストラクチャーやデータの割り当て用メソッドを使用せず、クラスを用いました。
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; }; };
読者は、Meta COT Project - New Horizons for CFTC Report Analysis in MetaTrader 4の記事にて、CSV形式のCOTレポートに精通していると想定します。このタイプのクラスインスタンスは、COTレポートを保管するために使用します。これらクラスインスタンスの配列は、COTレコードへの便利なアクセス、ストレージのために使用されます。CCFTCレポートクラスは、データストレージ・アクセスのために開発されました。
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 クラス のインスタンスは一つのシンボルに関する全レポートを所持しており、そのレポートの種類は、COT、CIT、DCOTなどです。列挙型やクラスは"cot.mqh" インクルード ファイル内に記載されています。
2.3. 入力パラメーター
入力パラメーターは、入力 変数により定義されています。これらのパラメーターは、トレーダーのグループ、データーの種類、COTレポートの種類を特定します
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 関数
インジケーターは OnInit関数を持ち、レポートファイルからのデータのダウンロードや、入力パラメーターのチェック、インジケーターバッファーの割り当てなどの目的のために使用されます。
INDICATOR_DATA プロパティにより初期化されたバッファーはチャート上に図示されているデーターを含みます。INDICATOR_CALCULATIONSプロパティにより初期化されるバッファーは、中間計算を含みます。
SetIndexBuffer( 0, BufferData, INDICATOR_DATA ); IndicatorSetString(INDICATOR_SHORTNAME,indname); SetIndexBuffer( 1, BufferCalculations, INDICATOR_CALCULATIONS );
2.5. OnCalculate 関数
この関数は、必要なデータの選択や、要求されたデータの計算、そして図式化のために用いられます。
詳しく詳細を紹介します。呼び出しの二番目の形が用いられています。
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[]){
計算と作図のためのバーを決定しましょう。
int pos=rates_total-prev_calculated-1; if( pos >= rates_total-1 )pos--;
要素は時系列にインデックス化されなけばならないことを明記しましょう。
ArraySetAsSeries(Time, true); ArraySetAsSeries(BufferData, true); ArraySetAsSeries(BufferCalculations, true);
インジケーターバッファーに関連する全ての配列における時系列順のインデックス化を使用する方が良いことが、いくつかの実験から明らかになりました。同様に、OnCalculate 関数にパラメーターとして渡される配列に便利です。最後の要素は0のインデックスが付けられています。
計算用のループは以下の通りです。
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 配列は、COTレポートから選択される主要なデータの保管に使用されます。
BufferData配列は、チャートに図化される準備ができているデータを保持します。(ロングレート、ウィリアムインデックスなど)算出値と同様に、(純ロング、未決済建玉など)レポートの値であることもあります。良いソリューションを見つけることができていない以下のポイントを概説したいと思います。 OnCalculate関数に渡される配列は 後のレベルが必要とされ、これらの呼び出しにより渡された場合にのみ、その配列にアクセスすることができます。そのため、コードが複雑になります。
The CalcData function call:
BufferData[i] = CalcData( type_data, i, Time );
The CalcData function calls the CalcIndex function:
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関数内のTime配列にアクセスする必要があったため、呼び出し 階層に従って、データを渡さざるをえませんでした。 もし全ての8つの配列を使用する必要がある場合、コードがどのように動くかを想像してみてください。
3. データファイルをダウンロードする
全ファイルリンクは、図表1にて紹介されています。 各年ごとに個別のファイルがあり、年数がファイル名に記載されています。例えば、https://www.cftc.gov/sites/default/files/files/dea/history/deacot2010.zipのファイルは2010年のレポートを含んでいます。 https://www.cftc.gov/sites/default/files/files/dea/history/deacot2009.zip のファイルは2009年といった形です。
全てのファイルをダウンロードし、 クライアントターミナルインストールディレクトリの\MQL5\files\に展開する必要があります。それぞれの年ごとに、 XXXXが年に一致するようdeacotXXXX という名前を持つ個別ファイルを作成する必要があります。結果として、以下のフォルダーストラクチャーを所有するようになります。
図 1. レポートのフォルダー構造
データ準備のプロセスの単純化"Cotdownloader" スクリプトにより、(CFTCウェブサイトの更新情報のチェックやダウンロード、適切なフォルダーへの展開など)以下全ての処理が実行されます。(データダウンロードの)スクリプトカーネルは WININET_TEST スクリプトに基づきます。The Price Histogram (Market Profile) and its implementation in MQL5(MQL5における価格ヒストグラムとその実行) という記事にて記載されているCProgressBar クラスを使用しました。外部のアプリケーションはWindows APIを使用し実行され、Automated Optimization of a Trading Robot in Real Trading(トレーディングシステムの自動最適化) という記事
にて紹介されています。
スクリプトの使用を簡単に:チャートに貼り付けるだけにチャート上のプログレスバーに、また、Expertタブ上にテキストメッセージという形で、データのダウンロードに関しての情報を報告します。
図 2. データダウンロードプロセス
4. 使用例
インジケーターを稼働するために、選択したシンボルのチャートに貼り付け、入力パラメーターを明記する必要があります。
図 3 COTインジケーターの入力パラメタ
変数名や列挙型変数の代わりにわかりやすい表示を使用するよう注意しましょう。以下のように実行されます:変数名の変更のために、入力パラメーターの宣言時にコメントを記載する必要があります。
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
変数値においても同様ですー列挙値を宣言する際、コメントにて詳細を記載する必要があります。
enum cot_type_data // types of data { netlongs, // Net longs netlongsrate, // Net longs rate in open interest willams_index, // Williams Index openinterest // Open Interest };
もし入力パラメーターが正しく明記され、ファイルがダウンロードされ、展開された場合、インジケーターが個別のウィンドウに表示されます。
図. 4 COTインジケーター
エラー時は、「Toolbox」ウィンドウの「Experts」タブに表示されます。
図 5 エラーメッセージ
5. ノートの解放
インジケーターは、完全に完成した製品としては位置付けられていません。いかに結果を取得できるかを示し、簡単なコードをさらに使用する例です。例えば、特定の証言業者の提供するクライアントターミナルの設定に応じたCOTレポートのデータ種類をカスタマイズを行うモジュールを開発していません。この機能は、DefineIdSymbol 関数内にて実行されます。始めの二行はこちらです:
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
もしレポートのシンボルを、クライアントターミナルのシンボルに割り当てる必要がある場合、手動にてこのコードを変更する必要があります。BrocoTrader4ターミナルの設定を使用しました。この記事では、Metaquotes-Demo、Alpari-Demoサーバーにて開設されたdemo-accountsを使用しました。DCOTレポートでは、二つの金融商品のみ提供されています:XAUUSD(金)、XAGUSD(銀)の二つです。
現在、CITレポートは提供されていません。なぜなら、これらのサーバーには有価証券がないためです。これらが提供された際には、コメントを消し、コードを数行修正するのみで対応することができます。
6. iCustomによるCOTインジケーターの使用方法
図3に示される形式ではインジケーターを使用しません。MQL5言語は、 iCustom関数を使用し、カスタムインジケーターの再利用への可能性を秘めています。
6.1. 新規インジケーターの作成
様々なCOTレポートの視覚分析方法があります。様々なトレーダー グループ
のポジションを示すヒストグラムがその内の一つです。
以下のタスクを考えてみましょう。 (COTレポートの商業筋、飛商業筋など)異なるトレーダーグループのポジションを図示するCOTインジケーターの作成についてです。ユーザーは以下のデータ種類を選択する必要があります。: 純ロング、純ロングレート、ウィリアムインデックスなどです。
そのプロセスはMQL5ウィザードにより単純化されます。MQL5:あなたのインジケーターを作成しようという記事にて紹介されています。結果、インジケーターのコードは以下のようになります(描画方法はMQL5ウィザードにて作成されています。):
#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 buffers入力変数、グローバル変数、クラスライブラリをインクルードする前処理プログラムは以下です。
#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 関数は以下です:
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); }それでは、(非商業筋のトレーダーの例にて)カスタムインジケーターの使用方法を紹介します。iCustom関数をはじめに呼び出したのち、(レポートに必要な)以下の変数が関数に渡されます。
- NULL – クライアントターミナル内の現シンボル
- 0 – 現タイムフレーム
- 「cot」– カスタムインジケーターのファイル名(拡張子なしで明記されています。)
- td = 商業筋(必要なトレーダーグループ)
- type_data = インジケーターの種類、入力パラメタにて明記されています。
- tr = COT – レポートの種類
結果、インジケーターのデータを取得するためにさらに使用できるハンドラを持つことができます。
インジケーターからのデータの取得は、 OnCalculate関数にて実行されます。: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);
少ない時間で、短いコードを記述し、結果を得ることができました。
図 6 コンテントインジケーター
6.2. iCustomはスクリプトにおいても使用できます。
以下のタスクを紹介いたします。 統計的予測を計算するcotsignals スクリプト の作成です。
COTレポートの異なるデーターを使用し得ることのできる統計による利点をチェックしましょう。最も簡単な方法は、ろうそく足の週ごとの色の正しい決定の可能性を予測することです。以下の仮説を見てみましょう:- 非商業筋のトレーダーの純ロングのサインは、ろうそく足の色と同じです。もしプラスであれば、週のトレンドは好調であり、もしマイナスであれば低調です。
- (白/黒の)ろうそく足の色は、非商業筋トレーダーの純ロングが上昇するか、下降かに一致しています。
- 非商業筋のロングから計算されるウィリアムインデックス値に応じて、ろうそく足が黒か白に決まります。もし(75%以上の)過剰買いの状態であれば、色は黒にあり、もし(25以下の)売り過ぎの状態であれば、色は白になります。
COTレポートのデータを使用します。これらの例を使用し、COTデータ解析のメソッドを作り、利用することができます。3年分に値する150週の履歴バーをチェックします。スクリプトを書く前に、必要なデータ型とクラスを定義する必要があります。
統計の種類の列挙型:
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 };
To get the statistics for the specified symbol, let's create special class:
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メソッドにより返されます。どのような仕組みか紹介いたしますまず、必要な配列にカスタムインジケーターを使用しデーターが格納されます。非商業筋のトレーダーの純ロング値とウィリアムインデックス値が必要です。:
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
(週のろうそく足の色の予測可能性という一つの変数のみの計算です)統計的計算のコードは以下です:
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関数は、インジケーターからのデータ取得のため複数のチェックを行う必要があるので、とても複雑です。そのため、詳しい内容を見ていきます。
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 );
最後の行では、バッファーからデータを取得するカスタムインジケーターのハンドラを取得します。
インジケーターの作成が成功されたか確認する必要があります。
if( cothandle == INVALID_HANDLE ){ Print("Error in indicator creation for symbol ", symbol ); return(false); }
必要な履歴データのチェック:
int n = BarsSinh( symbol, timeframe ); if( n < nbars ) {
十分な履歴データがない場合はダウンロードしてください。
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と(履歴をダウンロードする)ChekLoadHistory関数は MQL5リファレンスのスクリプト コードに基づいています。
インジケーターバッファーのデータを使用する前に、データが準備されているかをチェックする必要があります。というのも、ハンドルの存在は、計算が完了したことを意味しないためです。
次の呼び出しは、その確認を行い、計算が終わるまで待ちます。
if( !WaitForCalculcateIndicator( cothandle ) ){ Print("Timeout for the COT indicator calculation"); return(false); }
データの準備が完了しました、それらのコピーを行います。
int res = CopyBuffer(cothandle, 0, 0, nbars, loadto );
次にデータのコピーが成功したかを確認します。
if( res != nbars ){ Print("Error in obtaining the data, ", MyErrorDescription(_LastError) ); return(false); }
最後の作業:
return(true);
データを取得し、関数パラメタにより渡された配列に返します。
統計結果は、CSVファイルに記載され、CCOTOutFileクラスが開発されます。
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); } };
出力データを持つファイルを作成し、.csv形式で文字列を記述し、ヘッダーを作成後、クラスインスタンスの削除の間ファイルを閉じます。
このスクリプトのコードは、すべてに必要なライブ来が記述されているため、短くなります。
入力パラメーターと内蔵されるライブラリ:
input int NBars =150; //History depth W1 #include <common.mqh> #include <cot.mqh>
分析のためのシンボルリスト:
string listsymbols[] = {"EURUSD", "GBPUSD", "USDCHF", "USDCAD", "USDJPY", "AUDUSD", "XAUUSD"};
オブジェクト初期化
void OnStart() { CCOTOutFile outfile; //file with results if( !outfile.Init("cotw1signals.csv") )return;
計算のための統計リスト
cot_type_statistics list_statistic[]= // statistic types list
{ speculantsign, speculantchange, willamszones };
Writing CSV file header:
outfile.PutHeader( list_statistic ); //writing CSV file header
メインループにて、個々のシンボル、シグナルの統計を取り、ファイルに結果を記述します;
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."); }
スクリプトは、Alpari-Demoサーバーでテストされました。もしMetaQuotes-Demoサーバー上で稼働させる場合、「Error in statics calculation for XAUUSED symbol」というメッセージを出力します。というのも、未だシンボルが利用できないからです。
スクリプトの実行結果として、以下のようなファイルを取得します。
より明確にするため、Excelを開け、平均値を計算し、確率のヒストグラムを作成してください。
図 8 確率の予想
予想結果は、すべてのシンボルにおいて同様です。異なるシンボルにおける正しい予想確率の平均値は:
- 0.54 – 非商業筋トレーダーサイン
- 0.50 – 非商業筋トレーダーの純ロングの取引高の変化
- 0.48 – ウィリアムインデックスの過剰買い/過剰売りの領域
ご覧の通り、非商業筋トレーダーの純ロングにおける最高の予想結果を得ることができました。最悪な結果は、ウィリアムインデックス値内にあるものです。0.48の値が意味することは、たとえウィリアムインデックスが過剰買い状態であっても、白ろうそくの確率は、0.52に等しく、もし過剰売り状態であれば黒であるということです。なので、ウィリアムで示される形での使用は合理的ではありません。おそらく、結果は、より大きいタイムフレーム(一月、もしくはそれ以上)を使用することで向上させることができます。COTレポートとデモサーバーにて使用可能なシンボルをすべて使用しました。
結論
MQL5は、トレーディングシステムの開発に欠かせない一連のタスク群をプログラム可能にするツールです。
- 外部データ取得に使用される、複雑なアルゴリズムを持つインジケータ:
- その他のインジケータ、スクリプト、エキスパートアドバイザーでの再利用:
- 統計的、量的分析のアルゴリズムの実行:
利点:
- オブジェクト指向プログラミングはデバッギングにかかる時間を大いに省きます。
- デバッガー
- MQL4からMQL5への容易な移行が可能です。
- 使用が容易であれば、オブジェクト指向モデルの実行が成功します。
- ドキュメンテーションがうまくまとめられています。
- Windows API との統合がプラットフォームを拡大し、例えば、インターネットページを扱うことができるようになります。
欠点:
主なトラブルは履歴データーへのアクセスです
- (MQL4のTime[], Open[], Close[] などの)時系列へのアクセスのための関数がない点
- データへアクセスする際、複数のチェックを行う必要があり、詳しい仕組みを理解する必要がある点
デバッガーがあるが、多くの便利な機能を持っておら図、インジケーターのデバッギングがなく、配列やクラスなど複雑なオブジェクトのチェックが不可能である点利点と欠点のリストは完全ではなく、この記事の執筆中に思いついたことのみを記載しています。
アペンディクス 1. ファイルリスト
すべてのファイルは、クライアントターミナルフォルダーに保管されています。sorces.zipからファイルをクライアントターミナルフォルダーに展開してください。
№ | ファイル名 | 概要 |
---|---|---|
1 | MQL5\Files\unzip.exe | .zipファイルの展開のためのWindowsアプリケーション |
2 | MQL5\Include\Cdownloader.mqh | インターネットからCFTCアーカイブをダウンロードするクラス |
3 | MQL5\Include\ClassProgressBar.mqh | チャート上にてダウンロード実行状況を示すCProgressBarクラス |
4 | MQL5\Include\common.mqh | すべてのインジケーターやスクリプトで使用される共通の関数やコンソナント |
5 | MQL5\Include\cot.mqh | COTレポートからデータを選択するCCFTCReportクラス |
6 | MQL5\Include\ErrorDescription.mqh | エラー記述ライブラリ |
7 | MQL5\Indicators\cot.mq5 | 基盤インジケーターcot |
8 | MQL5\Indicators\cotnet.mq5 | インジケーターcotnet、カスタムインジケーターのcot.mq5の使用例 |
9 | MQL5\Scripts\cotdownloader.mq5 | インターネットからアーカイブファイルをダウンロードする、cotdownloaderスクリプト |
10 | MQL5\Scripts\cotsignals.mq5 | cotsignalsスクリプト、COTレポートの統計結果例 |
Table 2. ファイルリスト
アペンディクス 2 COTレポートのシンボルリスト
№ | シンボル名 | 取引上のID | クライアントターミナル上のID | CITのプレゼント | DCOTのプレゼント |
---|---|---|---|---|---|
1 | WHEAT - CHICAGO BOARD OF TRADE | 001602 | ZW | x | x |
2 | WHEAT - KANSAS CITY BOARD OF TRADE | 001612 | x | x | |
3 | WHEAT - MINNEAPOLIS GRAIN EXCHANGE | 001626 | x | ||
4 | CORN - CHICAGO BOARD OF TRADE | 002602 | ZC | x | x |
5 | OATS - CHICAGO BOARD OF TRADE | 004603 | ZO | x | |
6 | SOYBEANS - CHICAGO BOARD OF TRADE | 005602 | ZS | x | x |
7 | MINI SOYBEANS - CHICAGO BOARD OF TRADE | 005603 | x | ||
8 | SULFUR FINANCIAL INSTRUMENT - CHICAGO CLIMATE FUTURES EXCHANGE | 006261 | x | ||
9 | CARBON FINANCIAL INSTRUMENT - CHICAGO CLIMATE FUTURES EXCHANGE | 006268 | x | ||
10 | RGGI CO2 ALLOWANCE 2009 - CHICAGO CLIMATE FUTURES EXCHANGE | 00626U | x | ||
11 | SOYBEAN OIL - CHICAGO BOARD OF TRADE | 007601 | ZL | x | x |
12 | U.S. TREASURY BONDS - CHICAGO BOARD OF TRADE | 020601 | ZB | ||
13 | LONG-TERM U.S. TREASURY BONDS - CHICAGO BOARD OF TRADE | 020604 | |||
14 | GULF # 6 FUEL 3.0% SULFUR SWAP - NEW YORK MERCANTILE EXCHANGE | 02165A | x | ||
15 | NY RES FUEL 1.0% SULFUR SWAP - NEW YORK MERCANTILE EXCHANGE | 02165B | x | ||
16 | EUR 1% FUEL OIL NWE CAL SWAP - NEW YORK MERCANTILE EXCHANGE | 02165C | x | ||
17 | EUR 3.5% FUEL OIL RTD CAL SWAP - NEW YORK MERCANTILE EXCHANGE | 02165E | x | ||
18 | SING FUEL OIL 180 CAL SWAP - NEW YORK MERCANTILE EXCHANGE | 02165G | x | ||
19 | EAST WEST FUEL OIL SPR SWAP - NEW YORK MERCANTILE EXCHANGE | 02165I | x | ||
20 | NY 1% V GULF 3% FUEL OIL SPR - NEW YORK MERCANTILE EXCHANGE | 02165T | x | ||
21 | NO. 2 HEATING OIL | 022651 | x | ||
22 | SING GASOIL SWAP - NEW YORK MERCANTILE EXCHANGE | 02265J | x | ||
23 | SING GASOIL/RDAM GASOIL SWAP - NEW YORK MERCANTILE EXCHANGE | 02265T | x | ||
24 | NYMEX HEATING OIL/RDAM GASOIL - NEW YORK MERCANTILE EXCHANGE | 02265U | x | ||
25 | GASOIL (ICE) SWAP - NEW YORK MERCANTILE EXCHANGE | 02265V | x | ||
26 | UP DOWN GC ULSD VS HO SPR SWAP - NEW YORK MERCANTILE EXCHANGE | 022A13 | x | ||
27 | SING GASOIL BALMO SWAP - NEW YORK MERCANTILE EXCHANGE | 022A22 | x | ||
28 | NATURAL GAS ICE HENRY HUB - ICE OTC | 023391 | x | ||
29 | NATURAL GAS - NEW YORK MERCANTILE EXCHANGE | 023651 | QG | x | |
30 | MICHCON BASIS SWAP - NEW YORK MERCANTILE EXCHANGE | 02365A | x | ||
31 | M-3 BASIS SWAP - NEW YORK MERCANTILE EXCHANGE | 02365C | x | ||
32 | TCO BASIS SWAP - NEW YORK MERCANTILE EXCHANGE | 02365D | |||
33 | NGPL TEXOK BASIS SWAP - NEW YORK MERCANTILE EXCHANGE | 02365G | x | ||
34 | NGPL MIDCON BASIS SWAP - NEW YORK MERCANTILE EXCHANGE | 02365K | x | ||
35 | WAHA BASIS SWAP - NEW YORK MERCANTILE EXCHANGE | 02365O | x | ||
36 | HOUSTON SHIP CH INDEX SWAP - NEW YORK MERCANTILE EXCHANGE | 023A10 | x | ||
37 | CBT ETHANOL - CHICAGO BOARD OF TRADE | 025601 | x | ||
38 | CHICAGO ETHANOL SWAP - NEW YORK MERCANTILE EXCHANGE | 025651 | x | ||
39 | SOYBEAN MEAL - CHICAGO BOARD OF TRADE | 026603 | ZM | x | |
40 | JAPAN C&F NAPTHA SWAP - NEW YORK MERCANTILE EXCHANGE | 03265C | x | ||
41 | COTTON NO. 2 - ICE FUTURES U.S. | 033661 | CT | x | x |
42 | HENRY HUB BASIS SWAP - NEW YORK MERCANTILE EXCHANGE | 035652 | x | ||
43 | HOUSTON SHIP CH BASIS SWAP - NEW YORK MERCANTILE EXCHANGE | 035653 | x | ||
44 | NW PIPE ROCKIES BASIS SWAP - NEW YORK MERCANTILE EXCHANGE | 035654 | x | ||
45 | PANHANDLE BASIS SWAP - NEW YORK MERCANTILE EXCHANGE | 035655 | x | ||
46 | HENRY HUB SWAP - NEW YORK MERCANTILE EXCHANGE | 03565B | |||
47 | HENRY HUB PENULTIMATE GAS SWAP - NEW YORK MERCANTILE EXCHANGE | 03565C | x | ||
48 | ROUGH RICE - CHICAGO BOARD OF TRADE | 039601 | ZR | x | |
49 | FRZN CONCENTRATED ORANGE JUICE - ICE FUTURES U.S. | 040701 | JO | x | |
50 | 2-YEAR U.S. TREASURY NOTES - CHICAGO BOARD OF TRADE | 042601 | |||
51 | 10-YEAR U.S. TREASURY NOTES - CHICAGO BOARD OF TRADE | 043602 | ZN | ||
52 | 5-YEAR U.S. TREASURY NOTES - CHICAGO BOARD OF TRADE | 044601 | |||
53 | 30-DAY FEDERAL FUNDS - CHICAGO BOARD OF TRADE | 045601 | ZQ | ||
54 | MILK Class III - CHICAGO MERCANTILE EXCHANGE | 052641 | x | ||
55 | LEAN HOGS - CHICAGO MERCANTILE EXCHANGE | 054642 | HE | x | x |
56 | LIVE CATTLE - CHICAGO MERCANTILE EXCHANGE | 057642 | LC | x | x |
57 | RANDOM LENGTH LUMBER - CHICAGO MERCANTILE EXCHANGE | 058643 | LB | x | |
58 | FEEDER CATTLE - CHICAGO MERCANTILE EXCHANGE | 061641 | FC | x | x |
59 | PJM ELECTRICITY MONTHLY - NEW YORK MERCANTILE EXCHANGE | 064657 | x | ||
60 | ISO NEW ENGLAND LMP SWAP - NEW YORK MERCANTILE EXCHANGE | 06465H | x | ||
61 | PJM CAL MONTH OFF PK LMP SWAP - NEW YORK MERCANTILE EXCHANGE | 06465M | x | ||
62 | ISO NEW ENG OFF PK LMP SWAP - NEW YORK MERCANTILE EXCHANGE | 06465S | x | ||
63 | CINERGY CAL MONTH LMP SWAP - NEW YORK MERCANTILE EXCHANGE | 064A01 | x | ||
64 | CINERGY OFF PEAK LMP SWAP - NEW YORK MERCANTILE EXCHANGE | 064A02 | |||
65 | PJM N ILL PEAK DAY AHEAD - NEW YORK MERCANTILE EXCHANGE | 064A34 | x | ||
66 | PJM JCPL PEAK DAY AHEAD - NEW YORK MERCANTILE EXCHANGE | 064A48 | x | ||
67 | PJM PEPCO PEAK DAY AHEAD - NEW YORK MERCANTILE EXCHANGE | 064A50 | x | ||
68 | PJM PSEG PEAK DAY AHEAD - NEW YORK MERCANTILE EXCHANGE | 064A54 | x | ||
69 | PJM WESTERN PEAK DAY AHEAD - NEW YORK MERCANTILE EXCHANGE | 064A56 | |||
70 | PJM WESTERN PEAK REAL TIME - NEW YORK MERCANTILE EXCHANGE | 064A58 | x | ||
71 | PJM WESTERN OFF PEAK REAL TIME - NEW YORK MERCANTILE EXCHANGE | 064A59 | x | ||
72 | ISO NEW ENG INT HUB PEAK SWAP - NEW YORK MERCANTILE EXCHANGE | 064A60 | x | ||
73 | MW IND TRANS PEAK SWAP - NEW YORK MERCANTILE EXCHANGE | 064A62 | x | ||
74 | NYISO ZONE 5 MW PEAK SWAP - NEW YORK MERCANTILE EXCHANGE | 064A66 | |||
75 | ISO NEW ENG HUB OFF PEAK SWAP - NEW YORK MERCANTILE EXCHANGE | 064A78 | |||
76 | MT BELVIEU PROPANE 5 DEC SWAP - NEW YORK MERCANTILE EXCHANGE | 06665O | |||
77 | MT BELVIEU ETHANE 5 DEC SWAP - NEW YORK MERCANTILE EXCHANGE | 06665P | x | ||
78 | MT BELV NORM BUTANE 5 DEC SWAP - NEW YORK MERCANTILE EXCHANGE | 06665Q | x | ||
79 | MT BELV NAT GASOLINE 5 DEC SWP - NEW YORK MERCANTILE EXCHANGE | 06665R | x | ||
80 | CRUDE OIL LIGHT SWEET - ICE FUTURES EUROPE LIGHT SWEET - ICE FUTURES EUROPE | 067411 | x | ||
81 | CRUDE OIL, LIGHT SWEET - NEW YORK MERCANTILE EXCHANGE | 067651 | QM | x | |
82 | WTI CRUDE OIL CALENDAR SWAP - NEW YORK MERCANTILE EXCHANGE | 06765A | x | ||
83 | DUBAI CRUDE OIL CALENDAR SWAP - NEW YORK MERCANTILE EXCHANGE | 06765G | x | ||
84 | WTI CRUDE OIL FINANCIAL - NEW YORK MERCANTILE EXCHANGE | 06765I | x | ||
85 | BRENT FINANCIAL - NEW YORK MERCANTILE EXCHANGE | 06765J | x | ||
86 | BRENT (ICE) CALENDAR SWAP - NEW YORK MERCANTILE EXCHANGE | 06765N | x | ||
87 | BRENT-DUBAI SWAP - NEW YORK MERCANTILE EXCHANGE | 06765O | x | ||
88 | COCOA - ICE FUTURES U.S. | 073732 | CC | x | x |
89 | PALLADIUM - NEW YORK MERCANTILE EXCHANGE | 075651 | PA | x | |
90 | PLATINUM - NEW YORK MERCANTILE EXCHANGE | 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 MERCANTILE EXCHANGE | 089741 | USDRUB,USDRUR | ||
97 | CANADIAN DOLLAR - CHICAGO MERCANTILE EXCHANGE | 090741 | 6C,USDCAD | ||
98 | SWISS FRANC - CHICAGO MERCANTILE EXCHANGE | 092741 | 6S,USDCHF | ||
99 | MEXICAN PESO - CHICAGO MERCANTILE EXCHANGE | 095741 | |||
100 | BRITISH POUND STERLING - CHICAGO MERCANTILE EXCHANGE | 096742 | 6B,GBPUSD | ||
101 | JAPANESE YEN - CHICAGO MERCANTILE EXCHANGE | 097741 | 6J,USDJPY | ||
102 | U.S. DOLLAR INDEX - ICE FUTURES U.S. | 098662 | DX | ||
103 | EURO FX - CHICAGO MERCANTILE EXCHANGE | 099741 | 6E,EURUSD | ||
104 | GASOLINE BLENDSTOCK (RBOB) - NEW YORK MERCANTILE EXCHANGE | 111659 | XRB | x | |
105 | RBOB CALENDAR SWAP - NEW YORK MERCANTILE EXCHANGE | 11165K | x | ||
106 | NEW ZEALAND DOLLAR - CHICAGO MERCANTILE EXCHANGE | 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 MERCANTILE EXCHANGE | 132741 | |||
110 | S&P 500 STOCK INDEX - CHICAGO MERCANTILE EXCHANGE | 138741 | |||
111 | E-MINI S&P 500 STOCK INDEX - CHICAGO MERCANTILE EXCHANGE | 13874A | ES,SPX | ||
112 | NASDAQ-100 STOCK INDEX - CHICAGO MERCANTILE EXCHANGE | 209741 | NQ | ||
113 | NASDAQ-100 STOCK INDEX (MINI) - CHICAGO MERCANTILE EXCHANGE | 209742 | |||
114 | DOW JONES UBS EXCESS RETURN - CHICAGO BOARD OF TRADE | 221602 | |||
115 | AUSTRALIAN DOLLAR - CHICAGO MERCANTILE EXCHANGE | 232741 | 6A,AUDUSD | ||
116 | RUSSELL 2000 MINI INDEX FUTURE - ICE FUTURES U.S. | 23977A | |||
117 | NIKKEI STOCK AVERAGE - CHICAGO MERCANTILE EXCHANGE | 240741 | |||
118 | NIKKEI STOCK AVERAGE YEN DENOM - CHICAGO MERCANTILE EXCHANGE | 240743 | |||
119 | E-MINI MSCI EAFE - CHICAGO MERCANTILE EXCHANGE | 244741 | |||
120 | E-MINI MSCI EMERGING MARKETS - CHICAGO MERCANTILE EXCHANGE | 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 MERCANTILE EXCHANGE | 256741 | |||
124 | SING JET KERO SWAP - NEW YORK MERCANTILE EXCHANGE | 26265D | |||
125 | E-MINI S&P 400 STOCK INDEX - CHICAGO MERCANTILE EXCHANGE | 33874A | |||
126 | GULF JET NY HEAT OIL SPR SWAP - NEW YORK MERCANTILE EXCHANGE | 86465A | x | ||
127 | SING JET KERO GASOIL SPR SWAP - NEW YORK MERCANTILE EXCHANGE | 86465C | x | ||
128 | JET CIF NWE/GASOIL FUT - NEW YORK MERCANTILE EXCHANGE | 86465D | x | ||
129 | GULF # 6 FUEL OIL CRACK SWAP - NEW YORK MERCANTILE EXCHANGE | 86565A | x | ||
130 | 3.5% FUEL OIL RDAM CRACK SPR - NEW YORK MERCANTILE EXCHANGE | 86565C | x | ||
131 | NAPTHA CRACK SPR SWAP - NEW YORK MERCANTILE EXCHANGE | 86665A | x | ||
132 | GASOIL CRACK SPR SWAP - NEW YORK MERCANTILE EXCHANGE | 86765C | x |
Table 3. COTレポートにおけるシンボル一覧
MetaQuotes Ltdによってロシア語から翻訳されました。
元の記事: https://www.mql5.com/ru/articles/34





- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索