・チャネルブレイクアウトで買い/売りの期間を別々に設定できるようにする次回の記事「pythonで最適なパラメーターを自動的に探索する」での練習にあたって、まず先に以下のようなパラメーターを自由に設定できるようにドンチャン・ブレイクアウトのコードを改良しておきましょう。使う今回の記事では、これらのパラメーターを設定できるようにコードを修正する方法を解説し、最後に1時間足で買い(30期間)、売り(20期間)、判定基準(終値)でのバックテスト結果を見てみましょう。Pythonコード先に改良版のコード全体を記します。"件のローソク足データで検証")print("--------------------------")backtest(flag)これでドンチャン・ブレイクアウトの自動売買ロジックに、上値のブレイクアウトと下値のブレイクアウトとで異なる期間を設定できるようになりました。ブレイクアウトの判定基準について、高値・安値を使うことも、終値を使うこともできるようになりました。今までの「最もシンプルなドンチャン・ブレイクアウト」では、買い・売りともに同じ期間(例えば30期間)を使っていました。そのため、ブレイクアウトを判定する際に、比較に使うための過去のローソク足データは、配列に30個ぴったり用意しておけばOKでした。買い・売りで別々の期間を設定する場合は、そうはいきません。そこで、ドンチャンブレイクアウトを判定するための関数を以下のように改良します。"price":0}ここでは、過去のローソク足データ(last_data)を30個丁度にキープするのではなく、どんどん溜めていって、後ろから欲しい数だけを取り出すようにしています。後ろから20コを取り出すようにしています。ここで新しく使っているのが、スライス(:)という記述方法です。スライスとはスライスは、配列データの範囲を指定したり、pandasの表データで行や列の範囲を指定するときに、非常に便利な記述方法です。以下のように書くことで、配列や表(行・列)の範囲を指定することができます。後ろから3番目~最後までプログラミングの世界では、先頭は0番目から数えるので、指定した数字から1つズレる点に注意してください。7]そのため、上値ブレイクアウトの判定に必要な期間分のローソク足データは、以下のように指定することができます。]この知識を使うと、ブレイクアウトの判定に必要な期間のデータを取り出しその中から最大値を抽出する、というコードを以下の1行で書くことができます。])2.ブレイクアウトの判定基準に「終値」を使えるようにするこれは簡単ですね。指定していた部分を変数にすればいいだけです。最後にメイン処理のWhile文ループの中身を修正します。両方の期間分を超えるまでデータを蓄積します。変更後(削除)またスライスを使うことで、過去のローソク足データをぴったりn個にキープしておく必要がなくなったので、上記の行は削除しておきます。これで完成です!あとはログファイルの出力が「直近の安値が~」「直近の高値が~」になっているので、そこは各自で修正しておいてください。試しに1時間足で、買いエントリーは30期間の最高値ブレイクアウト、売りエントリーは20期間の最安値ブレイクアウト、各ブレイクアウトの判定には終値を使う、という場合の成績を見てみましょう。ここでの月間ドローダウンは、その月に経験している継続中の最大ドローダウンのことです。その月だけのドローダウンを計算しているわけではありません。このように、同じドンチャン・ブレイクアウトのロジックでも、買い判定の期間、売り判定の期間、ブレイクアウトの判定を高値(安値)でするか、終値でするか、などの設定によってかなり異なる結果になります。どのようなパラメーター設定が最適なのかを手作業で探すのは困難です。以下のようなパラメーター設定だけでも、その組み合わせの数は膨大だからです。上記の組み合わせを試すだけでも、そのパターンは640通りにもなります。コメントをキャンセルメールアドレスが公開されることはありません。