
本策は,過去N根K線の閉盘価格が開盘価格より高/低の状況を分析することによって,将来のK線の方向を判断する.K線方向の空白状況に応じて,多行または空白操作を行う.
この戦略の核心的な論理は:
パラメータNUM_CANDLESを設定し,解析するK線の数を決定します.
candle_dir関数を定義し,単根K線の方向を判断する。close>openは多頭,close
count_candles関数を定義し,過去NUM_CANDLES根K線における異なる方向のK線の数を統計する.
過去NUM_CANDLES根K線で多頭,空頭,振動K線の数を計算し,ups,dns,neuに保存する.
ups-dnsとneuの正負の値に等しいindic指標を定義する.
indicの指数で判断すると,多労と空業の時間です.
この戦略は,一定数のK線の方向を統計的に判断し,将来のK線の方向の確率を判断し,取引決定を行う.パラメータNUM_CANDLESによって統計K線の数を制御し,戦略の感性を調整することができる.
戦略は明快で理解しやすく,簡単に説明し,検証できます.
複雑な指標を計算する必要がなく,K線データだけで計算コストを削減します.
統計K線の数をパラメータで調整し,戦略の感度を制御する.
どんな品種でも,どんな周期でも使える,適応力強い。
パラメータを最適化し,最適なパラメータの組み合わせを探します.
市場が揺れ動いて,整理ができないため,頻繁に平仓を始める可能性もある.
統計周期が不適切である場合,信号が遅滞する可能性があるため,合理的なパラメータ設定が必要である.
逆転を処理できず,逆転で損失を被る危険性がある.
取引コストの影響を考慮し,取引の頻度を避ける必要があります.
パラメータ最適化過適合の問題に注意し,多重市場フィードバック検証を行う.
ストップ・ロジックを導入することで,損失のリスクを減らすことも考えられます.
逆操作を避けるためにトレンド指数と組み合わせることができます.
統計周期を大きくしたり,低周期を使用したり,最適化パラメータにより戦略の安定性を高めることができる.
複数の品種を組み合わせることで,戦略的勝利率を上げることが考えられます.
マシン・ラーニングと組み合わせた自動最適化パラメータ.
この戦略は,K線方向分析に基づいて取引方向を決定し,考え方は明確で分かりやすく,パラメータ設定によって戦略の敏度を制御することができる.戦略の優点は,論理的簡素性,使用要求の低さ,適用範囲の広さである.しかし,また,戦略の安定性を高めるためにさらなる最適化が必要な一定のリスクもある.全体的に,この戦略は,量化取引のためのシンプルで実用的な取引考え方を提供している.
/*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)