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

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

EA

再開

全く更新をしなくなってだいぶ時間が経ちましたが、またプログラムを作りたいと思います。

今回はおさらいで、過去のプログラムを一度まとめます。

【MAを使ったEA】
^榮以振兩のクロスを判定してアラームを鳴らす
・中期線を短期線が上抜けた
・中期線を短期線が下抜けた
・長期線の上で中期線を短期線を上抜けた
・長期線の下で中期線を短期線が下抜けた
・短期線より中期線が上のまま、中期線が長期線を上抜けた
・短期線が中期線より下のまま、中期線が長期線を下抜けた

【RSIを使ったEA】
〇慊蠅靴心霆狠佑箸離ロスを判定してアラームを鳴らす
・指定した基準値を上抜けた
・指定した基準値を下抜けた
・指定した基準値を上抜けた後、下げて来た
・指定した基準値を下抜けた後、上げて来た
・指定した基準値を上抜けた後、その基準値を下抜けた
・指定した基準値を下抜けた後、その基準値を上抜けた
■欧弔RSIを使ってアラームを鳴らす
・2つのRSIが指定した「差」になった
・指定した基準値より上で2つのRSIがクロスした
・指定した基準値より下で2つのRSIがクロスした

【MACDを使ったEA】
.轡哀淵襪鮖箸辰独縦蠅靴謄▲蕁璽爐鯡弔蕕
・移動周期がシグナルとクロスした(上抜け、下抜け)
■哀薀ぅ鵑鮖箸辰独縦蠅靴謄▲蕁璽爐鯡弔蕕
・移動周期が0ラインとクロスした(プラス、マイナス)
0ライン、シグナル両方を使って判定してアラームを鳴らす
・0ラインより下で移動周期がシグナルを上抜けた
・0ラインより上で移動周期がシグナルを下抜けた

【ストキャスティクス(stochastics)を使ったEA】
%K指数ラインと%D指数ラインのクロスを使ってアラームを鳴らす
・水準値20%以下で%D指数ラインを%K指数ラインが上抜けた
・水準値80%以上で%D指数ラインを%K指数ラインが下抜けた



テストばかりやって、次のプログラムを作らずそのままでした。。。




 

決算だけするEA

ポジション取るときは自分の判断で、でも、決済は
自動でやりたい。

【MAで決算を判断】
・パラメーター
  prmMaF:短期線の周期
  prmMaS:中期線の周期
  prmMaL:長期線の周期
  maMode:種類
        0:単純移動平均
        1:指数移動平均
        2:平滑移動平均
        3:線形加重移動平均
  maCase:決算方法
        0:無効
        1:1本前の終値が短期線とクロス
        2:短期線と中期線のクロス
        3:1本前の終値が長期線とクロス

【MACDで決算を判断】
・パラメーター
  prmMacdF:短い線の周期
  prmMacdS:長い線の周期
  prmMacdI:シグナル周期
  macdCase:決算方法
        0:無効
        1:MACD線とシグナル線のクロス
        2:MACD線と0ライン線のクロス

【RSIで決算を判断】
・パラメーター
  prmRsiM:RSI50を基準にプラマイする値
  risCase:決算方法
        0:無効
        1:有効
  *prmRsiMが15であった場合、ロングポジションをRSI65で決算する


ダウンロード ClosePosi.ex4

ストキャスティクス(stochastics) クロスで音を鳴らすEA

【サイン】
%Kが%Dを上抜いた地点が買いサイン
%Kが%Dを下抜いた地点が売りサイン

【計算方法】
%K =(当日終値-N本の最安値)/(N本の最高値-N本の最安値)*100
%D =A/B*100
A=(当日終値-N本の最安値)のH本、B=(N本の最高値-N本の最安値)のH本合計

【使う関数】
double iStochastic(string symbol, int timeframe, int %Kperiod, int %Dperiod,
int slowing, int method, int price_field, int mode, int shift)

【関数に渡す値】
1)ペア:実行するウィンドウで表示しているペア(symbol 0)
2)時間足:実行するウィンドウで表示している時間足(timeframe 0)
3)%Kラインの期間(%Kperiod 5)
4)%Dラインの期間(%Dperiod 3)
5)スロー値(slowing 3)
6)MAの方式(method MODE_SMA)
7)安値/高値で判断(price_field 0 )
8)メインか、シグナルか(mode MODE_MAIN)
9)前の足が確定した時点で判断(shift 1)

main = iStochastic(NULL, 0, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, 1);
sig = iStochastic(NULL, 0, 5, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1);

mainとsignalのクロスで音が鳴るようにした。
ダウンロード stochas1.ex4


ただし、20以下か、80以下かを見ているので、ただのクロスではない。


それより、バックテストが全然出来ない。
HistoryCenterでダウンロードしてテストしてもデーターが無いって出てくるし、
見てみると2012年の途中から、今年の5月までのデータがない。
なんで歯抜けになるの?
何回ダウンロードしても埋まらない。 

腹が立つんですが。

MACD (Moving Average Convergence Divergence) クロスで音を鳴らすEA

オシレーター系指標で、移動平均の乖離を見やすくしたやつってことですかね。

MACDの計算式は割愛。

【使う関数】
double iMACD(string symbol, int timeframe, int fast_ema_period,
   int slow_ema_period, int signal_period, int applied_price, int mode, int shift)


【関数に渡す値】
1)ペア:実行するウィンドウで表示しているペア(symbol 0)
2)時間足:実行するウィンドウで表示している時間足(timeframe 0)
3)周期1:12(fast_ema_period 12)
4)周期2:26(slow_ema_period 26)
5)シグナル:9(signal_period 9)
6)終値で判断する(applied_price PRICE_CLOSE)
7)モード:基本線か、シグナルか(mode MODE_MAIN/MODE_SIGNAL)
7)前の足が確定した時点で判断(shift 1)

以下の3つの条件でそれぞれアラートが鳴るようにしてみた。
ダウンロード macd1.ex4

パラメータの説明(Expert Propertiesで設定してください)
prmMacdF:短い周期の値(デフォルト12)
prmMacdS:長い周期の値(デフォルト26)
prmMacdI:シグナルの周期(デフォルト9)
sigCase :シグナル判断方法
  0:シグナルとのクロス
  1:0以下でシグナル線を突き抜けたか、0以上でシグナル線を下抜けた
  2:MACD線が0ラインをクロスした時
eaOn =0:バックテストをする時は1

最近(今年)のデータに限ってはバックテストの結果がプラスになるようだ。
sigCaseを2にして、0以上の時Longポジション、0以下の時Shortポジション
と言う設定にすると結果がプラスに。
macd2_15op

prmMacdF=10,prmMacdS=39,prmMacI=9(Optimizationの結果から引用)
期間は2013/01/02から

2000年からテストをするとずーーーーーと右肩下がり。
おかしい。。。2013年からのテストではプラスと言う結果になっているのに。

RSI (Relative Strength Index) 相対力指数を使った音が鳴るEA

売られすぎ、買われすぎを見る代表的テクニカル指標ですね。
数値は0〜100の間で表され、30以下は売られすぎ、70以上は
買われ過ぎと見るのが一般的。

RSI=n日の値上がり幅合計/(n日の値上がり幅合計 +n日の値下がり幅合計)*100

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

【関数に渡す値】
1)ペア:実行するウィンドウで表示しているペア(symbol 0)
2)時間足:実行するウィンドウで表示している時間足(timeframe 0)
3)周期:14(period 14)
6)終値で判断する(applied_price PRICE_CLOSE)
7)確定している前の足を使う(shift 1)

こうなる
iRSI(0, 0, 30, PRICE_CLOSE, 1)

条件を満たしたら音が鳴る(Alert)ようにしてみた。
ダウンロード rsi1.ex4

パラメータの説明(Expert Propertiesで設定してください)
prmRsi:RSIの周期(デフォルト14)
prmHi :買われすぎを判断する値(デフォルト70)
prmLo :売られ過ぎを判断する値(デフォルト30)
sigCase:判断方法 
  0:prmHiを越したか、又は、prmLoより下げた(下図 
  1:prmHiを越した後、反転したか、又は、prmLoを下回り、反転した(下図◆
  2:prmHiを越した後、prmHiより戻した、又はprmLoを下回った後、pmrLoから戻した(下図)
rsi


さて、バックテストで売買ロジックを組むのに決算規則をどうするか。。。

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%

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

MQLお勉強開始!

まず、MT4(Meta Trader 4)ですが、大変有名なフリーソフトで、高機能なチャートを表示
出来たり、このソフトに対応しているFX業者では売買もできます。

そして、MQLプログラムを作ることによって、MT4上にオリジナルインジケータを表示したり、
売買プログラムを実行できたりします。

株価チャートサインではエクセルを使ってVBA(びじゅあるべーっしっく)でしたが、
MQLはC言語に近い独自の言語なので、これから少しずつ勉強しながらプログラム
を作って行きたいとおもいます。

方向性としては、売買タイミング見つけるプログラムです。

【トレンド系】
市場の方向性を判断します。
・移動平均
・一目均衡表
  など

【オシレーター系】
振り子の原理で戻りを判断します。
・RSI
・ストキャスティクス
  など


ちなみに、株は塩漬け期間が長すぎて興味がなくなっちゃいました。。。
日経平均もやっと戻して来たので、資産は精算してFXへ移動です。

あ、あと、株価チャートサイン検索プログラム(エクセル)ですが、時間が
あったら、修正(データ取得先が変わったり、ゴミがあったり)して公開します。
カテゴリ別アーカイブ
記事検索
---ご紹介---

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