Forex MQLで行こう(旧株価チャートサイン)

FXで有名なMT4でMQLプログラムを勉強していきます。

移動平均

MA 移動平均 長期線を入れたサイン◆_擦鳴るEA

前回の売買条件に以下を追加
買いシグナル:短期線が中期線より上で、長期線を中期線が上抜けた
if(fastNow > slowNow && slowPre <= longPre && slowNow > longNow)

売りシグナル:短期線が中期線より下で、長期線を中期線が下抜けた
if(fastNow < slowNow && slowPre >= longPre && slowNow < longNow)

*変数の説明
fastNow:1つ前の短期線の値
slowNow:1つ前の中期線の値
slowPre:2つ前の中期線の値
longPre:1つ前の長期線の値
longNow:2つ前の長期線の値

ダウンロード ma21.ex4


前回のテストのOptimizationでパフォーマンスが良かった値をつかってバックテスト

■5分足
短期線10本/中期線40本/長期線75本/モード単純移動平均/Open prices/期間2013.01.02〜
損益    P/F  トレード数 最大Drowdown 勝率
2814.79   1.14   266   3357.28   36.09%

■15分足
短期線8本/中期線50本/長期線75本/モード単純移動平均/Open prices/期間2013.01.02〜
損益    P/F  トレード数 最大Drowdown 勝率
5035.88  1.49   81    3308.20   34.57%

■30分足
短期線10本/中期線25本/長期線75本/モード単純移動平均/Open prices/期間2013.01.02〜
損益    P/F  トレード数 最大Drowdown 勝率
5915.09  1.73   56     2924.65   42.86%

■1時間足
短期線14本/中期線30本/長期線75本/モード単純移動平均/Open prices/期間2013.01.02〜
損益    P/F  トレード数 最大Drowdown 勝率
6642.69  2.16   22     5579.40  68.18%
素晴らしい!1lotでトレードしていたら6万円のプラスと言う結果に。
でも最大損失も5万5千円なり。

■4時間足
短期線10本/中期線25本/長期線75本/モード単純移動平均/Open prices/期間2013.01.02〜
損益    P/F  トレード数 最大Drowdown 勝率
3692.92  3.09   6     2800.09  50.0%

■日足
2000年からのテストをしたら、最初の3回のトレードでマイナスになり、終了。


次回は移動平均以外で新しい関数に挑戦です。

MA 移動平均 長期線を入れたサインで音が鳴るEA

移動平均の長期線も使ったプログラムを作ってみた。
ma2.ex4

パラメータの説明(Expert Propertiesで設定してください)
prmMaF:短期線の周期
prmMaS:中期線の周期
prmMaL:長期線の周期
eaOn :バックテスト時は1にする
mode :前回の移動平均の種類を指定するなら
0:単純移動平均(デフォルト)
1:指数移動平均
2:平滑移動平均
3:線形加重移動平均


移動平均の短期と中期のクロスでサインを判断するのは変わりませんが、
さらに条件として、長期線の上か下かで音がなります。

買いシグナル:長期線の上でゴールデンクロス
売りシグナル:長期線の下でデッドクロス
ですので、長期線より下で短期と中期のゴールデンクロスではサインとして
無視するので、音はなりません。

そして、プログラムではテスト用に決算方法を以下としてます。
買いポジション:中期線を短期線が下抜ける
売りポジション:中期線を短期線が上抜ける


Optimizationを使ったテスト結果
開始期間を1990年からにして、モデルはOpen Prices Only、長期線は75本固定。

日足での結果(収益の数字はUSD$です)
損益    Trade P/F  ExpectedPayOff DrawDown$ DrawDown%  設定
73921.32  84  2.14  880.02     12754.9  22.45%  prmMaF=10 prmMaS=35 prmMaL=75
72023.67  78  2.18  923.38     12885.87  24.92%  prmMaF=12 prmMaS=35 prmMaL=75
この2つがダントツでした。

4時間足での結果
損益    Trade P/F  ExpectedPayOff DrawDown$ DrawDown%  設定
37447.85  390 1.21   96.02     32184.02  42.40%  prmMaF=12 prmMaS=25 prmMaL=75
36929.02  581 1.16   63.56     38721.47  46.84%  prmMaF=14 prmMaS=20 prmMaL=75
35215.19  398 1.19   88.48     32285.94  43.60%  prmMaF=10 prmMaS=25 prmMaL=75
32094.14  518 1.15   61.96     39132.46  49.85%  prmMaF=10 prmMaS=20 prmMaL=75
31300.64  526 1.15   59.51     35405.69  48.16%  prmMaF=8 prmMaS=20 prmMaL=75

1時間足での結果
損益    Trade P/F  ExpectedPayOff DrawDown$ DrawDown%  設定
57354.99  926 1.25   61.94     18146.75  25.53%  prmMaF=12 prmMaS=35 prmMaL=75
48641.08  713 1.24   68.22     18803.90  55.41%  prmMaF=12 prmMaS=45 prmMaL=75
44046.06  1004 1.18   43.87    18031.33  27.22%  prmMaF=10 prmMaS=35 prmMaL=75
41791.76  875 1.18   47.76     18199.37  37.71%  prmMaF=14 prmMaS=35 prmMaL=75
37357.14  942 1.17   39.66     18047.19  41.42%  prmMaF=6 prmMaS=50 prmMaL=75

って、ここまでやって気がついたんだけど、この収益はスワップが入ってるのか!
ロングポジションが長ければその分プラスが増えるのか。

やり直し。。。
今年のみに絞ってテスト。
■5分足
損益    Trade P/F  ExpectedPayOff DrawDown$ DrawDown%  設定
668.80   10  2.21   66.88     572.57  5.49%   prmMaF=10 prmMaS=40 prmMaL=75
641.13   9  2.37   71.24     755.29  7.33%   prmMaF=14 prmMaS=30 prmMaL=75
523.65   8  2.03   65.46     776.83  7.43%   prmMaF=14 prmMaS=40 prmMaL=75
507.95   11  1.72   46.18     765.37  7.62%   prmMaF=12 prmMaS=30 prmMaL=75
484.40   10  2.00   48.44     667.86  6.53%   prmMaF=14 prmMaS=35 prmMaL=75

■15分足
損益    Trade P/F  ExpectedPayOff DrawDown$ DrawDown%  設定
7363.63   81  1.75   90.91    3431.69  19.88%   prmMaF=8 prmMaS=50 prmMaL=75
5608.27   53  1.68  105.82    2066.72  12.66%   prmMaF=14 prmMaS=55 prmMaL=75
5561.61   62  1.67   89.70    2539.91  18.09%   prmMaF=10 prmMaS=55 prmMaL=75
5243.93   89  1.52   58.92    3155.38  19.03%   prmMaF=10 prmMaS=35 prmMaL=75
5018.36   56  1.66   89.61    2395.74  14.53%   prmMaF=14 prmMaS=50 prmMaL=75
4825.77   60  1.64   80.43    2435.35  15.62%   prmMaF=12 prmMaS=45 prmMaL=75
4809.99   78  1.48   61.67    2962.76  18.56%   prmMaF=12 prmMaS=40 prmMaL=75

■30分足
損益    Trade P/F  ExpectedPayOff DrawDown$ DrawDown%  設定
226.53    1  0.00   226.53    258.07  2.49%   prmMaF=10 prmMaS=25 prmMaL=75
219.50    1  0.00   219.50    258.07  2.49%   prmMaF=8 prmMaS=20 prmMaL=75
127.70    3  1.95   42.57    585.43  5.57%   prmMaF=10 prmMaS=20 prmMaL=75
36.31    1  0.00   36.31    336.66  3.25%   prmMaF=14 prmMaS=25 prmMaL=75
36.31    1  0.00   36.31    336.66  3.25%   prmMaF=12 prmMaS=25 prmMaL=75
トレード回数が1回?話になりません。

■1時間足
■4時間足
  結果なし(なぜ?)

■1日足
損益    Trade P/F  ExpectedPayOff DrawDown$ DrawDown%  設定
3558.02   2  0.00  1779.01    3011.31  19.36%   prmMaF=2 prmMaS=30 prmMaL=75
1419.23   1  0.00  1419.23    3011.31  22.44%   prmMaF=4 prmMaS=50 prmMaL=75
以下同じ結果


どうもプラスにする事が出来るようだ。
次回はレインボークロス(短期が中期を上抜けた後、中期が長期を上抜け)について
考えてみようと思う。

あ、時間にゆとりがある人、テスト結果募集します。

MA 複数の種類の移動平均でテストしてみる

複数の種類の移動平均でテストしてみる

移動平均には単純移動平均、指数移動平均、平滑移動平均、線形加重移動平均がある。
先に作ったのは単純移動平均だが、その他の移動平均を指定出来るようにしてみた。
移動平均 ma11.ex4

modeの値を0から3の間で設定出来ます。(Expert Propertiesからパラメータの入力)
0:単純移動平均
1:指数移動平均
2:平滑移動平均
3:線形加重移動平均


Optimizationでのテスト結果(eaOnを1に設定するとテスト出来ます)
1時間足/EveryTickを指定
         損益    Trade P/F  ExpectedPayOff DrawDown$ DrawDown%
単純移動平均  :$248192.83 3872 1.26   64.10    74597.44  24.85%
指数移動平均  :$228324.23 2720 1.30   83.94    64648.05  22.87%
平滑移動平均  :$212624.56 4160 1.21   51.11    93289.18  31.61%
線形加重移動平均:$205945.48 1395 1.38   147.63    73872.74  25.51%

日足/EveryTickを指定
         損益    Trade P/F  ExpectedPayOff DrawDown$ DrawDown%
線形加重移動平均:$272532.23 488 1.70   558.47    35884.51  22.25%
指数移動平均  :$271487.44 319 1.95   851.06    57935.78  22.86%
平滑移動平均  :$249457.92 145 2.43   1720.40    47024.14  21.64%
単純移動平均  :$240454.37 481 1.62   499.91    54412.40  18.11%

本当にこんなに収益が出るんですかね。
相変わらず、バックテストが不安定だし、信用出来る数値とは言えないでしょう。
ヒストリーの取得とか、メモリとかちゃんと調べないと行けないかな。

MA 移動平均 ma1.ex4でのバックテスト結果

対象通貨:USD/JPY
期間:  1990-最近
使用通貨:USD

===1時間足でのテスト===
総純損益  102843.29
最大ドローダウン  52167.30
勝ちトレード数(率)  38.48%
1トレード当たりの最大利益18216.50
1トレード当たりの最大損失  -18582.85
ma1test1h

===日足でのテスト===
総純損益  51330.19
最大ドローダウン  55883.91
勝ちトレード数(率)  45.00%
1トレード当たりの最大利益  18215.08
1トレード当たりの最大損失  -18305.47
ma1test1d

1時間足と日足で収益が出ると言う結果が。


それより、このStrategy Testって、やる度に結果が違うのはなぜ?
また、他のパソコンでHistory Centerでダウンロードするんだけど、
最近2013年以降しかダウンロードできない。以前は出来た。


疑問ばかり。


そしてそして、嬉しいOptimazation機能。
値を変化させてパフォーマンスを見ることができます!

30分足では収益、プロフィットファクター共に短期線を12に、中期を60にすると
収益と、プロフィットファクターで一番いい結果が得られます。
総純損益  256098.46
最大ドローダウン  44249.61
勝ちトレード数(率)  32.6%
1トレード当たりの最大利益  39303.42
1トレード当たりの最大損失  -18608.30


30m足での結果:収益12,60
1H 足での結果:収益14,30/プロフィットファクター14,30
1D 足での結果:収益12,30/プロフィットファクター12,75

15分以下では結果が出ない。これも疑問。


今日はここまで。

MA 移動平均によるシグナル

移動平均線 Moving Average

有名過ぎて説明要らないですね。

買いシグナル:中期線を短期線を上抜る
売りシグナル:中期線を短期線が下抜ける

【使う関数】
double iMA(string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)
*MetaSysSeekerより

【関数に渡す値】
1)ペア:実行するウィンドウで表示しているペア(symbol 0)
2)時間足:実行するウィンドウで表示している時間足(timeframe 0)
3)周期:14(period 14)
4)転移:意味がわからないので0を指定(ma_shift 0)
5)単純移動平均を使う(ma_method MODE_SMA)
6)終値で判断する(applied_price PRICE_CLOSE)
7)前の足が確定した時点で判断(shift 1)
  0だと現在なのでまだ確定してない。

こうなる
iMA(0, 0, 14, 0, MODE_SMA, PRICE_CLOSE, 1)
25の周期は
iMA(0, 0, 25, 0, MODE_SMA, PRICE_CLOSE, 1)

クロスしたかどうかを判断するには、2つ前の移動平均と1つ前の
移動平均の値を取得して、2つ前と1つ前が逆転したらって判断します。


fastNow =iMA(0, 0, 14, 0, MODE_SMA, PRICE_CLOSE, 1)
slowNow =iMA(0, 0, 25, 0, MODE_SMA, PRICE_CLOSE, 1)
fastPre =iMA(0, 0, 14, 0, MODE_SMA, PRICE_CLOSE, 2)
slowPre =iMA(0, 0, 25, 0, MODE_SMA, PRICE_CLOSE, 2)

ゴールデンクロス
if( fastPre <= slowPre && fastNow > slowNow)
2つ前では短期線は下、1つ前では短期線が上に変化した。

デットクロス
if( fastPre >= slowPre && fastNow < slowNow)
2つ前では短期線は上、1つ前では下。


クロスで音がなる(Alert)ようにしてみた。
移動平均 ma1.ex4
デフォルトでは短期線14、中期線25としてありますが、「パラメータの入力」で変更可能です。

音が鳴ったら売買は自分で判断するって使い方もあるかな。
カテゴリ別アーカイブ
記事検索
---ご紹介---

ソフト販売グレップス
パソコンレジソフトお試しDLあり
アンドロイドアプリ「消費税電卓」無料ダウンロード
明星塾 (白金台 英語個別指導)
個別指導でその生徒さんに合った指導を行っています
鈴木塾 (自由が丘 学習塾)
1クラス5人までの少人数制。納得するまで質問に答えます
旅館明治
山梨甲府湯村温泉 太宰治の宿
株式会社ベイ・アクティブ
横浜・上大岡の不動産屋
REPEAT
フィリピンでの結婚書類翻訳申請
Adsence
  • ライブドアブログ