この戦略は,過去N個のキャンドルの開通価格と比較して閉じる価格を分析することによって,将来のキャンドルの方向性を決定します.キャンドルの方向信号に基づいて,ロングまたはショートポジションを取ります.
この戦略の基本的な論理は
解析するキャンドルの数を決定するために NUM_CANDLES パラメータを設定します.
単一のキャンドルの方向を決定する関数 candle_dir を定義します. close>openは上昇, close
過去の NUM_CANDLES ろうそくで特定の方向を持つろうそくの数を数えるために関数 count_candles を定義する.
過去の NUM_CANDLES ろうそくの上昇,下落,中性ろうそくの数を数え,アップ,dns,neu に保存する.
インディックインジケーターを定義します その値はups-dns plus/minus neu に等しいです
長期/短期エントリをインディック指標に基づいて決定する.
特定の数のキャンドルのキャンドル方向を分析することによって,この戦略は,取引決定のための将来のキャンドル方向の確率を推定する.NUM_CANDLESは,戦略の感度を調整するためにサンプルサイズを制御する.
戦略の論理は明確で 理解し,解釈し,検証しやすい.
計算コストを削減するだけです
NUM_CANDLES パラメータを調節して感度を調整する.
すべての製品と時間枠に適用され,高度な適応性があります.
最良の組み合わせを見つけるためにパラメータを最適化します
市場を操作できず 取引が過剰になる可能性があります
適切なサンプル期間は信号遅延を引き起こす可能性があります. NUM_CANDLESは注意深く調整する必要があります.
トレンド逆転に適応できず トレンド逆転で損失のリスク
過剰な取引を避けるため,取引コストの影響は考慮する必要があります.
パラメータ最適化で過剰なフィッティングを注意し,マルチマーケットの検証が必要です.
ストップ・ロスを制限・ロストに追加してみてください
逆トレンド取引を避けるためにトレンドインジケーターと組み合わせる.
安定性を高めるため サンプルサイズを増やしたり 短い時間枠を使用します
勝率を向上させるために 多市場複合を検討します
自動パラメータ最適化のために機械学習を利用します
この戦略は,明快で単純な論理で,キャンドル方向を分析することによって取引方向を決定する. センシビリティはパラメータチューニングを通じて制御できる. 利点は単純性,低要求,幅広い適応性だが,いくつかのリスクが存在し,安定性を向上させるためにさらなる最適化が必要である. 全体的に,この戦略は定量的な取引のためのシンプルで実践的なアプローチを提供します.
/*backtest start: 2023-09-24 00:00:00 end: 2023-10-24 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Refined CandleCounter Strategy by origo", overlay=true) // how many candles to count NUM_CANDLES = 7 // determine candle direction candle_dir = close > open ? 1 : (round(close-open) == 0 ? 0 : -1) // return # of candles with a given direction count_candles(dir, max) => count = 0 for i = 0 to max if candle_dir[i] == dir count := count + 1 count ups = count_candles(1, NUM_CANDLES) dns = count_candles(-1, NUM_CANDLES) neu = count_candles(0, NUM_CANDLES) indic = ups-dns if indic > 0 indic := indic+neu else indic := indic-neu plotarrow(neu, title="UP vs DN") longCondition = (indic) > 0 shortCondition = (indic) <= 0 strategy.entry("buy", strategy.long, 1, when = longCondition and not shortCondition) strategy.entry("sell", strategy.short, 1, when = shortCondition and not longCondition)