FXでEAを始めるブログ

トルコリラ下落などによる損失を期に裁量トレードからEAに乗り換えることにしました。 今後EA実行に向けて状況等を書いていこうと思います。

OrderSelect()によって取得可能な OrderType() の返り値1~5は注文に関する内容で、
6の場合は入金のようです。(出金はまだしたことないので確認できない。)
(どこかの解説サイトに載ってないし、証券会社によって違うらしいとの情報も・・・)

自分の場合は3,000円を入金した時のチケット番号の注文タイプが6になっていました。
tes




何種類かEAを作って自動売買させたり、デモ口座でテストを繰り返したりしたのですが、EAの種類が多くなってきた上に、途中自分でトレードしたりしたため EA別の成績が追えなくなってきました。
そもそもMT4の履歴出力でMagicNumber毎の結果が出たらいいのですが、出し方や出せるのかどうかも不明なので MagicNumbre毎の損益を計算して表示するEAを作りました。

履歴には初期の入金や追加の入出金が含まれるためこれらを除外しなければなりませんが、その方法が今のところ不明なので、extern でパラメータとして入力できるようにしました。
EX.
extern int ini_dep = 50000; // 初期入金額
extern int add_dep = 3000; // 入金額
extern int wdr     = 0;               // 出金額

【実行結果】
01

【ソース】
2
EAの表示結果とMT4の履歴結果とは合致しました。
今後の課題は入出金履歴を取得して手動設定しなくても良いようにすることです。

初期の自作EAはマジックナンバーを付与していませんでしたが、そちらはマイナスの結果になっており、挽回策で投入した EA-No.3, EA-No.4 で回復したことが確認できました。
しかしその後に作った新しいバージョンはマイナスでした。


解説サイトに明確な記載がなかったので備忘録とします。

input を使って選択肢を作る際は、enum で定義した後、
input [定義名] [選択値を格納する変数名] = 初期値; とします。
#property strict とすることで、後のコメントを選択名に出来ます。

具体例:
#property strict 



//---------------------------------------------------------------------------
enum MAtype { // MA方法の選択肢定義
Simple=0, // Simple
Smooth=1, // Smooth
Exponential=2 // Exponential
};
input MAtype MAss   = Simple; // MA選択
// [定義名], [格納変数名] = [初期値]

enum MAcalu { // MA計算値の選択肢定義
CLOSE=0, // Close
OPEN=1, // Open
HL2=2, // (H+L)/2
HLC3=3, // (H+L+C)/3
};
input MAcalu MAsc = HLC3; // MA選択 
//---------------------------------------------------------------------------
// 注意) Close, Open は定義済変数なので使用しないこと。 

上記では、変数 MAss の初期値は 0, 変数 MAsc の初期値は 3 になります。


使用例:
enum

sentaku




↑このページのトップヘ