今日も「FXトレード勝利の羅針盤」で紹介されていた優位性(エッジ)について検証していきます。
『前日のNY時間が明確な上昇傾向であった場合、 翌日の東京時間など次のNY時間までは 押し目買いが有効になりやすい。』
そして、 『前日のNY時間が明確な下落傾向であった場合、 翌日の東京時間など次のNY時間までは 戻り売りが有効になりやすい』という傾向じゃ。」「知っている人は知っている事じゃが…、 これを知っているトレーダーの一部では、 『前日のNY時間に明確なトレンドが発生していたならば、 翌日のNY時間までは買いか売りかは基本的にはもう決まりで、 あとはタイミングだけの問題だよ。』 などと言う人もいるくらいでのう…。
もちろん、冒頭にお話ししたように反例や反証はあるが 傾向としてのエッジはどうもあるようなのじゃのう…。」
前日のNY時間で大きく動いた場合、翌日は押し目・戻り売りが有効とのこと。
東京時間にカウンター(逆張り)してみる
趣旨は異なりますが「昨日作ったものが、ほぼそのまま利用できる」ので東京オープン(9時)に、前日の日足が大きな陽線であれば売り、陰線であれば買いを仕掛けるプログラムを作ってみました。
int ticket = 0;
if(OrdersTotal()>0 && Hour()>=CloseHour) {
CloseOrder();
} else if(OrdersTotal()==0 && Hour()==OpenHour){
double open = iOpen(NULL, PERIOD_D1, 1);
double close = iClose(NULL, PERIOD_D1, 1);
double diff = MathAbs(open – close);
double size = Ask * barSize;
if(diff > size) {
if(close > open)
ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,””,Magic,0,Red);
else
if(open > close)
ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,””,Magic,0,Blue);
}}}
数分で作りました(笑)
バックテスト実行!
データは昨日投入したAlpariのデータ、ユーロドル、スプレッド1.0。
価格の1%以上の上昇/下降した日足が示現したら東京時間にカウンターを入れます。
・・・良からず。しかし・・・悪からず・・・ですね・・・。
最適化と改良
開始時刻と終了時刻、陽線/陰線の判定を最適化してみました。
時刻は日本時間9時に前日の陽線/陰線が価格の1%を超えていたらカウンターを仕掛けて11時に手仕舞いしています。
案外いいですね。午前中はカウンターが有効のようです。 そして、それ以降は順張りが有効でした。
11時から順張り方向に仕掛け、14時に手仕舞いします。
なお、順張りの場合は価格は0.8%程度の陽線/陰線で仕掛けてもOKです。(勝率はやや下がりますがトレード回数が多くなり、利益が増加します)
この2つを組み合わせてみます。(つまり、11時にドテンする)
なんとなく「簡単に作れそうだから」という理由で作ったシステムが、案外使えそうな雰囲気になっています(笑)
※このような結果になったのはユーロドルのみで、他の通貨ペアでは優位性はみられませんでした。
押し目買い・戻り売りを仕掛ける
それでは押し目買い・戻り売りを仕掛けるロジックを作っていきます。
先ほど、順張りは11時に仕掛けると良いという結果になりましたので11時に仕掛けます。
また、「9時~11時の間に逆方向に動いていること(押し/戻りが発生していること)」も条件とします。
先ほどは14時に手仕舞いしましたが、今回はロンドン市場やNY市場も対象です。とりあえずロンドンフィックス(翌日0時頃)をターゲットにします。
MetaTrader4でプログラミング
仕掛けは先ほどの順張りロジックがそのまま使えます。
「9時以降、戻りが発生しているか」という条件を加えるだけで完成です。
11時に仕掛ける前提であれば1時間足の1本前の終値と2本前の始値を比較すれば良いでしょう。
double hourOpen = iOpen(NULL, PERIOD_H1, 2);
double hourClose = iClose(NULL, PERIOD_H1, 1);
if(diff > Size){
if(close > open && hourClose < hourOpen)
ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,””,Magic,0,Blue);
else
if(open > close && hourOpen < hourClose)
ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,””,Magic,0,Red);
}※太字部分追加
回数は減るだろうと予想していましたが、まるで勝てないとは・・・(--;)
最適化
開始時刻、終了時刻、前日の価格上げ(下げ)幅、それと押し目/戻りを判断する時刻について最適化してみます。
開始時刻は日本時間9時、終了は翌日2時、前日に価格の0.6%以上の動きがあり、かつ朝4時から8時の間に逆方向(押し・戻り)があった場合に押し目買い(戻り売り)を仕掛けます。
PFは1.44。勝率は50%ちょっとですが平均利益が平均損失の1.5倍ほどあるので資産はソコソコ増えました。
調査結果
・前日、価格が1%以上動いた場合、日本時間の朝(朝9時~10時)は逆方向に動くことが多い
・前日、価格が1%以上動いた場合、日本時間の昼以降(11時~14時)は順方向に動くことが多い
・前日、価格が0.6%以上動き、日本時間早朝(4時~8時)の間に逆方向に動いた場合、順方向に動くことが(やや)多い
こんな感じでしょうか。 うーん・・・このロジックだけでトレードするのは無理がありそうですね・・・
しかし、他の手法と合わせる・・・たとえばですがピボットやフィボナッチ、サポートライン・レジスタンスラインに到達した場合に上記の結果も加味することで勝率や利益が増加する・・・かもしれません。
おまけ(実トレード)
昨日、1%以上の下げが発生しました。9時に大きく上げ(ドル安)になり、10時過ぎにその戻りが発生していたので「調査した結果では11時まで待つべき・・ですが、ここは仕掛けてみましょうか?」と戻り売りを仕掛けてみました。 さて・・・どうなるのでしょうか?(笑)
まずは14時に手仕舞いするかどうか考えます。
【11時】ほとんど動きなし。 調査結果どおり11時に仕掛けても問題はなかったようです(苦笑)
【14時】まずは節目となる時間です。損を抱えてます(笑)考える間もなく損切りです!(笑)
金曜日ですから売り方の手仕舞いもあったのか? もし勝っていたら「なかなか有効かもしれません!」とか書いてドヤ顔で終われたのですが。
締まらない終わり方となりました。 最後に本日のその後のチャートも掲載しておきます。(もし損切りせずに続けていたらどうなっていたか?)
はい。さっさと切って正解でした(苦笑) それでは、また・・・。
※検証作業は一休みしてEAの調整をするので、更新に間が空くと思います。
コメント
こんばんは。
EAを作っていて思うんですが「これはいいアイディアだ!」と思ってもEA化してみるとそうでもなかったり、そもそもEA化自体が不可能だったりでなんとも難しいですね。
今も自分のEAに「あるインジケータの直近の山と谷の値を求める」というロジックを組み込もうとしてるんですが「?????????」という状態です(苦笑)
目視では簡単でもEAとなると右往左往するばかりでゴールは遠そうです(苦笑)
はい、基本的にテクニカル分析は「数値を可視化して人が目で見て判断できる」ように発展してきたものだと思うのですが、コンピュータは目を持っていないので「目で判断する」ようなものをプログラミングしようとすると非常に難易度が高くなりますね・・・。
僕は難しそうだなと思ったら(あまり時間をかけたくないので)諦めてしまいます(笑)
そうですね。
そこに裁量トレーダーの本領発揮という余地が残るんだと思います(笑)