FC2ブログ

ダイバージェンスEAをiCustomで作る

EA作成中
05 /02 2020
案外簡単にできたのですが、デバッグしているとインジケータのデータが細切れに途切れてしまう現象が・・・
一旦MT5を落として、立ち上げなおすと何とか動作するようになりました。
同じインジケータの違うバージョンを同名で立ち上げていると誤動作するようですね。
デバッグの時には気を付けよう。

iCustomのオーダー

オーダー部分は、MT5のExampleEA(MACD Sample.mq5)から取り出して使ったので、iCustomでインジケータのデータを取り込みオーダーする部分のみ実装すればOKでした。
下のコードで「最大ヒストリーバー」以降は、インジケータのパラメータです。

ex_ind_handle = iCustom(
Symbol(),
Period(),
"DiverEye5",  // インジケータ名称(ファイル名)
1000, // 最大ヒストリーバー
0, // チャート表示選択
true, // オーダーのみ表示
true, // ダイバージェンス両表示
macdDivSignal, // MACDダイバージェンス
shortMacdPeriod, // 短期MACD期間
longMacdPeriod, // 長期MACD期間
divMacdPeriod, // MACD ダイバージェンス判断期間(期間より大きく)
stochasDivSignal, // ストキャス ダイバージェンス
stochasMidPeriod, // ストキャス期間
stochasMidSlow, // ストキャス スローイング
stochasViewThreshold, // ストキャスしきい値(ダイバージェンス)
diverStochasPeriod // ストキャス ダイバージェンス判断期間(期間より大きく)
);

DiverEye5インジケータでは、バッファ0にロングオーダーサイン、バッファ1にショートオーダーサインを表示しています。なので、iCustomの戻りハンドルを使用して、バッファ0と1をコピーしてきます。
その最新インデックス(0)が有効な値の場合は、オーダーサインになります。

if (CopyBuffer(m_handle_ind, 0, 0, 1000, m_long) != m_period)
{
Print(" CopyBuffer error !! ");
return false;
}
if (m_long[0] != 0 && m_long[0] != EMPTY_VALUE)
{
Print("long = ", m_long[0]);
return 「ロングのオーダー」;
}
if (CopyBuffer(m_handle_ind, 1, 0, 1000, m_short) != m_period)
{
Print(" CopyBuffer error !! ");
return false;
}
if (m_short[0] != 0 && m_short[0] != EMPTY_VALUE)
{
Print("short = ", m_short[0]);
return 「ショートのオーダー」;
}

それでどうなの?

いろいろな通貨ペアで試しましたが、USDJPYの1時間足が一番いい結果でした。

icustom-divereye設定

去年1年間でバックテスト・フォワードテストを行いました。

icustom-divereyeパラメータ

パラメータ最適化をしています。Lotは0.1固定です。

icustom-divereyeバックテスト

バックテスト期間(1年の2/3)では微益が出ました。勝率は辛うじて50%を超えています。

icustom-divereyeフォワード

フォワード期間(1年の1/3)でも微益が出ました。勝率は56%ぐらいです。

icustom-divereyeグラフ

グラフで見るとこんな感じ。バックテストからフォワードテストに移るときに金額がリセットされています。(2019年8月中旬で残高が100000$にリセットされています)

他の通貨ペア(EURUSD、GBPUSD、CADJPY)は最適化してもプラスになっていません。
他の時間足(5分、15分、30分)は微益でしたが、1時間足が一番いい結果でした。

1時間足なので1年間83オーダーしかしていません。インジケータの時に説明した、山谷の判断ロジックを改善すれば、オーダー数は上がると思います。が・・・それがいい結果になるかどうかはわかりません。
(_ _|||)

あとクローズサインをインジケータでは表示しているのですが、EA側では全く違うクローズロジックになっています。
これも損益に関係してくると思います。

次にやること


やはりMT5でのバックテストは良いですねー、MT4よりも相当早い気がします。
最適化やバックテストを行うと、自動でパラメータや設定を保存しておいてくれるのもGOODです。
フォワードテストで検証できるのも良いし。
これで、移植さえ簡単なら・・・( ̄へ ̄||) 

このEAのままでは使い物にならないので、次にやることは、
  • 山谷の判断ロジックを改善する。
  • クローズサインでクローズするようにする。
特に「クローズサインでクローズ」は他のインジケータを作ったとき必須になるので、実装しておきたいですね。

連休中にはできないかなぁ・・・( ̄ー ̄;)ゞ
カルマンフィルタの改造もしたいし、機械学習の組み込みもしたいなぁ、休みがあと1ヵ月あればなぁ。
Oo。。( ̄¬ ̄*)
(そんなことしたら生活できませんてw)



関連記事

コメント

非公開コメント

パペ太

パペ太は自動人形(EA)を操るという意味で、puppeteer(人形遣い)から付けました。
高収益のEAを目指して日々悩んでいます。