ハイキン・アシ逆戦略

作者: リン・ハーンチャオチャン,日付: 2023-11-16 15:44:14
タグ:

img

概要

この戦略は,主に価格の逆転点を特定し,重要なトレンド変化を捕捉するために改良されたハイキン・アシのキャンドルを使用する.これは短期間の取引戦略に属する.この戦略は,HAを使用してキャンドルのオープン,ハイ,ロー,クローズ価格を計算し,価格関係に基づいて最終色を決定する.緑のキャンドルは上昇する価格,赤いキャンドルは下がる価格を表す.この戦略は,HAキャンドルの色の変化を取引信号として使用し,緑の変化から赤の変化に短く,赤の変化から緑の変化に長くなります.これは典型的な逆転戦略です.

戦略の論理

この戦略の基本的な論理は,価格逆転を決定するために,HAキャンドルの色変化を検出することです.

まず,HAデータや入力パラメータに基づくオリジナルデータから オープン,高,低,閉値を取得します.

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を開閉を計算します.

haclose = (haOpen + haHigh + haLow + haClose) / 4  

haopen := na(haopen[1]) ? (haOpen + haClose) / 2 : (haopen[1] + haclose[1]) / 2

さらに,HAの最高値と最低値を得ます.

hahigh = max(haHigh, max(haopen, haclose))

halow = min(haLow, min(haopen, haclose))  

オープン/近距離関係に基づいてHAキャンドルの色を決定する.

hacolor = haclose > haopen ? color.green : color.red

棒間のHA色の変化に基づいて反転信号を識別する.

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キャンドルの色の変化を検出することで,反転取引のための価格逆転点を捕捉します.

利点

この戦略の主な利点は以下の通りです.

  1. 改良されたHAキャンドルが使用され 騒音をフィルターし 逆転をより明確に識別できます

  2. シンプルなロジックで HAの色変化をベースに 分かりやすく実行できます

  3. リバース・トレーディングは 傾向の変化を迅速に把握し 利益を得ます

  4. HAキャンドルを異なる市場で使用したりしないように調整できます.

  5. ろうそくの矢印は 逆転を視覚的に示しています

  6. タイムフレームのようなパラメータは 異なる製品に最適化できます

リスク

また,注意すべきリスクもあります.

  1. 逆転取引は罠に易く 信号は信頼性が必要です

  2. 市場が変動する際には 頻繁に暴跌が起こる可能性があります

  3. トレンドの持続期間を特定できず トレンドを逆転させ続けられる.

  4. 誤った信号に敏感な単一インジケーターは,他のインジケーターと組み合わせなければならない.

  5. オーバーフィッティングは最適化によって避ける必要があります

解決策:

  1. 信頼性の高い信号のパラメータを最適化します

  2. トレンドフィルターを追加して市場を区切るのを避ける.

  3. ストップロスを使って,取引ごとに損失を制御する.

  4. 誤った信号を避けるため,他の指示器で信号を確認します.

  5. パラメータを最適化し 過適正を防ぐため 徹底的なバックテストを行う

改善

戦略は以下の方法で改善できます.

  1. 異なる製品のためのタイムフレームを最適化します

  2. 製品特性ごとにHAキャンドルの使用量を試験する.

  3. トレンドフィルターを追加して 市場変動を回避します

  4. 市場変動に基づいて 動的ストップを導入する

  5. 信号を追加の指標で確認します

  6. リスク管理に基づくポジションのサイズを組み込む.

  7. 多商品の仲介取引を拡大する

  8. バックテスト結果に基づいてパラメータを調整し,オーバーフィッティングを防ぐ.

結論

この戦略は,改善されたHAキャンドルの強みを活用し,HA色の変化を通じて潜在的な逆転点を発見する.通常のキャンドルと比較して,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)


もっと