資源の読み込みに... 荷物...

高周波フリップパーセント追跡モメント戦略

作者: リン・ハーンチャオチャン,日付: 2024-07-29 14:12:08
タグ:カマTP

img

概要

高周波フリップパーセントトラッキングモメントーム戦略は,カフマン適応型移動平均 (KAMA) をベースとした高周波取引アプローチである.この戦略は,1時間間のタイムフレームでKAMA指標を主要な参照として使用し,15分などの短いタイムフレームで取引を実行する.コアコンセプトは,価格がKAMAラインを横切ると,1%の利益目標を設定して,長所と短所の間を迅速にフリップすることを含む.この方法は,短期間の市場変動を活用し,迅速な利益を得ることによってリスクを制御することを目的としている.

戦略の原則

  1. 主なトレンド指標として1時間の時間枠でKAMA線を使用する.
  2. 価格がKAMA線を越えるとロングポジションを開くし,その下を通るとショートポジションを開く.
  3. ロングポジションを保持する際に,価格が KAMA ラインを下回る場合は,ロングを閉じてショートを開きます.ショートポジションでは逆です.
  4. 1%の利益目標を設定します. 達成したら,すぐにポジションを閉じて,口座残高をリセットします.
  5. 各取引のポジションサイズとして,口座残高の90%を使用します.
  6. 短時間 (15分) で取引を実行し,より多くの取引機会を掴む.

戦略の核心は,短期的動向を把握し,頻繁なポジション転機によって市場の変動に適応するために,KAMAラインを使用することにある.1%の利益目標は,迅速な利益固定を保証し,保有時間と潜在的なリスクを削減します.

戦略 の 利点

  1. 高頻度取引の特徴: 戦略は,短期間の市場変動,取引頻度の増加,および潜在的な利益機会を把握することができます.

  2. リスク管理:1%の利益目標設定により,戦略は迅速に小利益を固定し,取引ごとにリスクの露出を減らすことができます.

  3. 高度な適応性:KAMA指標は適応性があるため,異なる市場状況下で敏感性を調整することができ,戦略の適応性を高めます.

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

  5. 引き上げを制御する: 頻繁な小利益は最大引き上げを制御し,戦略をより安定させるのに役立ちます.

  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. 市場の適応性: 市場状況の認識メカニズムを開発し,戦略パラメータを自動的に調整したり,異なる市場条件下で取引を一時停止したりする.

結論

高周波フリップパーセントトラッキングモメンタム戦略は,KAMA指標に基づいた革新的な高周波取引方法である.短期的なトレンド変化を迅速に把握し,固定利益目標を設定することで,この戦略は頻繁な小利益を達成することを目指している.その利点は高い適応性,低引出,潜在的な高い資本効率性にあるが,過度な取引や不安定な市場のリスクなどの課題に直面している.

この戦略は,エントリー条件を最適化し,ダイナミックなテイク・プロフィートを導入し,ポジション管理を改善することで,そのパフォーマンスと安定性をさらに向上させる可能性がある.しかし,トレーダーはこの戦略を使用する際にリスクを完全に認識し,個人リスクの好みや市場状況に基づいて適切な調整を行うべきである.全体的に,これは有望な定量的な取引戦略であり,特に高頻度,低リスクの取引機会を求める投資家には適している.


/*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
// ----------------------------------------


関連性

もっと