고주파 플립 백분율 추적 모멘텀 전략

KAMA TP
생성 날짜: 2024-07-29 14:12:08 마지막으로 수정됨: 2024-07-29 14:12:08
복사: 0 클릭수: 560
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

고주파 플립 백분율 추적 모멘텀 전략

개요

고주파 역전율 트래킹 운동 전략은 카우프만 적응 이동 평균 (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. drawdown 제어: 자주 작은 이윤을 얻는 것은 최대 인출을 제어하는 데 도움이 되며, 전략이 더 안정된다.

  6. 레버리지 잠재력: 드라우다운이 낮기 때문에, 전략은 더 높은 레버리지를 사용하여 수익을 증대시킬 잠재력이 있다.

  7. 완전 자동화: 전략 논리가 명확하고, 완전한 자동화 거래가 가능하며, 인간의 개입이 줄어들었습니다.

전략적 위험

  1. 과도한 거래: 높은 주파수 반전이 과도한 거래, 거래 비용 증가 및 슬라이드 손실을 초래할 수 있습니다.

  2. 흔들리는 시장은 좋지 않다: 가로 수평 흔들리는 시장에서, 빈번한 공중 뒤집이는 연속으로 작은 손실이 축적될 수 있다.

  3. 트렌드를 놓치는 것: 1%의 수익 목표가 강한 트렌드 시장에서 조기 청산되어 더 큰 수익 기회를 놓치게 할 수 있습니다.

  4. 가짜 브레이크 위험: KAMA 라인 근처에서 가격이 자주 통과하면 여러 개의 가짜 브레이크 거래가 발생할 수 있습니다.

  5. 자금 관리 위험: 90%의 계정 잔액을 포지션으로 사용하는 것은 연속적인 손실에 자금을 빠르게 훼손할 수 있다.

  6. 적용 제한: 전략은 높은 변동성이 있는 시장에서만 적용될 수 있으며, 낮은 변동성이 있는 시장에서는 효과가 좋지 않다.

  7. 기술 의존성: 전략은 KAMA 지표에 크게 의존하고, 지표의 실패는 심각한 손실을 초래할 수 있다.

전략 최적화 방향

  1. 동적 스톱: 고정 1% 수익 목표가 ATR 또는 변동성에 기반한 동적 스톱으로 변경되는 것을 고려하여 다른 시장 조건에 적응하십시오.

  2. 입시 필터: 가짜 브레이크 트레이드를 줄이기 위해 추가 필터 조건을 도입합니다.

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