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

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

早朝窓開けでポジション、閉めたらクローズ

株では毎日起こりえる現象ですが、FXでは月曜日の早朝がほとんど。
しかも、業者によって時間が異なるので今までプログラムを作る気無かったのですが、
チョット試しに。

【パラメーター】
差:何パーセントの大きさの窓かを指定します
ペア:無視して下さい。表示中のペアしか対応していません
lot:ロット数
最長維持時間:例えば、5と入力すれば窓開けが発生して5時間後に強制Closeします


【ダウンロード】
madoake.ex4



テストが不十分です。
必ずリアルアカウントではなく、デモアカウントで行って下さい。

再開

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

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

【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年からのテストではプラスと言う結果になっているのに。

株価チャートサイン 検索プログラム使い方

では、実際にプログラムを動かす為の説明です。
エクセル2007で説明します。

STEP1:ダウンロード
ダウンロード chartsign.txt

デスクトップとか分かりやすい場所に保存

STEP2:エクセルにプログラムを書き込む(コピー)
.┘セルの隠れタブを表示
ex1

エクセルのオプションで赤丸の場所をチェック

◆岾発」タブは表示された?
ex2

されていれば、選択して、「VisualBasic]を押す

ダウンロードしたchartsign.txtをコピー
tx1

テキストファイルとかで開いて、CTL+aを押すと全て選択されるので、編集からコピーを選ぶ

ぅ┘セルに戻ってペースト モジュールの作成
ex3

VBAProjectの上で右クリックして、「標準モジュール」を追加

ゥ┘セルに戻ってペースト
ex7

まず、Module1をダブルクリックして、

ex4

貼り付ける


SETP3:実行
.┘セルのシートにもどって、プログラムを実行(シートの追加)
ex5

今度はマクロをクリックして、addwsを選択後、実行ボタンを押す。
押すと、シートが増えます。

▲┘セルのシートにもどって、プログラムを実行(検索)
「銘柄」ってシートがあるので、そこに銘柄コードを「半角英数字」で好きなだけAの列に登録。
空白の行は入れてはだめ。必ず上から(1行めから)隙間なく登録する
ex6

マクロをクリックして、今度はallstartをクリックして実行ボタンを押すと検索が始まる


ネットの通信速度が遅い環境だと時間が掛かるので注意。
それと、銘柄コードを沢山登録すると数時間かかりますからね。

株価チャートサイン 検索プログラム公開

公開って言っても、ダウンロードして下さいね。
ダウンロード chartsign.txt

テキストファイルです。
マクロ入りのエクセルファイルは「ウィルスだぁ!」って多分ダウンロードさえも出来ないと思うので。

■プログラムに付いて説明
【下落窓空け】
前日の底値より当日の高値が低く、前日の終値より当日の終値が10%以上下落した。

【上昇窓空け】
前日の高値より当日の安値が高く、前日の終値より当日の終値が10%以上上昇した。

【陽線の包み】
前日が陰線であり、前日の底値より当日の始値の方が低く、前日の高値より当日の終値の方が高い。

【陰線の包み】
前日が陽線であり、前日の底値より当日の終値の方が低く、前日の高値より当日の始値の方が高い。

【下落三空】
3回連続で窓をあけ、下落した。

【上昇三空】
3回連続で窓をあけ、上昇した。

【上離れ十字】
始値と終値が同じで、高値が終値より高く、底値が終値より低く、前日の終値より当日の終値が高い。

【下離れ十字】
始値と終値が同じで、高値が終値より高く、底値が終値より低く、前日の終値より当日の終値が低い。

【出来高急増】
出来高が前日の5倍以上。

【三川】
前々日が陰線で、前日は陽線だが、前々日より終値が低く、当日は陽線で、前日の始値より当日の始値の方が高く、前日の終値より当日の終値が高い

登録した銘柄コードの時系列データをweb上からダウンロードして判定します。
銘柄シートにコードを登録したらマクロ「allstart」を実行すれば各シートに表示されます。

RSI いろいろな判定でアラート

まず、売買サインの判定を増やしてみた。
・2本のRSIの乖離をみてアラート
・指定した基準でRSIがクロスしたらアラート

バックテストをするのに、クローズ(決済)方法を3種類指定出来るようにした。
・ある基準まで来たらクローズ
・N本過ぎたらクローズ
・利益、損切りの値を指定する

ダウンロード rsi2.ex4

パラメータの説明(Expert Propertiesで設定してください)
prmRsi:RSIの周期(デフォルト14)
prmRsi2:RSIの周期(デフォルト42)
prmHi :買われすぎを判断する値(デフォルト70)
prmLo :売られ過ぎを判断する値(デフォルト30)
sigCase:シグナル判断方法 
  0:prmHiを越したか、又は、prmLoより下げた
  1:prmHiを越した後、反転したか、又は、prmLoを下回り、反転した
  2:prmHiを越した後、prmHiより戻した、又はprmLoを下回った後、pmrLoから戻した
  3:2本のRSIの差をみてアラート
    prmRsiとprmRsi2で2本を指定、短期が上の時、prmHiで上の差、短期が下の時pmrLoで下の差を指定
  4:ある基準でRSIがクロス
    prmRsiとprmRsi2で2本を指定、prmHi以上か、prmLo以下かで判定する
sigClose
  0:ある基準まで来たらクローズ
  1:N本過ぎたらクローズ
  2:利益、損切りしてい
  
prmClose:クローズする時に使う値
  sigCloseが0:50を基準にそのプラマイする値
     例えば10だとすると、longを入れてRSIが40になったらクローズ
  sigCloseが1:クローズする時刻を指定する値
     例えば2だと、15分足でテストしている場合、30分後の足でクローズ
  sigCloseが2:動き幅を指定してクローズ
     例えば30にすると、3pips動いたらクローズ
     
eaOn :バックテストをするときには1を指定


かなりややこしい。
テスト方法もたくさんあって、全てを確認していない。

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 移動平均 長期線を入れたサイン◆_擦鳴る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回のトレードでマイナスになり、終了。


次回は移動平均以外で新しい関数に挑戦です。
カテゴリ別アーカイブ
記事検索
---ご紹介---

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