ストキャティクスの逆張り(4)::システムトレード完全攻略(エクセル活用術)

システムトレードのトップへ > セルレーダーのヘルプ > 売買式を作ってみよう  >ストキャティクスの逆張り(4)

ストキャティクスの逆張り(4)

逆張り指標の代表選手であるストキャティクスを使ったシステムを作成します。基本は2本線のクロスなので使うのはIF関数と2本線の位置関係を表す不等号です。さらに今回は、75%以上を超えると買われ過ぎ、25%を割り込むと売られ過ぎを表すフィルターもシステムに組み込みます。








解説する前にメニューバー「指標」→「その他の補助指標」→「基本的な売買式」を選択し、選択肢の中から「ストキャティクスによる逆張り」を選んでください。



通常ストキャティクスは3本線の内(%K、%D、SD)の2本線の関係を見て売買の判断を見ます。%Kと%Dの関係を見て売買判断すると売買シグナルは早めにでますが、その分だましも多くなります。逆に%DとSDの関係を見て売買判断すると、売買シグナルが遅い分、だましは減ります。どちらの組み合わせを使うかは好みです。というか市場に合った方を選んでください。今回は%Kと%Dの関係をみて売買判断をしてみます。



為替のためのシステムトレード


図1のAのところで買い、Bで手仕舞います。今回は25%と75%のフィルターも売買式で表す必要があります。これがないと図1のEのようなところでも買いまたは手仕舞いが発動します。



BG34(先頭行)の関数式をクリックして確認してください。


=IF($C34>AL$4,IF(AND(BF33=0,Z33<AA33,Z34>AA34,Z33<AL$2),"買い",""),"")

となっていると思います。

では、BG34(1から5の条件を満たすと「買い」と表示させる)に入っている関数の主要部分の説明です。

1.C列にはC34を先頭に1から順に番号を振っています。行が1行下がるごとに1つづつ増えます。

2.AL4はデータの先頭行部分周辺で誤ったシグナルを出さないようにするための変数が入っているセルです。%Kの計算期間とSDの計算期間を足した数になります。

3.BF列は、「買い」がBG列に表示されてから、「手仕舞い」が表示されるまでは「1」を返します。何もない場合は「0」を返します。よって、BF33=0なら「0の時のみBG列に「買い」を表示させよ」になります。

1から3までの条件は「買い」→「手仕舞い」→「買い」→「手仕舞い」・・・・・と正しくまた、交互に表示さるために必要な構文です。よってどどのような売買式を自作するにしろ1から3の条件文は必要です。これから説明する4と5がストキャティクスの逆張り部分を表す関数式となります。

4.Z列は%Kの値が入っている列です。AA列には%Dの値が入っています。「Z33<AA33」で前日の%Kと%Dの位置関係を表しています。つまり、「Z33<AA33」は前日の%Kが前日の%D以下の状態指しています。そして、「Z34>AA34」は本日の%Kと本日の%Dの位置関係です(数字が1増えて34になっています)。つまり、本日は%Kが%D以上の値になったという意味です。両方で「前日は%Kは%D以下だったが、本日は%Kが%Dを上回った」という意味になります。

注意1:ストキャティクスのクロスの部分も前回のゴールデンクロスのように、本日の%Kと本日の%Dの位置関係を不等式で表すだけでも同じ結果がでることがテスト中に分かりました。混乱させてすいません。つまり、不等式「Z33<AA33」は別にあってもなくてもいいということです。



=IF($C34>AL$4,IF(AND(BF33=0,Z34>AA34,Z33<AL$2),"買い",""),"")

こうゆうことです。

5.Z33<AL$2 のAL2には%Kの下限値(25%)が入っています。ですのでこの「Z33<AL$2」は「前日の%Kが25%以下ならば」というフィルターの役目を表しています。



4と5を合わせると、

「もし前日の%Kが%Dを下回っていて、且つ本日%Kが%Dを上回り、且つ前日の%Kが25%以下の時は「買い」と表示せよ。」

という意味になります。




次に「手仕舞い」の表示をさせる、BH34をクリックして関数式を確認してください。

=IF($C34>AL$4,IF(AND($BF33=1,Z33>AA33,Z34<AA34,Z33>AL$3),"手仕舞い",""),"")

となっていると思います。


BH34(1から4の条件を満たすと「手仕舞い」と表示させる)に入っている関数の主要部分の説明です。


1.C34

2.AL4

3.BF33=1

1から3は「ゴールデンクロスを作る(1)」の中の「手仕舞い」の1から3の条件と全く同じです。

4.Z列は%Kの値が入っている列です。AA列には%Dの値が入っています。「Z33>AA33」は%K>%Dに置き換えられ、「Z34<AA34」は%K<%Dに置き換えることができます。つまり「買い」の時の真逆をしなさいという構文になります。

5.Z33>AL$3のAL3セルには%Kの上限値の75%が入っています。ですのでこの「Z33>AL$3」は「前日の%Kが75%以上ならば」というフィルターの役目を表しています。

4と5を合わせると、

「もし前日の%Kが%Dを上回っていて、且つ本日%Kが%Dを下回り、且つ前日の%Kが75%以上の時は「手仕舞い」と表示せよ。」

という意味になります。

ところでこの「手仕舞い」のシグナルは図1のBで出るのでしょうか?それとも図1のCで出るのでしょうか?Cで「手仕舞い」のシグナルが出れば理想なのですが、実際は図1のBで「手仕舞い」のシグナルが出ます。説明するまでもありませんが、エクセルからすればBもCも全く同じ条件を満たしていることになります。ですので早い方のBの地点でシグナルが出てしまいます。もしBでなくてCでシグナルを出したい場合は「手仕舞い」の関数式にそういった条件を加えることが必要です。ちょっと複雑ですがやり方を説明します。まず、BO列とBP列は予備列になっているので以下の関数式を入れます。



BO列の34行目に以下の関数を挿入し、最終行まで更新してください(「操作」→「更新」→「関数更新」)。



=IF($C34>AL$4,IF(AND(Z33>AA33,Z34<AA34,Z33>AL$3),1,0),0)



よく見てもらうとわかるのですが、「手仕舞い」の売買式から「BF33=1」を取りさった構文とほぼ同じになっています。これを最終行まで更新すると「買い」が発動後に「手仕舞い」の条件がはずれ、4と5の条件を満たすとすぐに「手仕舞い」=1発動されます。



さらにBP列の34行目に以下の関数を挿入してください。



=IF($C34=1,0,IF(BG34="買い",0,IF(BO34=1,BO34+BP33,BP33)))



さっと説明するとBG列に"買い"と表示されると「0」を返しリセット状態にし、買いを起点として表示される「手仕舞い」の数を表示しろという意味の関数式です。



最後にBH列の34行目を以下の関数に書き換えます。



=IF($C34>AL$4,IF(AND($BF33=1,BP34=2),"手仕舞い",""),"")



BP列の数字が2の場合のみ「手仕舞い」を表示しろという意味の関数式です。数字を2から3に変えると3個目のシグナルが有効になります。

以上で図1のCの時に「手仕舞い」をする関数式が完成しました。しかしやってみると分かると思うのですが、今回は図1のCの方がBの時よりパフォーマンスが良さそうなのは明らかですが、他の売買機会も図1のCの方がパフォーマンスが良いとは限りません。売買式を複雑にすればするほどカーブフィットに陥り易いので注意が必要です。



次に「売り」から入る場合の仕掛けの説明ですが、ドテンするだけですので説明は省略します。「ゴールデンクロスを作る(1)」などを参考に自身で確かめてください。


セルレーダー最新版ダウンロードした(^▽^)?

人気ブログランキングへ





1位取れたら未公開プログラム沢山吐き出すので応援のポチ2つしてね(≧ω≦)

投稿者 システムトレーダー壱式 : 2008年05月24日 01:23



トラックバック

このエントリーのトラックバックURL:
http://systemtrader.info/cgi/mt/mt-tb.cgi/62

コメント

コメントしてください




保存しますか?


//-->