0038《Qエンジン》操作事典
[ 1038] 条件表を作る手順

目次へ.. 前頁へ.. 次頁へ..

条件表を作ることは難しいことではありません。一定の手順にしたがって作業すれば、誰でも簡単に条件表を作ることができます。0031 オートマで日経先物用の条件表を作る 0035 「オートマ」で、225銘柄用の条件表を作る でオートマによって条件表を作るやりかたは説明しましたが、実は「トリガー条件表」を決めることが最も重要で、時間がかかります。 本章では
  1. ランダム200銘柄を対象にして、(ランダム200銘柄の結果ファイルはメニューの「アップデート」→「結果ファイルのダウンロード」でダウンロードできます。

  2. 2007年1月〜2016年12月の10年間を手本にして、

  3. 20日間で20%の利益をが出ることを目標にした条件表を作る手順を説明します。

(1)思いつきのトリガー条件表の検証をする

次図のようなトリガーを思いついてNo.361に設定しました。12行を設定していますが、内容は簡単です。
  1. No2.行〜No.7行で当日の株価の値幅(ザラバ高値−ザラバ安値)が当日の終値の何%あったのか(値幅率と呼ぶ)を計算します。「値幅率が2%」以上なら買い。

  2. No.8行目で、過去50日間の最小値は何日目であるかを計算します。最小値から1日目(最小値の翌日)であれば買い。

  3. No.9は当日が陽線であれば買い。
  4. No.10は1日前が陽線であれば買い。
  5. No.11は2日前が陽線であれば買い。
  6. No.12は3日前が陽線であれば買い。
言葉で表せば、3日陰線が続いた後、当日が陽線になった日の値幅が2%以上あって、昨日は50日間の最小値であった、ときに買いマークを出す条件表です。

この思いつきのトリガーの成績はどうなっているのでしょうか? 検証してみます。
  1. ランダム200銘柄を選択して、「新規検証」にいき、No.361を選択し、

  2. 検証期間を決め、「売買共」を指定し(条件表が買いの条件ばかりなので、売買共のときは買いの条件の検証をする)

  3. 「売買ルール」を設定します。
  4. ここでは20日間で20%の利益を出すことを目標としているので、売買ルールは右図のようにします。
「実行」で検証が始まります。
検証リストが表示されたら、「損益経過」をクリック。

「損益経過の指示」の画面が現われるので、次図のような指示をします。
いまの段階(思いつきのトリガー)では、
  1. トレード数は1000回以上欲しい、

  2. 平均利益率は0.5%以上は欲しい。
  3. 勝率は50以上であればよい。

  4. 同じ日に複数の銘柄が買いマークを出しているときは、そのうちの1銘柄だけをトレードする。

    その際に1銘柄を選ぶ基準は「株価が最も高いもの」とする。
のが目標です。
次図は「思いつき陰陽/順」の成績です。
  1. トレード数は556回。 (不足)
  2. 平均利益は+0.73%  (0.5%以上あるのでOK)
  3. 勝率は52.9%   (OK)
この(思いつきのトリガー条件表)をトリガーとして採用するには、トレードが少なすぎます。この段階はスタート点です。ここから局面を絞っていくと次第にトレード数は少なくなります。最後の(完成した条件表)の段階では50回以上のトレードができるようにしたい。

(2)思いつきのトリガー条件表を最適化する

  1. No361「TRG 思いつき陰陽/順」をNo.632に複写し、「TRG 最適化 陰陽/順」というタイトルをつける。

    (これは、No.361「思いつき陰陽/順」を残しておくためです。残す必要がなければ、No.361を直接に最適化してもよい)

  2. ランダム200銘柄を選択して、 「最適化」→「最適条件行にいき、

  3. No.361(またはNo.362)を選択して、「検証期間」を決め、「売買共」を指定する。

  4. 「変化させるパラメータや以上以下の変化の範囲を指定する。この例では、
    @No.8行のパラメータを30 日〜50日の範囲で10ずつ変化させ、
    ANo.7行の以上以下を1〜3で0.2ずつ変化させる、としました。

  5. 「実行」で最適化が始まります。

最適化が終わりました。
  1. 「ソート」で「評価得点」の大きい順に並べ替え、

  2. @トレード数が1000回以上のもの
    A利益率が出来だけ高いもの(できれば1.0%以上のもの)
    B勝率が45%以上のもの、を探すと多くあります。 このうちどれを採用すればよいのでしょうか?

  3. 「評価得点」がよいものは、No.18行の最小日数が(40日間)、当日の値幅率が(2.4%)です。
    「利益率」が高いものは、No.20行の最小日数が(40日間)、当日の値幅率が(2.8%)です。
    「トレード数」が多いものは、No.4行の最小日数が(30日間)、当日の値幅率が(1.6%)です。
    どれを選ぶかです。ここでは「評価得点」が最も高いNo.18行にしました。

  4. No.18行を選択し、「書き換え」でトリガー条件表のパラメータや以上以下の数字を書き換えます。

(3)最適化したトリガー条件表を検証する

  1. ランダム200銘柄を選択して、「新規検証」にいき、最適化を済ませたNo.361を選択し、

  2. 「検証期間」と「売買共」または「買いだけ」を指定して、検証したところ、
    次のよう成績になっていました。(1日1トレードに制限している)

最適化陰陽@ (40日)(2.4%)の場合
トレード数は544回と不足。平均利益率は1.18%でOK、勝率は53.4%でOK。

最適化陰陽A (40日)(2.8%)の場合
トレード数は470回と不足。平均利益率は1.18%でOK、勝率は53.4%でOK。

最適化陰陽B (30日)(1.6%)の場合
トレード数は786回と500回は超えている。平均利益率は0.63%で不足。勝率は52.7%でOK。

トレード数が1000回を超える最適化したトリガー条件表は なかなか見つかりません。思ったような成績がでないときは、最適化をあれこれ試すことが多くなって時間がかかります。

最低限のハードルは、1)トレード数が500回、2)利益率が0.5%です。ここでは最適化陰陽@の、1)トレード数は544回だが、利益率が1.18%と高いほうを採用するか、最適化陰陽Aの、1)トレード数は786回と多いが、利益率は0.63%と低いほうを採用するかの選択を迫られます。

ここでは、最適化陰陽@の、1)トレード数544回、利益率1.18% を選択しました。このトリガー条件表はオートマで局面を絞るとさらに成績は向上するはずです。

(4)オートマで局面を限定するチャートを追加する

トリガー条件表が決まれば、あとはオートマが自動的に条件行を追加してくれます。
  1. ランダム200銘柄を選択して、「オートマ」にいき、

  2. (m基準)を20日間で20%以上と設定し、

  3. 描画用条件表はNo.362(思いつきのNo.361を最適化したもの)

  4. 生成先はNo.365とします。

  5. (最小注目数)は50個として

  6. 「新規実行」。 この後は何もする必要はありません。

  7. No.365にオートマがチャートを追加した条件表が作られました。

    (タイトルはわかりやすい「陰陽/順 20%」に変更した)

作られた条件表の内容は次のものでした。
No.12行までは元のトリガー条件表。No.13以降がオートマが追加したもの。


(5)オートマが作った条件表を検証する

  1. ランダム200銘柄を選択して、「新規検証」にいき、No.237を選択し、

  2. 検証期間や「買いだけ」を指定する。

  3. 売買ルールは(20日で時間切れ)<(+20%の利益で利食い)と設定して

  4. 「実行」。

成績は以下のようでしたこれは売買マークがでた全部を仕掛けたときのものです(1日1トレードの制限はつけていない。全数売買)。@トレード数が111回、A利益率が10.42%、B勝率が79.3%と世よい成績になっています。

「損益経過」で1日に1トレードに制限したときは、次図の成績になります。
  1. トレード数は65回。(全数売買の111回からそう減少していない)
  2. 平均利益率は9.22%とよい。(全数売買の10.42%とあまり変わらない)
  3. 勝率は73.8%。(全数売買の79.3%とほぼ同じ)


(6)オートマが作った条件表の年別成績

2007年1月〜2016年12月までの10年間の各年の成績を見ると次のようでした。

10年間でトレードが最多は2008年の14回。最少は2013年の2回です。トレードが0回の年はなく、だいたい5回程度のトレードが期待できます。

10年間で65回というのは一見少ないように思いますが、利益率が低かったり勝率が悪いトレードを繰り返しても利益はあがりません。1つの条件表で10年間で50回のトレードができるのであれば、別のトリガーを使った条件表をもうひとつ作れば10年間のトレードは100回に近づきます。要はいくつかの条件表を多く揃えておくことです。

以上(1)〜(6)の処理によって条件表ができるわけです。


目次へ.. 前頁へ.. 次頁へ..