
この戦略は,主に改善されたHA平均線に基づいて価格の転換点を識別し,より明らかな傾向変化を捕捉するために,ショートライン取引戦略に属します.戦略は,HAを使用してK線の開,高,低,收価を計算し,価格の関係によって最終的なK線の色を判断します.価格が上昇すると,緑の柱状線で表示され,価格が低下すると,赤の柱状線で表示されます.戦略HAは,柱状線の色の変化を取引信号として使用し,緑色が赤色に変化したとき空をすると,赤色が緑色に変化したとき多をすると,典型的な逆転戦略に属します.
策略の核心的な論理は,HA柱状線の色の変化を計算して価格の逆転を判断することにある.
まず,入力パラメータによってHAを使用するかどうかを選択してK線の値を計算する.使用する場合はHAデータから開値,高値,低値,收値を取得する.使用しない場合はK線原データから直接取得する.
haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low
そしてHA計算式に基づいて,この周期HAの開收価格が得られる.
haclose = (haOpen + haHigh + haLow + haClose) / 4
haopen := na(haopen[1]) ? (haOpen + haClose) / 2 : (haopen[1] + haclose[1]) / 2
HAの最高値と最低値がHAの開値と開値によって計算されます.
hahigh = max(haHigh, max(haopen, haclose))
halow = min(haLow, min(haopen, haclose))
この周期HA柱状線の色はHA開收価格関係から判断する.
hacolor = haclose > haopen ? color.green : color.red
価格反転信号は,HAの色の変化による2連期の反転信号を判断する.
turnGreen = haclose > haopen and haclose[1] <= haopen[1]
turnRed = haclose <= haopen and haclose[1] > haopen[1]
オーバーとオフのシグナルが発生したときにオーバーとオフのポジションをそれぞれ開きます.
strategy.entry("long", 1, when=turnGreen)
strategy.entry("short", 0, when=turnRed)
逆の信号が出ると平仓する.
strategy.close("long", when=turnRed)
価格の逆転のポイントを判定し,逆転の取引戦略を実行します.
この戦略の利点は以下の通りです.
改善されたHAのK線データを使用すると,一部のノイズをフィルターして,トレンドの逆転点をより明確に識別できます.
シンプルなHA柱状線の色の変化のみに基づいて,反転点を判断し,戦略の論理はシンプルで明確で,容易に理解できる実装である.
逆転取引法により,トレンドの変化を把握し,より早く逆転利益を得ることができます.
異なる市場に応じて調整して使用できるHA計算K線データを使用するかどうかを設定できます.
グラフの形状は,価格の逆転点を直観的に判断するのに便利である.
取引周期などの最適化パラメータによって調整可能で,異なる品種に適用されます.
この戦略にはいくつかのリスクがあります.
逆転取引は騙されやすいので,逆転信号が十分な信頼性を持っていることを確認する必要があります.
変動する市場では反転シグナルが頻繁に発生し,過剰取引を引き起こします.
このトレンドの長さを判断できないので,逆転後も同じトレンドを継続すると,損失を招く可能性があります.
単一の指標は偽の突破の影響を受けやすいので,他の指標の組み合わせで使用すべきである.
パラメータが十分に最適化されているか確認し,過適合を避ける.
対応方法:
取引信号の安定性と信頼性を確保するためにパラメータを最適化します.
市場が揺れ動かないようにするために,トレンドフィルタリングを組み合わせます.
単一損失を制御するストップ・ロズ・アウトの仕組みを設定する.
偽信号を避けるために,他の指標と組み合わせて確認してください.
オピティマイズパラメータを十分に反省し,過適合を防止する.
この戦略は以下の点で最適化できます.
取引サイクルパラメータを最適化して,異なる品種特性に適応する.
取引品種の特徴に応じてHA値を使用するかどうかをテストする.
市場を動揺させないよう,トレンドフィルター条件を追加する.
ダイナミックストップを設定し,市場の変動に応じてストップを調整する.
他の指標と組み合わせた取引確認信号.
資金管理戦略を追加し,ポジションを調整する.
多種約取引の拡大
返信結果に応じてパラメータを修正し,過適合を防止する.
この策略は,HA均線を改良してHA柱状線色の変化を判断して価格の可能な逆転点を発見する優位性を利用する.直接K線を使用するよりも,HA均線は部分的なノイズをフィルタリングし,逆転信号をより明確にする.この策略は,簡単な直感的な方法で逆転取引の考え方を実現し,ロジックはシンプルで明確で,リアルディスク操作が容易である.しかし,逆転取引には,シグナル正確性をさらに最適化する必要のある隠蔽リスクもあります.さらに,トレンド判断などの他の要素と組み合わせて試して,より完全な取引システムを形成することができます.全体的に言えば,この策略は,HAデータに基づく逆転点の発見のための考え方を提供し,これに基づいて拡張して最適化し,独自の逆転取引戦略を開発することができます.
/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Heikin-Ashi Change Strategy", overlay=true)
UseHAcandles = input(true, title="Use Heikin Ashi Candles in Algo Calculations")
//
// === /INPUTS ===
// === BASE FUNCTIONS ===
haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low
// Calculation HA Values
haopen = 0.0
haclose = (haOpen + haHigh + haLow + haClose) / 4
haopen := na(haopen[1]) ? (haOpen + haClose) / 2 : (haopen[1] + haclose[1]) / 2
hahigh = max(haHigh, max(haopen, haclose))
halow = min(haLow, min(haopen, haclose))
// HA colors
hacolor = haclose > haopen ? color.green : color.red
// Signals
turnGreen = haclose > haopen and haclose[1] <= haopen[1]
turnRed = haclose <= haopen and haclose[1] > haopen[1]
// Plotting
bgcolor(hacolor)
plotshape(turnGreen, style=shape.arrowup, location=location.belowbar, color=color.green)
plotshape(turnRed, style=shape.arrowdown, location=location.abovebar, color=color.red)
// Alerts
alertcondition(turnGreen, "ha_green", "ha_green")
alertcondition(turnRed, "ha_red", "ha_red")
strategy.entry("long", 1, when=turnGreen)
//strategy.entry("short", 0, when=turnRed)
strategy.close("long", when=turnRed)