連続して安値を更新したから、そろそろ株価が上がるぞ!
連続して高値を更新したから、そろそろ株価が下落するぞ!
そんな逆張り好きなあなたは必見です。
安値が連続して○△回続いたときに、エントリーすれば利益が出るのか?
またはその逆は?
トレードステーションが教えてくれます。
この記事は連載です。 連載最初の記事はこちら。 ⇒ https://tradestation.life/blog/learning-easylanguage1/;
連載を続けてご覧の方は 目次 3 からご覧ください。
株式投資をするうえで、現在最強のトレードツールは マネックス証券の トレードステーション です。(個人評価)
その、トレードステーションを自由自在に操るには、イージーランゲージ[EasyLanguage]の知識が必要です。
イージーランゲージ[EasyLanguage]?
イージーランゲージ[EasyLanguage]はプログラム言語
プログラム言語!? 「そんなの出来るはずない」 「聞いただけで鳥肌が立つ」と思う方が大半ですよね。
EasyLanguageとは?
トレードステーション上のほぼ全てのアクションは、EasyLanguageという独自の言語で構成されます。”Easy”と名付けられている通り、初歩的な英文で記述される非常にシンプルなプログラム言語になります。
例えば、移動平均線がゴールデンクロスした場合に買い注文を出すプログラムは、以下の一文で済むほどシンプルです。
”If FastAvg crosses over SlowAvg then Buy next bar at market ”
出所:https://info.monex.co.jp/tradestation/features/other/ マネックス証券の機能紹介ページ
簡単なんです。だって”Easy”って名前だから。。。。
イージーランゲージ[EasyLanguage]を学ぶには
簡単と言っても、EasyLanguageはプログラム言語です。
しっかり学びたい方におすすめなのが、マネックス証券の公開しているマニュアル
EasyLanguage ホームスタディコース(ガイドブック) です。
https://info.monex.co.jp/tradestation-support/manual.html#01; こちらのページでもらえます。
このブログでは、「EasyLanguage ホームスタディコース」の演習問題を実際に操作しながら解いてゆく、過程を紹介したいと思います。
事象の発生回数をカウントする
変数を使用して事象の発生回数をカウントすることができます。
条件式が真の場合、変数に 1を足して変数の値を増加させています。
偽の場合には変数 に 0を入れて発生回数をリセットしています。Vars: UpCount(0);
If Close > Close[1] then
UpCount = UpCount + 1
else
UpCount = 0;つまり、UpCount 変数は終値が 2足以上連続上昇している場合に、その連続数を格納 しています。
連続上昇が途切れると UpCount 変数には 0が代入され、カウントを始めからやり直します。
出所:Easy Languageホームスタディコース P117
練習問題: *34 高値と安値の更
◇学習の目的: 事象の発生回数をカウントする変数とビルトインストップを使用するスト ラテジーを書く。
◇詳細: 安値の連続下落回数がインプットの LowsToBuy で設定した数以上になったとき 買い指値を発注、
高値の連続上昇回数がインプットの HighsToSell で設定した数以 上になったとき売りの指値注文を発注する。
指値の価格はインプットの Pts で設定し たポイント分を、現在の足の終値の上下に+/-して置く。
ビルトインストップの利益確 定注文の利益額を ProfTgt で、損切り注文の損切り額を StopLoss でインプット宣言する。#34 Trade_Highs Lows という名前で新規にストラテジーを作成してください。
上記での ストラテジーの詳細から、複数回高値または安値が更新したときに、それぞれ売りまたは買いを行う、
このストラテジーは典型的な逆張り型であることが分かります。
出所:Easy Languageホームスタディコース P122
EasyLanguage開発環境(エディタ)にコードを書き込みます
※EasyLanguage開発環境を起動させる方法は、この連載1のページ中頃をご覧ください。
ファイル名は #34 Trade_Highs Lows という名前で新規にストラテジーを作成します。
Easy Language開発環境を開き、 ファイル ー 新規作成 ー ストラテジー で新規ストラテジーを作成します。
エディターの準備が出来たら、下のプログラムコードを打ち込んでください。
(コードをコピーして貼り付けてもOK)
プログラムコードの中身はこちら===
Input: LowsToBuy(2), HighsToSell(2), Pts(.02), ProfTgt(50), StopLoss(50);
Var: HiCount(0), LoCount(0);
If Low < Low[1] then
LoCount = LoCount + 1
else
LoCount = 0;
If High > High[1] then
HiCount = HiCount + 1
else HiCount = 0;
If LoCount >= LowsToBuy then
Buy next bar at close of this bar – Pts limit;
If HiCount >= HighsToSell then
SellShort next bar at close of this bar + Pts limit;
SetStopPosition;
SetProfitTarget(ProfTgt);
SetStopLoss(StopLoss);
プログラムコードここまで===
スポンサーリンク
貼り付けまたは、書き込みが終わったら、プログラムコードに間違いが無いか、チエックするボタンを押して確認します。(いつものやつですね)
0エラー、0警告ならOK。
誤りがあれば修正し、チエックするボタンを再度押します。
プログラムコードの意味
概要
何回連続したら発注するか、インプットの LowsToBuy と HighsToSell で自由に回数 を設定してください。
初期設定値は 2です。指値の価格はインプットの Pts で設定し たポイント分を、現在の足の終値の上下に+/-して置きます。
初期設定値は.02です。最後にインプットの ProfTgt と StopLoss でビルトインストップの利益確定と損切りを それぞれ初期値 50で設定します。
ビルトインストップはポジション全体の数量を基準にして計算されます。出所:Easy Languageホームスタディコース P112
Input: LowsToBuy(2), HighsToSell(2), Pts(.02), ProfTgt(50), StopLoss(50);
インプット宣言文で初期値を指定して宣言しています。
インプット名が LowsToBuy 初期値は 2
「何回連続して下落したら発注するか」のインプットです。
インプット名が HighsToSell 初期値は 2
「何回連続して上昇したら発注するか」のインプットです。
インプット名が Pts 初期値は 0.02
指し値価格の設定です。
今回のストラテジでは、終値に Pts を +- しています。
インプット名が ProfTgt 初期値は 50
ビルトインストップの利益確定を指定するインプットです。
インプット名が StopLoss 初期値は 50
ビルトインストップの損切りを指定するインプットです。
Var: HiCount(0), LoCount(0);
変数宣言文で初期値を指定して宣言しています。
変数名が HiCount 初期値は 0 です。 (連続上昇をカウント)
変数名が LoCount(0) 初期値は 0 です。 (連続下降をカウント)
If Low < Low[1] then
連続下降をカウントする条件判断です。
Low は 現在のローソク足の安値。
Low[1] は 一つ前のローソク足の安値です。
今の安値 が 一つ前の安値より低ければ then 以降のプログラムを実行します。
LoCount = LoCount + 1
上の条件判断が 真 の場合 連続下降をカウントする LoCount 変数に 1 を 加算します。
LoCount = 0;
上の条件判断が 偽 の場合 連続下降をカウントする LoCount 変数に ゼロ を代入しリセットします。
If High > High[1] then
連続上昇をカウントする条件判断です。
High は 現在のローソク足の高値。
High[1] は 一つ前のローソク足の高値です。
今の高値 が 一つ前の高値より高ければ then 以降のプログラムを実行します。
HiCount = HiCount + 1
上の条件判断が 真 の場合 連続上昇をカウントする HiCount 変数に 1 を 加算します。
HiCount = 0;
上の条件判断が 偽 の場合 連続上昇をカウントする DownCount変数に ゼロ を代入しリセットします。
If LoCount >= LowsToBuy then
連続下降の回数が、 LowsToBuy で指定した回数よりも大きい場合、 then 以降のプログラムを実行します。
Buy next bar at close of this bar – Pts limit;
Buy next bar 次の足の始値で買います。
at close of this bar – Pts limit;
今のローソク足の終値から Pts を引いた価格で 指し値注文を出します。
If HiCount >= HighsToSell then
連続上昇の回数が、 HighsToSell で指定した回数よりも大きい場合、 then 以降のプログラムを実行します。
SellShort next bar at close of this bar + Pts limit;
SellShort next bar 次の足の始値で売ります。
at close of this bar + Pts limit;
今のローソク足の終値に Pts を加えた価格で 指し値注文を出します。
SetStopPosition;
ビルトインストップの計算をポジション単位にするか、株数単位にするか設定する予約語です。
SetStopPosition – ポジション全体に対して計算
SetStopShare or SetStopContract – 株数に対して計算
※初期設定は SetStopPosition です。
SetProfitTarget(ProfTgt);
ビルトインストップの利益確定を指定します。
SetStopLoss(StopLoss);
ビルトインストップのストップロスを指定します。
チャートにストラテジを挿入します
ストラテジの検証後、チャート上で右クリック。
プロパティを選択します。
チャートの上にマウスポインターを置き、右クリック ストラテジーを挿入 をクリック
[ストラテジーを挿入] ウインドウが開きます。
今回作成したプロクラム #34 Trade_Highs Lows を選んで OK ボタンを押します。
チャート上に エントリーポイント と エクジットポイントが表示されます。
損益の確認
この逆張り戦略で利益が出るのか?
トヨタ自動車株で見てみましょう。
ストラテジパフォーマンスレポート
トレードステーションでは、簡単に投資戦略(ストラテジー)の評価が出来ます。
「表示」ー「ストラテジパフォーマンスレポート」
これはパフォーマンスグラフです。
中盤までは、利益が積み上がっていますが、後半は大きく負けていて結局マイナスの損益です。
「なぁんだ。儲からないんじゃん!」
そう思ったあなた。
まだ決めつけるのは早いですよ。
トレードステーションには、投資戦略(ストラテジ)のパラメーターを自動で変化させる「最適化」という機能があります。
スポンサーリンク
最適化
さっそくやってみましょう。
チャート上でマウスを右クリック。
「ストラテジーの設定」をクリック。
「設定」ー「入力タブ」の LowsToBuy の値を選択します。
「最適化」ボタンを押すと、 最適化する数値を入力する画面が現れます。
LowsToBuy は 何回連続して下落したときに、逆張りエントリーするかを指定する値なので、終了に10を入力して OK ボタンを押します。
※LowsToBuy の値を 1から 10まで 1ずつ増やして いちばん利益がでる値を探してくれます。
すると、 「分析テクニックとストラテジーの設定」ウインドウに 「最適化ボタン」が現れますので、 クリックします。
私の環境では数秒で最適化が終了します。
ストラテジパフォーマンスレポート を 見てみましょう。
「表示」ー「ストラテジパフォーマンスレポート」でしたね。
どうでしょうか。
損益マイナスには、なっていませんが満足出来ませんね。
先ほどは、買いエントリーのパラメーター LowsToBuy を最適化しましたので、
売りエントリーのパラメーター HighsToSell も最適化してみましょう。
手順は先ほどと同じです。
HighsToSell の値も 10まで 計算させましょう。
結果はこちら。
見た目はかなり良くなりましたね。
さらに別のパラメーターも最適化してみました。
※このトレード戦略(ストラテジ)そのまま実トレードに適応しないでください。
パフォーマンスグラフに、手数料やスリップページは考慮されていません。
過剰最適化されている可能性があります。
投資はご自分の判断でお願いします。
まとめ
ある程度出来高のある株価の値動きで唯一確実なのは、
「上がったり、下がったりする」事です。
このことを否定する人は居ないでしょう。
この株価の上下を拾えれば、値動きの少ない相場でも利益を得ることができます。
その反面、大きなトレンドが現れている場面では、逆張り戦略は不利になります。
トレンドフォロー戦略 と 逆張り戦略。
どちらが良いのでしょうか?
私は、どちらかの優位性を考えるより、両方のベストミックスを探すべきでは?
このように考えています。
ミックスの方法は、別の機会に紹介します。
お疲れ様でした。
スポンサーリンク