MQL4プログラミングにおけるマジックナンバーとは? マジックナンバーとは、MT4の注文がどのEA・ロジックから実行されたかを識別するための番号です。
MT4での運用は1つの口座で1つのEAだけを使用するとは限りません。
複数のEAを使用する場合や、EAによるシステムトレードと手動の裁量トレード組み合わせて行う場合など様々なケースが有ります。
そのため現在保有中のポジションが、どこからの注文であるかを適切に判別する必要があります。
ポジションを判別するには他にも注文成功時に返されるチケット番号を記録しておき、使用する方法があります。
しかしチケット番号を変数に保存して利用する方法は、MT4の再起動時や、EAのパラメータ変更時に変数が初期化されてチケット番号の情報を失う可能性があります。
変数に保存する以外にも、外部のcsvファイルなどに書き出す方法や、グローバル変数として保存する方法も考えられますが、作成に手間がかかりることや、ユーザーによって削除される危険性もることから良い方法ではないでしょう。
マジックナンバーの設定方法
マジックナンバーを指定するには、OrderSend関数の第9引数magicに任意の数値を指定します。
int OrderSend(
string symbol,
int cmd,
double volume,
double price,
int slippage,
double stoploss,
double takeprofit,
string comment=NULL,
int magic=0,
datetime expiration=0,
color arrow_color=clrNONE
);
マジックナンバーの注意点
magicに設定する数値
特別な理由がない限りマジックナンバーには0以外の数値を指定しましょう。
これは手動でのエントリー時に設定されるマジックナンバーが0のためです。
magicは省略可能な引数ですが、省略すると0が設定されてしまうため、必ず省略せず指定しましょう。
マジックナンバーは外部パラメータにする
マジックナンバーは必ず外部パラメータとしてユーザーが自由に設定できるようにしましょう。
固定の数値を使用した場合には、他のEAとマジックナンバーが被る可能性があります。
1つのEAで複数のマジックナンバーを使用する場合もあります。
このとき使用する全てのマジックナンバーを外部パラメータにすれば問題はありません。
マジックナンバーのパラメータを1つだけ用意し、その数字を基準にプログラム内部で複数のマジックナンバーを使用する場合は注意が必要です。
この場合はどのようなルールによってマジックナンバーを生成し使用しているかをユーザーへ伝える必要があります。
この作業を怠るとマジックナンバーの重複が発生してユーザーに損害が発生する可能性があります。
サンプル
入力された外部パラメータの数値を元にマジックナンバーを指定して発注するサンプルです。
チャートにEAを設定すると一度のみ買いエントリーが実行されます。
#property strict
extern int MagicNumber = 123456; //マジックナンバー
extern double Lots = 0.1; //取引数量
extern int Slippage = 1; //スリッページ
bool isEntry = true;
void OnTick(){
if(isEntry == true){
if(OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, NULL, MagicNumber) == -1){
Print("OrderSend Error ", GetLastError());
}
else{
isEntry = false;
}
}
}
MagicNumberSample.zip
コメント
**太字1**
__太字2__
*斜体1*
_斜体2_
~~打ち消し線~~
++下線付きテキスト++
太字1
太字2
斜体1
斜体2
打ち消し線
++下線付きテキスト++
==マークテキスト==
19^th^
H~2~O
(c) (C) (r) (R) (tm) (TM) (p) (P) +-
:wink: :laughing: :yum: :cry:
:-) :-( 8-) ;)
マークテキスト
19th
H2 O
© © ® ® ™ ™ § § ±
😉 😆 😋 😢
😃 😦 😎 😉
==リスト(箇条書き)==
リストの作成は先頭に
`+` `-` または`*`で始めることによってリストを作成できます
+ サブリストは2スペースのインデントで作成できます
- または、マークアップの文字を変更することでもサブリストを作成できます
+ GogoJungle
+ 投資家の英知をすべての人に。
+ とても簡単です!
リスト(箇条書き)
リストの作成は先頭に
+
-
または*
で始めることによってリストを作成できます
サブリストは2スペースのインデントで作成できます
- または、マークアップの文字を変更することでもサブリストを作成できます
+ GogoJungle
+ 投資家の英知をすべての人に。
とても簡単です!
==リスト(段落番号)==
1. GogoJungle LABO
2. EA(自動売買)
3. インジケーター
リスト(段落番号)
GogoJungle LABO
EA(自動売買)
インジケーター
==テーブル==
| 名前 | 説明 |
| ------ | ----------- |
| EA(自動売買) | MT4で利用可能な自動売買ソフトウェア |
| インジケーター | 売買サイン、発注補助、各種通知機能などのツール |
テーブル
名前
説明
EA(自動売買)
MT4で利用可能な自動売買ソフトウェア
インジケーター
売買サイン、発注補助、各種通知機能などのツール
==テーブル(カラムを右寄せ)==
| 名前 | 説明 |
| ------:| -----------:|
| EA(自動売買) | MT4で利用可能な自動売買ソフトウェア|
| インジケーター | 売買サイン、発注補助、各種通知機能などのツール |
テーブル(カラムを右寄せ)
名前
説明
EA(自動売買)
MT4で利用可能な自動売買ソフトウェア
インジケーター
売買サイン、発注補助、各種通知機能などのツール
==リンク==
[GogoJungle](https://www.gogojungle.co.jp/)
==画像==
![EAつくーる](https://www.gogojungle.co.jp/img/products/5735)
画像
閉じる
**太字1**
__太字2__
*斜体1*
_斜体2_
~~打ち消し線~~
++下線付きテキスト++
太字1
太字2
斜体1
斜体2
打ち消し線
++下線付きテキスト++
==マークテキスト==
19^th^
H~2~O
(c) (C) (r) (R) (tm) (TM) (p) (P) +-
:wink: :laughing: :yum: :cry:
:-) :-( 8-) ;)
マークテキスト
19th
H2 O
© © ® ® ™ ™ § § ±
😉 😆 😋 😢
😃 😦 😎 😉
==リスト(箇条書き)==
リストの作成は先頭に
`+` `-` または`*`で始めることによってリストを作成できます
+ サブリストは2スペースのインデントで作成できます
- または、マークアップの文字を変更することでもサブリストを作成できます
+ GogoJungle
+ 投資家の英知をすべての人に。
+ とても簡単です!
リスト(箇条書き)
リストの作成は先頭に
+
-
または*
で始めることによってリストを作成できます
サブリストは2スペースのインデントで作成できます
- または、マークアップの文字を変更することでもサブリストを作成できます
+ GogoJungle
+ 投資家の英知をすべての人に。
とても簡単です!
==リスト(段落番号)==
1. GogoJungle LABO
2. EA(自動売買)
3. インジケーター
リスト(段落番号)
GogoJungle LABO
EA(自動売買)
インジケーター
==テーブル==
| 名前 | 説明 |
| ------ | ----------- |
| EA(自動売買) | MT4で利用可能な自動売買ソフトウェア |
| インジケーター | 売買サイン、発注補助、各種通知機能などのツール |
テーブル
名前
説明
EA(自動売買)
MT4で利用可能な自動売買ソフトウェア
インジケーター
売買サイン、発注補助、各種通知機能などのツール
==テーブル(カラムを右寄せ)==
| 名前 | 説明 |
| ------:| -----------:|
| EA(自動売買) | MT4で利用可能な自動売買ソフトウェア|
| インジケーター | 売買サイン、発注補助、各種通知機能などのツール |
テーブル(カラムを右寄せ)
名前
説明
EA(自動売買)
MT4で利用可能な自動売買ソフトウェア
インジケーター
売買サイン、発注補助、各種通知機能などのツール
==リンク==
[GogoJungle](https://www.gogojungle.co.jp/)
==画像==
![EAつくーる](https://www.gogojungle.co.jp/img/products/5735)
画像
閉じる
関連トピックス
注目トピックス
こんにちは、質問ですが手動でのエントリー時に設定されるマジックナンバーが0とありますがEAのマジックナンバーを0のままだとEAのロジックは動きませんか
EAのマジックナンバーを0とした場合について、回答いたします。
現在、手動でエントリーしたポジションが存在せず、
今後も手動でエントリーしない場合は、正常に動作いたします。
手動でエントリーしたポジションが存在する場合や、
EA稼働中に手動で追加エントリーした場合は、予期せぬ動作をしますので、ご注意ください。
ご参考いただけますと幸いです。何卒よろしくお願い申し上げます。