あくまでも過去の事例です。 米国株であっても、 25年におよぶドローダウンが発生したことがある ということは 頭の片隅に置いておくべきだと思います。
上記アイデアを対数目盛にしています。 対数でみると、少しペースが鈍化しているように見えます。 コードは以下のプライベートスクリプトをご覧ください。
依然、裏ではZigZagの研究中ですが、 こちらではシンプルなVWAPのストラテジーを試してみたいと思います。 今、考えている基本ロジックは以下のような感じです。 ・VWAPとcloseのクロスで途転 ・1日の終わりに利確 ここで問題になるのは、 VWAPとcloseの乖離が大きいときです。 クロスしたからといって、 乖離が大きい状態でエントリーしてしまうと 反対に動いたときの損切りが大きくなってしまいます。 ・乖離が大きいときはお休みする ・乖離が出やすい時間帯を避ける などの回避策が必要かなと考えています。 何にしてもまずは形にして、 少しずつ改善していきたいと思います。
ここからは、TradingViewでは投稿できない範囲の話になる(TradingViewでは5分足の投稿を掲載できず、検証も2ヶ月分だけです)ので、テキストのみになります。ご了承くださいm(_ _)m さて、TradingViewで作成したロジックをPythonで精査しています。 TradingViewはロジックを作成するのには最適です。 チャートとの連携がスムーズで動作も早く、プログラムも簡易なため、素早くロジックを試すことができます。 しかし、5分足の検証は直近の2ヶ月程度しか(データ量を考えれば当然ですが)行なうことができません。なので、精査していくにはPythonやMT4などを使うしかないのですね。 で、精査してみて分かったことがいくつかあります。 まず、depth:6...
ZigZagストラテジーは初めて挑戦したロジックで、 確認したい(検証したい)ことが尽きません。 ロジックの精査に満足したところで 自動売買の実装に取り掛かろうと思いますが、 もうちょっと時間がかかそうです。 さて。 今日は、 「足種をなぜ5分足にしようと考えたのか」 について、少しだけ書いてみようと思います。 まず、私は、裁量トレードも自動売買も、 どちらも良いものであると考えているタイプの人間です。 どちらも、ちゃんと利益を出している人がいますし、 得意な方をそれなりに取り組めば成果が出ると考えています。 で、この2つのトレード方法ですが、 私の中での位置づけは、ざっくり次のような感じです。 < 裁量トレード...
さて、バックテストのチューニングというと 気になるのはカーブフィッティング(過剰最適化)ですね。 過剰に最適化してしまったバックテストは、 本番で再現することができません。 バックテストでは良い結果だったのに、 本番ではいつまでたってもマイナスのまま なんていうことは、 割とよくある話です。 なぜそんなことが起こるかというと、 ・その銘柄 ・その足種 ・その期間(特有の値動き) に最適化しているから なのですね。 なので、 銘柄が変わる、足種が変わる、期間が変わると 途端にワークしなくなってしまいます。 これがカーブフィッティング(過剰最適化)です。 では、どうすれば カーブフィッティングを防ぐことができるのでしょうか? 答えは意外とシンプルで、 ・あらゆる銘柄でワークする ・あらゆる足種でワークする...
前回までで、ストラテジーはほぼ完成です。 ここからはチューニングを行っていきます。 カーブフィッティングに注意しながら、 良い設定を探していく作業です。 実際にドル円の30分足でチューニングしてみたので、 今回は、その設定値を共有したいと思います。 ///////////////// ドル円 30分足...
今日は、以下の機能を実装してみました。 ①.損切りの損失を資金のN%とする取引量を算出 ②.レバレッジを考慮した取引量を算出 ③.②を上限として①の取引量でトレードする まず、①の算出ですが、 このストラテジーは損切り幅が明確なので、 以下の計算式で算出することができます。 ///////////////// // 損切り幅を算出 range = abs( close - target01_sl ) //「1トレードに当てる資金 / 損切り幅」で取引量を算出 // 同時に、round( 取引量 /lot ) * lot で取引単位(1000通貨等)に四捨五入してる amount = round( unit_value / range / lot ) *...
今回は、以下の機能を実装しました。 ・日付を指定してテスト期間を制限する機能 ・あまりにも小さなZigZagである場合のエントリーを制限する機能 どちらも設定画面から調整することができます。 小さなZigZagの判断にはATRを用いました。 初期値は「1」としていますが、これは、 「損切りまでにとるリスクが ATRの1倍よりも小さい場合に エントリーをしない」 ということにしています。 0.5~1くらいがちょうど良いと感じています。 来週月曜日は、 ・損切りの損失を資金の1%とする ・レバレッジを考慮した取引量 この2点を実装していきたいと思います。 コーディングにあまり時間を割けないので 進みが遅いですが、気長にお付き合いくださいm(_ _)m ※...
前回までのコードで、 上位足のZigZagではPivotの確定が遅く ・利益の上がるストラテジーはできない ・ZigZagの良さが活かされない ・フィボナッチの良さが活かされない ということがわかりました。 "ZigZagやフィボナッチの良さ" とは、 "価格にダイレクトである"...
バックテストをする上で、 Security関数は使わないようにしています。 理由はいくつかあります。 ・Pythonで再現するのに不都合がある ("なし" で作成しておいた方がPythonに書き換えやすい) ・予期しない挙動が起こることがある (先物の週明けに上位足の価格が正常に取得できない等) しかし、やはりコードは長くなります。 ※ コピペする場合は以下の変更を行ってください [](全角の角括弧)→(半角の角括弧) (全角スペース)→(半角スペース) ===== //@version=4 strategy( title='ZigZag PA Strategy 勉強中', shorttitle='S', overlay=true, pyramiding=0, initial_capital=100000...
以前みつけた高勝率のzigzagストラテジーを再現する試みです。 Security関数なしで、ロジックを再現してみました。 案の定、上位足1本分、 有利なバックテストになっていました。 すこし残念ですが、 zigzagやフィボナッチを用いたロジックは面白いので、 もう少し、今あるアイデアを試していきたいと思います。 コードは鬼のように長くなってきたので、 公開するか迷っています。。 今回は、試しになしにしてみます。
以前みつけた高勝率のzigzagストラテジーを再現する試みです。 とりあえず、フィボナッチの追加を行ってみました。 他にも少し手を加えています。 ・line.newを削除 ・コードの整理 と、ここまでやってみたは良いものの、 「変動率を考慮したジグザグ」よりも 「上位足のジグザグ」の方が良い気がしてきました。 なので、security関数を用いない 「上位足のジグザグ」を実装したいと思います。 ※ コピペする場合は以下の変更を行ってください [](全角の角括弧)→(半角の角括弧) (全角スペース)→(半角スペース) ===== //@version=4 study("Zig Zag 勉強中", overlay=true) dev_threshold = input(title="Deviation...
以前みつけた高勝率のzigzagストラテジーを再現する試みです。 ストラテジーに必要な価格を 変数に格納してプロットすることもできました。 このzigzagは変動率をもとに頂点の判断を行っているので、 赤矢印のように頂点の位置がずれていきます。 元々のzigzagは、 この対処としてline.newで実装しているようです。 plotだとどうしても (過去の値を修正することができないので) まっすぐの線にすることはできません。 見た目はカッコ悪いですが、 ストラテジーにする上では全く問題ないので、 このまま進めていきたいと思います。 次回は、フィボナッチの比率で 横線を描画する機能を追加したいと思います。 ===== //@version=4 study("Zig Zag 勉強中",...
以前みつけた高勝率のzigzagストラテジーを再現する試みです。 まずは、zigzagインジケーターを作成します。 作成とは言っても、 すでにあるものを理解する作業。お勉強です。 モデルになるzigzagストラテジーは、 非常にシンプルなロジックのzigzagでした。 ただし、上の時間軸のzigzagを表示するというもの。 このアプローチでも良いのですが、 tradingViewやmt4で用いられているzigzagを ちゃんと理解してすべてを検証できる状態をつくりたいと思います。 コツコツと地道にすすめていく予定です。 けっこう時間がかかると思いますが、気長にお付き合いください。 ※...