本連載は、まだ取引を開始して間もない方や、現在勉強中だという方を対象に、毎回、ある1つのテクニカル指標をピックアップし、知識編・実践編の2回に分けてご紹介しています。実践編では、知識編でご紹介したテクニカル指標を売買ルールとして用いて、システムトレードのプログラミングに挑戦していきます。
なお、本連載内で使用されるプログラミングのプラットホームには、ひまわり証券が提供しているシステムトレード用チャートツール「トレードシグナル」を使用します。
前回お届けした<知識編>では、買われ過ぎ・売られ過ぎを判断するオシレーター系指標の代表格「ストキャスティクス」をご紹介いたしました。このストキャスティクス指標を構成する3つのラインのうち、遅行型である2本のラインで構成された『スロー・ストキャスティクス』を対象として、[ゴールデンクロス(短期線が長期線を上抜けたとき)で買い・デッドクロス(短期線が長期線を下抜けたとき)で売り]となる売買ルールの検証プログラムを作製していきます。
■プログラミング内容
[ラインの構築]
ストキャスティクスは、3つのラインから2種類の指標を作成します。3つのラインは、短期(%K)、中期(%D)、長期(SD)と考えてください。今回の実践編で作製する『スロー・ストキャスティクス』は、この中期と長期の2本のラインを用いて作製します。
%D(中期) = aのn’日間の総和 ÷ bのn’日間の総和 × 100
a:当日終値 - 直近n日間の最安値
b:直近n日間の最高値 - 直近n日間の最安値
… %Dラインを構成するn日を[9日]、n’日を[3日]と任意に設定
SD(長期) = %Dのn’’日移動平均
… SDラインを構成するn’’日を[3日]と任意に設定
ストキャスティクスは、0~100%の値を示し、通常30%以下が売られ過ぎ、70%以上が買われ過ぎの水準として判断されます。一般的な手法としては、この水準の中で短期線が長期線を上から下にクロスしたら売り、短期線が長期線を下から上にクロスしたら買いとなります。
≪スロー・ストキャスティクス≫
買いシグナル …30%以下に達した後、ゴールデンクロス(短期線が長期線を上抜けたとき) 売りシグナル …70%以上に達した後、デッドクロス(短期線が長期線を下抜けたとき)
■サンプル・プログラム
{① プログラムの概要}
Meta:
SubChart( True ); //サブチャートでデータを表示させるための設定です。
//売買タイミングが理解し易くなるよう設定しております。
{② プログラム内で使用される変数の定義}
Variables:
takane, yasune, Value1, Value2, SummRange, SummPos, Raw, Quick, Slow;
//各名称はある条件のもと、任意に設定可能です。
{③ ストキャスティクス作製プログラム}
takane = HighestFC( High[0], 9 ); // 9日間の最高値
yasune = LowestFC ( Low[0] , 9 ); // 9日間の最安値
Value1 = Close - yasune; // =A(当日終値-n日間の最安値)
Value2 = takane - yasune; // =B(n日間の最高値-n日間の最安値)
SummPos = SummationFC( Value1, 3 ); // Aの3日間の総和
SummRange = SummationFC( Value2, 3 ); // Bの3日間の総和
If Value2 <> 0 Then
Raw = 100 * Value1 / Value2; // => %Kライン
If SummRange <> 0 Then
Quick = 100 * SummPos / SummRange; // => %Dライン
Slow = AverageFC( Quick, 3 ); // => SDライン
DrawLine( Raw,"%K",StyleSolid,1); //各ラインを描画
DrawLine( Quick,"%D",StyleSolid,1);
DrawLine( Slow,"SD",StyleSolid,1);
DrawLine( 100, "Upper ",styledot,3,red);
DrawLine( 70, "Upper Zone",styledot,1,red);
DrawLine( 30, "Lower Zone",styledot,1,red);
DrawLine( 0, "Lower",styledot,3,red);
{④ 売買条件の設定(スロー・ストキャスティクス注文の場合)}
//%DとSDの両方が70以上だったとき、%DがSDを上から下にクロスした場合は売り注文
If Quick >= 70 and Slow >= 70 then
If Quick Crosses Under Slow Then
Short("売") 1 Contracts this Bar on close;
//%DとSDの両方が30以下だったとき、%DがSDを下から上にクロスした場合は買い注文
If Quick <= 30 and Slow <= 30 then
If Quick Crosses Over Slow Then
Buy("買") 1 Contracts this Bar on close;
//****≪ちょっと補足≫****
//* 今回作製した「スロー・ストキャスティクス」のプログラミングでは、
//* 「ファスト・ストキャスティクス」にも対応できるよう、%Kラインも作製しています。
//* ④売買条件の設定で %D→%K、SD→%D とすることで変更することが出来ます。
//* また、売買条件である30%以下・70%以上というフィルタを、20%以下・80%以上など、
//* 条件を狭めたり広めたりして検証を行ってみると新たな発見があるかもしれません!
※ここで記載のプログラムは過去データによる検証用として書かれています。実際の自動売買用プログラムとしては、口座やツールの仕様上、このままではお使いいただけません。
※さらに詳しいプログラミング言語「エキーラ」の解説ガイドは、こちら
■検証プログラム適用後(スロー・ストキャスティクス)
参考URL
― 第6回 ストキャスティクス 編 おわり―