|
META-DELTA(メタデルタ) 1.2
メタトレーダー 4 ブリッジ
メタトレーダー4 ブリッジ の特徴:
- デルタストックでメタトレーダー・ストラテジー(Expert Advisors)を実行できます
- デルタストックとの取引にMQL4 スクリプトを使用できます
- デルタストックとの取引にメタトレーダーを使用できます
デルタトレーディングで"Expert Advisors"を動かしたいという多数のMT4ユーザーの声を反映し、MT4(メタトレーダー)とデルタトレーディングを繋ぐ「ブリッジ」を用意しました。トレーダーはMT4で"Expert Advisors"を実行します。MT4で実行された注文は、メタデルタを通じて、デルタトレーディングでも実行されます。ポジションは、MT4とデルタトレーディングアカウントの両方に残ります。
前提条件:
パッケージのインストール方法
| 1. |
もし、メタトレーダー・ターミナルが実行中の場合は停止して下さい。 |
| 2. |
MetaDelta1.2.zipを こちらからダウンロード し、ファイルを解凍して下さい。 |
| 3. |
解凍したファイル setup.exe を実行しセットアップを開始して下さい。 もし複数のメタトレーダー・ターミナルがインストールされていれば、インストールしたターミナルがあるディレクトリを指定し、選択して下さい。 例) C:¥Program Files¥Other Company Meta Trader 4
 |
| 4. |
メタトレーダーを再起動して下さい |
使用前に
| 1. |
"EditInstruments.exe"プログラムを実行して下さい。アイコンがデスクトップ画面にあるか、もしくはディレクトリ <terminal_dir>/MetaDelta を参照して下さい。
a) まず最初にすべきことは、META-DELTA(メタデルタ)に繋ぐデルタストック口座番号を入力することです。デルタトレーディングのメイン画面のタイトルバー部分にご自身の口座番号を見つけることが出来ます(但し、オプションで"Show user ID and name on title bar"が"Yes"になっている場合のみ)。
b)次に、取引する銘柄/通貨ペアのシンボルをリストに追加します。これは、同じ証券銘柄について、証券会社(ブローカー)間での表記が異なっている場合に必要になります。例えば、モトローラ社のCFDシンボルは、デルタストックでは「MOT」ですが、他社では「Motorola」や「#MT」と表記されています。6つの主要通貨ペアにつきましてはデフォルトで次のようにセットされています。
EUR/USD, GBP/USD, AUD/USD, USD/JPY, USD/CHF, USD/CAD
 |
| 2. |
それから、 DeltaTrading.exe を実行し、ログインして下さい。なお、はじめにMETA-DELTA(メタデルタ)が デルタトレーディング・デモ口座 と連動してどのように動くのかをよく理解しておくことを強くお勧めします。 |
| 3. |
ご自身のメタトレーダー・デモアカウントにログインして下さい(迅速な注文実行やスリッページ回避のため、メタトレーダーのデモアカウントを使用されることをお勧めします)。 |
| 4. |
MT4メニューから、「ツール」→「オプション」を選び、「Expert Advisors」タグを選択して下さい。そして、「Allow DLL imports」にチェックを入れて下さい。なお「Confirm DLL function calls」のチェックは外しておいて下さい。

|
| 5. |
「Navigator(ナビゲーター)」パネルから「Scripts」フォルダを開き、任意のチャートに「META-DELTA」スクリプトを設置して下さい(スクリプト名にカーソルを合わせ、右クリックでメニューを開き、「Execute on Chart」を選択します)。すると、チャートの左上に、スクリプトが作動していることを示す黄色いメッセージが表示されます。
スクリプトは、チャートに設置するだけでなく、「EditInstruments.exe」からすべての銘柄/通貨ペアに対して実行することが出来ます。「Experts」フォルダでは、デルタストックへ送信された注文履歴を見ることが出来ます。

この META-DELTA(メタデルタ) スクリプトは、1つのチャートにのみ設置できます!
|
| 6. |
「Navigator(ナビゲーター)」パネルから「Custom Indicators」フォルダを開き、「Positions」インディケーターをMETA-DELTA(メタデルタ)を設置したのと同じチャートに設置して下さい。このインディケーターは、デルタストックとメタトレーダーで選択された銘柄/通貨ペアの運用収益を表示します。

|
| 7. |
これでメタトレーダーで取引し、さらにストラテジーを動かす準備が出来ました。すべての注文がデルタトレーディングに送られ、デルタストックで注文が実行されます。ストップオーダーとリミットオーダーは、デルタストックに送られません。まず、メタトレーダーで実行され、それからデルタストックで実行されます。
メタデルタのブリッジ機能は、事前にEditInstruments.exeで定義された銘柄/通貨ペアのみ取引可能です!
|
| 8. |
もし、デルタストックとメタトレーダーで異なるポジションを保有している場合は、最初にスクリプトを起動させたときに調整されます。例:
| MetaTrader(メタトレーダー) | Deltastock(デルタストック) |
EUR/USD 買い 0,07 ロット*
EUR/USD 売り 0,01 ロット |
EUR/USD 2000 ユニット(通貨単位)
|
META-DELTA(メタデルタ)は、デルタストックに「買い 4000 EUR/USD」という注文を出すので、メタトレーダーのポジションは、 0,07 - 0,01 = 0,06 ロット × 100 000 = 6000 ユニット(通貨単位) デルタストックでは、2000 4000 = 6000 ユニット(通貨単位) となります。 ____ *メタトレーダーの1ロットは100,000通貨単位になります。
|
Meta-Delta(メタデルタ) はどのように動きますか?
パッケージ内容:
- The DLL delta.dll - メタトレーダーとデルタトレーディングを繋ぎます。
- MQL4 スクリプト - META-DELTA.mq4 は、「Navigator(ナビゲーター)」パネルから「Scripts」フォルダを開いて見つけることが出来ます。このスクリプトは、一度チャートに設置すると、常にポジション情報を計算します。メタトレーダーとデルタストックのポジションが異なった場合、注文を送って調整を行います。
取引しようとする銘柄/通貨ペアは、予めEditInstruments.exe(デスクトップ画面上、または<terminal_dir>/MetaDelta ディレクトリを参照)から定義しておく必要があります。
デルタストックと取引するためのスクリプト
この章では、プログラマのような、MQL4スクリプトでのプログラミング経験のあるメタトレーダーユーザー向けにご説明させていただきます。
MQL4 スクリプトから直接デルタストックAPIを使うことは出来ません。なぜなら、スクリプトはActiveX コンポーネントを使用することが出来ず、外部のDLLライブラリを使用することが出来るだけだからです。
このことにより、我々はMQL4 スクリプトでデルタストックAPIの機能を使用することが出来るようDLL (delta.dll)を作成しました。 「delta.dll」は、<terminal_dir> か、<WINDIR>¥system32 に置いて下さい。なお、DLLファイルは自動的に<terminal_dir>にインストールされますので確認して下さい。
DELTA_Samples.mq4で、どのような機能が利用できるのかというサンプルを参照可能です。
メタトレーダー・スクリプトで使用できる機能について
すべての機能が「DELTA_」で始まり、<terminal_dir/experts/include>内にてmetadelta.mqhで宣言されます。
エラーの場合や0の時は、すべての機能が0を返します。
-500から-1の値はデルタストックAPIエラーになります(デルタストックAPI エラー詳細テーブルで参照できます)。-500より小さい値は OLEエラーとなります。最終的に値が0以上になれば、それは例外番号になります。
全ての機能は、APIが取引するデルタストック口座番号を最初のパラメータとして取得します。これは、デルタトレーディングが複数のAPIを同時に動かすことができるため、この数字が必要になるからです。
DLL機能を使用するために、スクリプトの冒頭でmetadelta.mqhを含める必要があります。記述は下記の通りです(DELTA_Samples.mq4のソースコードを参考にしてください)。 #include <metadelta.mqh>
メタトレーダー・スクリプトでAPI機能を使う場合は、まず「DELTA_Init(AccNumber)」を呼び出してください。そして、スクリプトの終わりで「DELTA_Uninit()」を呼び出す必要があります。 但し、「Expert Advisor」の場合は、これらの処理は不要です。
下記で機能の詳細についてご説明致します。
DELTA_Init()
int DELTA_Init(string DS_AccNumber)
APIの初期化を行います。
パラメータ:
DS_AccNumber - APIが取引するデルタストックの取引口座番号
Meta Trader script:まず「DELTA_Init(AccNumber)」を呼び出してください。そして、スクリプトの終わりで「DELTA_Uninit()」を呼び出す必要があります。
Expert Advisor: 「DELTA_Init(AccNumber)」や「DELTA_Uninit()」を呼び出す必要はありません。 | |
DELTA_UnInit()
int DELTA_UnInit()
デルタストックAPIで使用されたリソースを解放します。
*メタトレーダースクリプト: - まず「DELTA_Init(AccNumber)」を呼び出してください。そして、スクリプトの終わりで「DELTA_Uninit()」を呼び出す必要があります。
*Expert Advisors: 「DELTA_Init(AccNumber)」や「DELTA_Uninit()」を呼び出す必要はありません。 | |
 DELTA_NewOrder
int DELTA_NewOrder(string DS_AccNumber,string Instrument,
int ordCount,
double ordPriceReq1, double ordPriceReq2,
int ordType, stringordBuySell, string ordValidity,
int & OrderID[] );
注文を作成します
パラメータ:
| DS_AccNumber |
APIが取引するデルタストックの取引口座番号(例 "000142775") |
| Instrument |
デルタトレーディングの取引シンボル(例: EUR/USD) |
| ordCount |
通貨単位 (ロット数ではありません). 1000で割り切れる必要があります。
|
| ordPriceReq1 |
注文価格 |
| ordPriceReq2 |
セカンドプライス (OCO 注文用) |
| ordType |
注文タイプ: 1 – マーケットオーダー(成行注文), 2 – リミットオーダー, 3 – ストップオーダー, 4 – OCO注文 これらは metadelta.mqh で下記のように定義されます: int DELTA_MARKET = 1; int DELTA_LIMIT = 2; int DELTA_STOP = 3; int DELTA_OCO = 4; |
| ordBuySell |
買い(Buy) – "B" もしくは 売り(sell) – "S" |
| ordValidity |
当日のみ有効 – "1" / キャンセルされるまで有効 – "2" |
| ordID |
もし注文が実行されれば注文ID |
Result: OKもしくは0以外でなければ「0」を返します。
|
|
DELTA_GetOrderStatus
int DELTA_GetOrderStatus( string DS_AccNumber, int orderID, int & Status[]);
注文ステータスを返します。
パラメータ:
OrdID – 調べる対象となる注文ID Status - ステータスパラメータに返されるリザルト値(下記): 1, 2, 3, 4, 5 – pending(保留中)/confirmed(注文確認済み)/executed(注文執行済み)/cancelled(キャンセル済み)/awaiting cancellation(キャンセル処理中). また metadelta.mqh でも下記のように定義することが可能です: int ORD_PENDING = 1; int ORD_CONFIRMED = 2; int ORD_EXECUTED = 3; int ORD_CANCELED = 4; int ORD_AWAITING_CANCELATION = 5;
Result:
OKもしくは0以外でなければ「0」を返します。 | |
DELTA_GetOrderParams
int DELTA_GetOrderParams( string DS_AccNumber, int OrderID, string DS_Symbol, string Oper, double& PriceExecuted[],int& Units[]),int& Status[],int& Type[],double& PricePlaced[],double& PriceOCO[]);
注文のパラメータを返します。
パラメータ:
DS_AccNumber- デルタストック取引口座番号(例 "000142775")
Price(価格), Units(通貨単位)などのステータスパラメータは機能毎に単一要素として宣言されます。
OrderID – Order(注文) ID
DS_Symbol – 注文シンボル
Oper - "B" - BUY(買い), "S" - SELL(売り)
Price - 執行価格
Status - 注文ステータス: ORD_PENDING= 1; ORD_CONFIRMED= 2; ORD_EXECUTED= 3; ORD_CANCELED= 4; ORD_AWAITING_CANCELATION = 5;
Type - 注文タイプ: 1-成行,2-リミット,3-ストップ,4-OCO
PricePlaced - 発注価格 (リミットオーダー/ストップオーダー用)
PriceOCO - OCO 注文用価格
Result:
OKもしくは0以外でなければ「0」を返します。 | |
DELTA_GetPosition
int DELTA_GetPosition(string DS_AccNumber, string Instrument, double& Count[],double& Price[]);
ポジションの取引高と平均価格を返します。
パラメータ:
DS_AccNumber - APIが取引するデルタストックの取引口座番号 Instrument – デルタトレーディングの取引シンボル(例: EUR/USD) Count - ポジションユニット[通貨単位] (ロット数ではない). Price - ポジションの平均価格
Result:
OKもしくは0以外でなければ「0」を返します。 | |
DELTA_FreeMargin
int DELTA_FreeMargin(string DS_AccNumber, string Currency, double& Margin[]); 口座のフリーマージン(使用可能証拠金)を指定した通貨で返します。
パラメータ:
DS_AccNumber - デルタストックの取引口座番号 Currency – マージンが計算される通貨 Margin - 指定した通貨でのフリーマージン
Result:
OKもしくは0以外でなければ「0」を返します。 | |
DELTA_CancelOrder
int DELTA_CancelOrder(string DS_AccNumber, int OrdID); 注文のキャンセル命令を送ります。
パラメータ:
DS_AccNumber - デルタストックの取引口座番号 OrderID – キャンセルしたい注文ID
Result:
OKもしくは0以外でなければ「0」を返します。 | |
DELTA_ClosePosition
int DELTA_ClosePosition(string DS_AccNumber, string Instrument); 成行注文でポジションをクローズします。
パラメータ:
DS_AccNumber - デルタストックの取引口座番号 Instrument – デルタトレーディングの取引シンボル(例: EUR/USD)
Result:
OKもしくは0以外でなければ「0」を返します。 | |
DELTA_GetPositionRes
int DELTA_GetPositionRes(string DS_AccNumber, string Instrument, string Currency, double&result[]);
ポジションの現在の損益を返します。
パラメータ:
DS_AccNumber - デルタストックの取引口座番号 Instrument – デルタトレーディングの取引シンボル(例: EUR/USD) Currency – 結果値に適用される通貨(例: InCurrency = "EUR"). Result - ポジションの現在の損益
Result:
OKもしくは0以外でなければ「0」を返します。 | |
DELTA_GetErrMsg
int DELTA_GetErrMsg(string DS_AccNumber, int err_no, string errMsg, int errMsgLen);
エラー番号(err_no)の詳細メッセージを返します。
パラメータ:
DS_AccNumber - デルタストックの取引口座番号
err_no – 詳細を取得したいエラー番号
errMsg – エラーメッセージ
errMsgLen - エラーメッセージ文字数。errMsgLenのシンボル数で初期化します: string ErrMsg = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Result:
OKもしくは0以外でなければ「0」を返します。 | |
DELTA_GetQuote
int DELTA_GetQuote(string DS_AccNumber,string Instrument, double& QBid[],double& QAsk[],double& QHi[],double& QLow[]););
銘柄/通貨ペアの価格値を返します。
パラメータ:
DS_AccNumber - デルタストックの取引口座番号
下記のパラメータを返します。パラメータは1つの要素配列を宣言します。 QBid – Buy QAsk – Sell QHi - High QLow - Low
Result:
OKもしくは0以外でなければ「0」を返します。
例:
double QBid[1], QAsk[1], QHi[1], QLow[1]; err = DELTA_GetQuote(Instrument, QBid, QAsk, QHi, QLow); if(err != 0) { Print("ERROR calling DELTA_GetQuote: " err); return(-1); } else { Print ("bid = " + QBid[0] + "ask = " + QAsk[0] + "hi = " + QHi[0] + "low = " + QLow[0]); } | |
DELTA_GetPrecision
int DELTA_GetPrecision(string DS_AccNumber,string Instrument, double& Precision[]);
取引銘柄/通貨ペアの小数点以下価格
パラメータ:
DS_AccNumber- デルタストックの取引口座番号
Instrument- 取引銘柄/通貨ペアのシンボル
Precision - 小数点以下の値はこのパラメータに返されます。1つの要素配列を宣言します。 (例: double prec[1]).
Result:
OKもしくは0以外でなければ「0」を返します。 | |
DELTA_Log
int DELTA_Log(string DS_AccNumber,int on_off);
ログ監視の切換。ログファイルは <DELTATRADING_DIR>/Logs にあります。デルタトレーディングのログ監視(記録)オプションとして "Write to log(ログ書き込み)" (Settings/Common/General Settings/Client)が必要な場合は "Yes"。 このオプションを加えると、ログファイルにエラー情報が追加されます。
パラメータ:
DS_AccNumber- デルタストックの取引口座番号
Precision- 1 → "on", 0 → "off"
Result:
OKもしくは0以外でなければ「0」を返します。 | |
DELTA_GetPip
int DELTA_GetPip(string DS_AccNumber,double& pip[]);
取引銘柄/通貨ペアのpips値を返します。
Parameters:
DS_AccNumber- デルタストックの取引口座番号
pip- 取引銘柄/通貨ペアのpips値
Result:
OKもしくは0以外でなければ「0」を返します。 | |
バージョン 1.2 での変更点
2つの新しいパラメータ(double& PricePlaced[] and double& PriceOCO[])が「GetOrderParams」に加えられました。これらのパラメータは、リミットオーダーとストップオーダーの注文価格、そしてOCO注文のセカンドプライスを返します。もし、スクリプトもしくはEAで「DELTA_GetOrderParams」を使う場合は、この新しい2つのパラメータを加えて下さい。
注文が問題なく執行された場合に、「DELTA_GetOrderStatus」は「0」を返すでしょう(旧バージョンにはバグが存在し、本来は「0」を返すべきところを「1」を返してしまうケースがありました)。
下記の3つの機能が追加されました:
DELTA_Log - ログ監視の切換
DELTA_GetPrecision - 取引銘柄/通貨ペアの小数点以下の価格レートを返します
DELTA_GetPip - 取引銘柄/通貨ペアのpips値を返します
|
FAQ Meta-Delta(メタデルタ)
|