高頻度フリップ率追跡モメンタム戦略

KAMA TP
作成日: 2024-07-29 14:12:08 最終変更日: 2024-07-29 14:12:08
コピー: 0 クリック数: 295
1
フォロー
1166
フォロワー

高頻度フリップ率追跡モメンタム戦略

概要

高周波リバースパーセンテージトラッキングダイナミクス戦略は,カウフマン自律移動平均 (KAMA) に基づく高周波取引戦略である.この戦略は,1時間の時間枠でKAMA指標を主要な参照として使用し,より短い時間枠 (例えば15分) で取引する.この戦略の核心思想は,価格がKAMA線を横断するときに空白のポジションを迅速にリバースし,小さな,しかし頻繁な利益をロックするために1%の利益目標を設定することです.この方法は,市場の短期的な変動を利用し,同時に,迅速なストップを介してリスクを制御することを目的としています.

戦略原則

  1. 1時間枠のKAMA線を主要トレンド指標として使用する.
  2. 価格がKAMA線を横切るときに多頭ポジションを開く,横切るときに空頭ポジションを開く.
  3. 複数頭ポジションを保有するときは,KAMA線を下に価格が突破した場合,複数頭ポジションを平面化して空頭を開きます.その逆もまた同様です.
  4. 目標の1%の利回り目標を設定する.目標を達成すると,すぐに平仓し,口座のバランスを再設定する.
  5. アカウントのバランスの90%を1回の取引のポジションサイズとして使用します.
  6. より多くの取引機会を捉えるために,より短い時間枠で取引を行う (例えば15分).

戦略の核心は,KAMA線を利用して短期的なトレンドを捉え,頻繁なポジションの転覆によって市場の変動に対応することです.1%の利回り目標は,利益の迅速なロックを保証し,ポジションの保持時間と潜在的リスクを軽減します.

戦略的優位性

  1. 高周波取引特性:短期市場の波動を捕捉し,取引頻度と潜在的利益の機会を向上させる.

  2. リスク管理:1%の収益目標を設定することで,小規模な利益を迅速にロックし,単一取引のリスク露出を減らすことができる.

  3. 適応性:KAMA指標は,異なる市場条件に敏感性を調整し,戦略の適応性を向上させるための自己適応性を持っています.

  4. 資金効率: 戦略は,口座残高の90%をポジションサイズとして使用し,利用可能な資金を最大限に活用します.

  5. drawdown コントロール:頻繁に小さな利益を得ることで,最大撤退を制御し,戦略をより安定させる.

  6. レバレッジ・ポテンシャル: 引き下げが低いため,戦略はより高いレバレッジを使用して収益を拡大する可能性があります.

  7. 全自動化: 戦略の論理が明確で,全自動化取引が容易に実現され,人間の介入が少なくなる.

戦略リスク

  1. 取引過多:高周波の反転は,取引過多,取引コストの増加,滑り点の損失を引き起こす可能性があります.

  2. 振動市場には不利である:横盤振動市場では,頻繁に空飛ぶ反転が,連続して小額の損失が蓄積される可能性がある.

  3. トレンドを逃す:1%の利潤目標は,強いトレンドの市場で早急に平仓し,より大きな利益を得る機会を逃す可能性があります.

  4. 偽の突破リスク:KAMA線周辺の価格の頻繁な横断は,複数の偽の突破取引を誘発する可能性がある.

  5. 資金管理のリスク:90%の口座余剰をポジションとして使用すると,連続的な損失で資金が急速に侵食する可能性があります.

  6. 適用制限: 戦略は波動性の高い市場のみに適用され,波動性の低い市場では効果が低い.

  7. 技術的依存:戦略はKAMA指数に高度に依存し,指数の失敗は深刻な損失を引き起こす可能性があります.

戦略最適化の方向性

  1. ダイナミックストップ:異なる市場条件に対応するために,固定1%の収益目標からATRまたは変動率に基づくダイナミックストップに変更することを検討する.

  2. 入場フィルター:偽の突破取引を減らすために追加のフィルター条件 (RSI,取引量など) を導入する.

  3. トレンド強度評価:ポジション開設前にトレンド強さを評価し,トレンドが明確である時にのみ取引し,波動的な市場での頻繁な取引を避ける.

  4. ポジション管理の最適化:より柔軟なポジション管理戦略を導入し,口座の利回りや市場の変動に基づいてポジションサイズを調整する.

  5. 多時間枠分析:より長期の時間枠分析と組み合わせて,取引方向の正確性を向上させる.

  6. ストップ・スローメカニズム:単一取引の過度の損失を防ぐために,適切なストップ・スローメカニズムを導入する.

  7. パラメータ最適化:KAMAのパラメータを最適化して,最適の快慢線周期组合を探します.

  8. 市場適応性:市場状態の認識機構を開発し,異なる市場条件に応じて戦略パラメータを自動的に調整するか,取引を一時停止する.

要約する

ハイフローパーセンテージ・トラッキング・ダイナミクス・ストラテジー (HFT) は,カマ指数に基づく革新的なハイフロー取引方法である.短期トレンドの変化を素早く捉え,固定利益目標を設定することで,頻繁な小規模な利益を達成することを目的としている.高適応性,低引き下げ,潜在的に高い資金効率の優位性があるが,同時に,過度取引や市場震荡のリスクなどの課題に直面している.

入場条件の最適化,ダイナミックストップの導入,ポジション管理の改善などによって,この戦略は,その性能と安定性をさらに向上させる可能性がある.しかしながら,この戦略を使用するトレーダーは,そのリスクを十分に認識し,個人のリスクの好みと市場条件に応じて適切に調整する必要があります.全体的に,これは,高頻度,低リスクの取引機会を追求する投資家に特に適した潜在的量化取引戦略です.

ストラテジーソースコード
/*backtest
start: 2023-07-23 00:00:00
end: 2024-07-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// indicator('TeeLek Flip 1 Percent', shorttitle='TeeLek Flip 1 Percent', overlay=true)
strategy("TeeLek Flip 1 Percent", shorttitle="TeeLek Flip 1 Percent", overlay=true)

// ----------------------------------------
// Input
// ----------------------------------------
BALANCE_USDT = input.float(1000, title="Start Balance (USDT)", minval=100)
PERCENT_POSITION_SIZE = input.float(90, title="Position Size (%USDT)", minval=1, maxval=100)
PERCENT_TAKE_PROFIT = input.float(10, title="Take Profit (%)", minval=0.1, maxval=100)
// KAMA Setup
KAMA_PERIOD = int(10)
KMA_FAST_LEN = input.int(5, "KMA Fast Legnth", minval=1,group="KAMA Setup")
KMA_SLOW_LEN = input.int(50, "KMA Slow Legnth", minval=1,group="KAMA Setup")

// ----------------------------------------
// Function
// ----------------------------------------
pine_kama(source) =>
    price_change = math.abs(source - source[KAMA_PERIOD])
    sum_price_change = math.sum(math.abs(source - source[1]), KAMA_PERIOD)
    fastest = 2/(KMA_FAST_LEN + 1)
    slowest = 2/(KMA_SLOW_LEN + 1)
    ER = price_change / sum_price_change
    SC =  math.pow((ER * (fastest-slowest) + slowest), 2)
    alpha = SC
    sum = 0.0
    sum := na(sum[1]) ? source : sum[1] + SC * (source - nz(sum[1]))

// ----------------------------------------
// Variable
// ----------------------------------------
var CurrentBalance_USDT = float(0)
var Accom_USDT = float(0)
var PositionSize_USDT = float(0)
var PositionSize_BTC = float(0)
var PositionTarget_USDT = float(0)
var TargetPrice = float(0)

var Long_BTC = float(0)
var Long_AvgPrice = float(0)
var Short_BTC = float(0)
var Short_AvgPrice = float(0)

var Long_Profit = float(0)
var Short_Profit = float(0)
// เริ่มต้นจากจำนวน Balanace ที่กำหนดมาให้
if CurrentBalance_USDT==0
    CurrentBalance_USDT:=BALANCE_USDT

// ----------------------------------------
// Signal
// ----------------------------------------
// kama line
kama_1h = request.security(syminfo.tickerid, "60",pine_kama(close))

// ----------------------------------------
// Strategy Preparing
// ----------------------------------------
// คำนวณ Position Size เตรียมเอาไว้
PositionSize_USDT:=CurrentBalance_USDT*PERCENT_POSITION_SIZE/100
PositionSize_BTC:=PositionSize_USDT/close
// คำนวณหามูลค่าเป้าหมาย ถ้าถึงก็จะขายเลย
PositionTarget_USDT:=CurrentBalance_USDT+(CurrentBalance_USDT*PERCENT_TAKE_PROFIT/100)

// ถ้ายังไม่ได้เปิด Order // ให้รอ ราคาตัดเส้น KAMA 1H ก่อน
if Long_BTC==0 and Short_BTC==0
    // ตัดขึ้น ให้ซื้อขึ้น Long
    if close>kama_1h and close[1]<=kama_1h[1]
        strategy.entry("L", strategy.long)
        Long_BTC:=PositionSize_BTC
        Long_AvgPrice:=close
    // ตัดลง ให้ซื้อลง  Short
    else if close<kama_1h and close[1]>=kama_1h[1]
        strategy.entry("S", strategy.short)
        Short_BTC:=PositionSize_BTC
        Short_AvgPrice:=close

// ----------------------------------------
// Strategy Switch Side
// ----------------------------------------
// ถ้าเปิด Long อยู่
if Long_BTC>0 
    // ถ้าตัดลง ให้ปิด Long แล้วซื้อลง Short
    if close<kama_1h and close[1]>=kama_1h[1]
        strategy.close_all("X")
        strategy.entry("S", strategy.short)
        Accom_USDT:=Accom_USDT+(close*Long_BTC)-(Long_AvgPrice*Long_BTC)
        Long_AvgPrice:=0
        Long_BTC:=0
        Short_AvgPrice:=close
        Short_BTC:=PositionSize_BTC
// ถ้าเปิด Short อยู่
if Short_BTC>0
    // ตัดขึ้น ให้ปิด Short แล้วซื้อขึ้น Long
    if close>kama_1h and close[1]<=kama_1h[1]
        strategy.close_all("X")
        strategy.entry("L", strategy.long)
        Accom_USDT:=Accom_USDT+(Short_AvgPrice*Short_BTC)-(close*Short_BTC)
        Short_AvgPrice:=0
        Short_BTC:=0
        Long_AvgPrice:=close
        Long_BTC:=PositionSize_BTC

// ----------------------------------------
// Strategy Take Profit
// ----------------------------------------
// ถ้าเปิด Long อยู่
if Long_BTC>0
    // คำนวณหาราคา Target price
    TargetPrice:=(PositionTarget_USDT+(Long_AvgPrice*Long_BTC)-(CurrentBalance_USDT+Accom_USDT))/Long_BTC
    // ถ้าราคามากกว่าราคาเป้าหมายก็ปิดทำกำไรได้เลย
    if close>=TargetPrice
        strategy.close_all("Take Profit")
        // เก็บกำไรเป็นทุน ไปเริ่มรอบใหม่
        CurrentBalance_USDT:=CurrentBalance_USDT+(close*Long_BTC)-(Long_AvgPrice*Long_BTC)
        Long_BTC:=0
        Long_AvgPrice:=0
        Accom_USDT:=0

// ถ้าเปิด Short อยู่
if Short_BTC>0
    // คำนวณหาราคา Target price
    TargetPrice:=((CurrentBalance_USDT+Accom_USDT)+(Short_AvgPrice*Short_BTC)-PositionTarget_USDT)/Short_BTC
    // ถ้าราคามากกว่าราคาเป้าหมายก็ปิดทำกำไรได้เลย
    if close<=TargetPrice
        strategy.close_all("Take Profit")
        // เก็บกำไรเป็นทุน ไปเริ่มรอบใหม่
        CurrentBalance_USDT:=CurrentBalance_USDT+(Short_AvgPrice*Short_BTC)-(close*Short_BTC)
        Short_BTC:=0
        Short_AvgPrice:=0
        Accom_USDT:=0

// ----------------------------------------
// Draw
// ----------------------------------------
// KAMA
plot(kama_1h,"KAMA 1H", #f18a23 , linewidth = 2)

// ----------------------------------------
// Alert
// ----------------------------------------

// ----------------------------------------
// Info Table
// ----------------------------------------