트레일링 스톱 이익 전략 너머


생성 날짜: 2024-01-08 16:24:03 마지막으로 수정됨: 2024-01-08 16:24:03
복사: 0 클릭수: 717
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

트레일링 스톱 이익 전략 너머

개요

이동 중지 수익을 초과하는 전략은 지표를 초과하는 것을 기반으로 한 양적 거래 전략이다. 이 전략은 장점과 단점의 입출력 조건을 구축하여 손실을 달성하고 이동 중지한다. 이 전략의 장점은 지속적인 추세에서 높은 수익을 얻을 수 있으며 이동 중지로 대부분의 수익을 잠금 할 수 있다는 것입니다. 그러나 이 전략은 돌파 실패에 더 민감합니다.

전략 원칙

이 전략은 지표를 초과하는 트렌드 추적형 전략이다. 지표를 초과하면 가격 트렌드 방향을 판단할 수 있다. 지표 방향이 바뀌면 구매 및 판매 신호가 발생한다. 구체적으로, 지표를 초과하면 0 축을 통과하면 구매 신호가 발생한다. 지표를 초과하면 0 축을 통과하면 판매 신호가 발생한다.

우위 분석

이 전략의 가장 큰 장점은 트렌드 판단과 모바일 스톱을 결합한 것이다. 지표를 초월하여 0축 위 아래로 돌파하여 트렌드 방향을 판단하여 트렌드를 더 정확하게 포착할 수 있다. 모바일 스톱은 트렌드가 진행되는 동안 대부분의 이익을 잠금할 수 있다.

위험 분석

이 전략의 가장 큰 위험은 돌파 실패에 민감하다는 것이다. 평형 영역에서 지표를 초과하면 가짜 돌파가 발생할 수 있으므로 잘못 위치를 설정할 수 있다. 이 때 쉽게 틀릴 수 있다. 또한, 이동식 스톱 메커니즘은 너무 일찍 멈춰서 후속 상황을 놓칠 수도 있다. 마지막으로, 부적절한 스톱 설정은 너무 느슨하거나 너무 급진적이어서 위험을 증가시킬 수도 있다.

최적화 방향

이 전략은 다음과 같은 몇 가지 측면에서 최적화 할 수 있습니다: 1) 과잉 지표 변수를 합리적으로 정의하여 가짜 신호를 피하십시오; 2) 거래량 신호를 증가시키는 것과 같은 돌파구를 판단하는 메커니즘을 추가하십시오; 3) 수익을 보장하면서 중심을 최대한 줄이는 이동 스톱의 변수를 최적화하십시오; 4) 동적 스톱을 대신하여 동적 스톱을 사용하는 변동률 기반; 5) 다른 지표를 조합하여 전략의 안정성을 향상하십시오.

요약하다

모바일 스톱 수익 전략을 초과하는 것은 전반적으로 좋은 트렌드 추적 전략이다. 트렌드 방향을 합리적으로 판단할 수 있으며 모바일 스톱 메커니즘이 있다. 그러나 이 전략은 돌파 실패에 민감하며, 약간의 위험이 있다. 추가적으로 최적화 파라미터를 설정하고, 판단 규칙, 스톱 메커니즘 등을 통해 이 전략을 효과적으로 개선하여 안정적이고 효율적인 양적 거래 전략이 될 수 있다.

전략 소스 코드
/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("ST Michael Moving TP", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

// Stop loss and profit amount
stop_loss = input(1500, title="Stop Loss Amount")
profit = input (15000, title="Profit Amount")
LongTrailProfit = input (0.91, title = "Long Trailing Profit Taking")
ShortTrailProfit = input (1.01, title = "Short Trailing Profit Taking")

atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)

[_, direction] = ta.supertrend(factor, atrPeriod)

long_condition = ta.change(direction) <0
short_condition = ta.change(direction) >0


stop_price_long = ta.valuewhen(long_condition, low[0]-stop_loss,0)
profit_price_long = ta.valuewhen(long_condition, high[0]+profit,0)
stop_price_short = ta.valuewhen(short_condition, high[0]+stop_loss,0)
profit_price_short = ta.valuewhen(short_condition, low[0]-profit,0)

atr=ta.atr(10)

intrade_long = strategy.position_size > 0
intrade_short = strategy.position_size < 0
exitConditionLong = (close < (close[1]*LongTrailProfit)) 
exitConditionShort = (close > (close[1]*ShortTrailProfit))

if (long_condition)
    strategy.entry("Long3", strategy.long)
if (intrade_long and exitConditionLong)
    strategy.close("Long3")

if (short_condition)
    strategy.entry("Short3", strategy.short)
if (intrade_short and exitConditionShort)
    strategy.close ("Short3")

if (strategy.position_size>0)
    strategy.exit("exit_long",from_entry="Long3",limit=profit_price_long,stop=stop_price_long)

if (strategy.position_size<0)
    strategy.exit("exit_short",from_entry="Short3",limit=profit_price_short,stop=stop_price_short)