硬度突破戦略は,価格硬度指標に基づいたブレイクアウト戦略である.これは,価格の硬度を決定するために,閉じる価格が一定の期間で上線を突破する回数を計算する.硬度指標が設定された限界を上回ると,市場は突破寸前であると判断され,購入オーダーが発行される.硬度指標が限界を下回ると,市場は戻り寸前であると判断され,販売オーダーが発行される.
移動平均値と標準偏差を計算する: n 期間の単純な移動平均値を基準上部レールとして計算し,価格の標準偏差を 0.2 倍にしてバッファ下部レールとして計算する.
硬度指標を計算する. 閉店価格が上方レールより高かった日数をmサイクルで数えて,0〜100の値を得るためにmで割って,最終硬度値を得るためにn期間のEMAで滑らかして,閉店価格が上部レールを突破する確率を表します.
硬度指標が設定された
エントリー&エグジット: 閉じる価格が上線を突破すると購入し,突破が失敗して下落が始まると売却する. 突破でロングで,引き下げでショートで.
突破のタイミングを把握する: 傾向が突破する時や後退する時を比較的信頼的に判断し,市場に入れるようにする.
突破と引き下げを考慮する: 戦略は,硬度指標の突破と引き下げを利用して,長期と短期の両方の機会を把握する.
柔軟なパラメータ:ユーザーは,移動平均長さ,硬度サイクル,
シンプルな実装: 複雑な論理なしで硬さ指標と
破綻リスク: 硬さが限界値を超えると,価格が上層線を突破する確率は完全に保証できない.
引き戻し範囲リスク: ショートに行く場合,引き戻し範囲と位置は予測できないため,損失が大きすぎるリスクがあります.
パラメータ最適化リスク:基準パラメータは市場の変化に完全に適応できないため,実際の状況に応じて継続的にテストおよび最適化する必要があります.
頻繁に取引するリスク:この戦略の比較的高い取引頻度は,取引コストやスライプによる損失を増大させる.
パラメータを最適化: 異なる市場でパラメータ設定をテストし,最適なパラメータの組み合わせを見つけます.例えば,移動平均の長さを増加させ,取引頻度を減らす.
ストップ損失を追加:単一の損失を制御するために合理的なストップ損失ロジックを設定します.ストップ損失はATRに基づいて設定できます.
他の指標を組み込む: MACD や KD などの指標が追加され,特定のエントリーポイントを決定し,誤ったブレイクの可能性を減らすことができます.
出口条件を最適化する:トレンド指標は,トレンド逆転の特徴を決定し,より正確な出口条件を設定するために使用できます.
整体的には,Stiffness Breakthrough 戦略はかなりシンプルで実用的です.これは,何らかの実用的な価値を持つ,可能な価格ブレイクや引き下げを事前に予測することができます.しかし,偽のブレイクや引き下げ範囲の問題にも注意を払い,パラメータ最適化および他の技術指標の追加を通じてより正確な取引機会を把握する必要があります.
/*backtest start: 2023-12-26 00:00:00 end: 2024-01-02 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Copyright (c) 2020-present, JMOZ (1337.ltd) // Copyright (c) 2018-present, Alex Orekhov (everget) // Stiffness Indicator script may be freely distributed under the MIT license. strategy("Stiffness Strategy", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.075) maLength = input(title="Moving Average Length", minval=1, defval=100) stiffLength = input(title="Stiffness Length", minval=1, defval=60) stiffSmooth = input(title="Stiffness Smoothing Length", minval=1, defval=3) threshold = input(title="Threshold", minval=1, defval=90) highlightThresholdCrossovers = input(title="Highlight Threshold Crossovers ?", type=input.bool, defval=false) bound = sma(close, maLength) - 0.2 * stdev(close, maLength) sumAbove = sum(close > bound ? 1 : 0, stiffLength) stiffness = ema(sumAbove * 100 / stiffLength, stiffSmooth) long_cond = crossover(stiffness, threshold) long_close = stiffness > threshold and falling(stiffness, 1) short_cond = crossunder(stiffness, threshold) or stiffness < threshold and falling(stiffness, 1) short_close = stiffness < threshold and rising(stiffness, 1) strategy.entry("Long", strategy.long, when=long_cond) strategy.close("Long", when=long_close) strategy.entry("Short", strategy.short, when=short_cond) strategy.close("Short", when=short_close) transparent = color.new(color.white, 100) bgColor = highlightThresholdCrossovers ? stiffness > threshold ? #0ebb23 : color.red : transparent bgcolor(bgColor, transp=90) plot(stiffness, title="Stiffness", style=plot.style_histogram, color=#f5c75e, transp=0) plot(threshold, title="Threshold", color=color.red, transp=0)