가격 기반 손절매 및 이익 실현 전략


생성 날짜: 2023-11-23 15:36:00 마지막으로 수정됨: 2023-11-23 15:36:00
복사: 0 클릭수: 675
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

가격 기반 손절매 및 이익 실현 전략

개요

이 전략의 핵심 아이디어는 입력된 스톱로스 스 금액을 이용하여 합리적인 스톱로스 스 포인트를 설정하고, 각 거래에 대한 위험과 수익을 관리하는 것이다.

전략 원칙

이 전략은 처음에 무작위적인 입구 신호를 설정하여 SMA14 위쪽에서 SMA28을 통과할 때 더하고, SMA14 아래에서 SMA28을 통과할 때 더하지 않는다.

입점 후, 전략은 moneyToSLPoints 함수를 사용하여 입력된 손실 금액에 따라 대응하는 손실 포인트 수를 계산하고, 마찬가지로 중지 포인트 수를 계산합니다. 이렇게하면 달러 금액에 기반한 손실 차단 설정이 가능합니다.

예를 들어, 입장이 100개의 추가 핸드를 하고, 각 포인트는 10달러로, 스톱 로즈가 100달러로 설정되어 있다면, 스톱 로즈의 점수는 100/10/100=0.1점으로 설정된다.

마지막으로 strategy.exit로 스톱로스 및 엑시트 출전점을 설정한다. 동시에 스톱로스 라인과 엑시트 라인의 그래프를 그리는 것이 시동 참조이다.

우위 분석

이 전략의 가장 큰 장점은 매개 변수 설정이 직관적이기 때문에 위험과 수익의 관계를 직관적으로 볼 수 있고 매개 변수 선택이 가능하다는 것이다.

또한, 점수 스톱에 비해, 달러 스톱은 실제 리스크 을 더 잘 제어할 수 있다. 시장의 변동성이 커지면 달러 스톱은 자금을 더 잘 보호할 수 있다.

위험 분석

이 전략에는 위험도 있습니다.

  1. 스톱포인트가 너무 넓으면 쉽게 막힐 수 있다. 스톱포인트가 너무 멀리 있다면, 상가상황의 짧은 선이 반전될 확률이 상대적으로 크다. 스톱포인트가 쉽게 막혀서 손해를 볼 수 없다.

  2. 정지점을 지나간다면 수익을 내기 힘들다. 정지거리가 너무 가까워지면 정상적인 일방적인 거래도 이뤄지지 않아 수익을 내기 힘들다.

  3. 합리적인 계약 선택이 필요합니다. 만약 당신이 원유와 같은 너무 큰 점 값을 가진 계약을 선택한다면, 동일한 달러가 멈출 것입니다. 그에 따른 점수는 매우 작아 시장의 변동에서 쉽게 빠져 나갈 수 있습니다.

최적화 방향

이러한 전략은 다음과 같은 측면에서 최적화될 수 있습니다.

  1. 진입 신호를 최적화 할 수 있습니다. 예를 들어, 트렌드, 변동성, 계절성과 같은 옵션이 더 나은 진입 시기를 제공합니다.

  2. 다양한 품종에 따라 적절한 스톱 스 퍼센티지를 선택할 수 있다. 예를 들어, 상품은 더 느슨한 스톱 스을 설정할 수 있다.

  3. 변동률과 결합하여 변동이 커지면 적절히 느슨하게 중지하고 변동이 작아지면 적절히 단단하게 중지할 수 있다.

  4. 거래 일상의 다른 시간에 따라 다른 중지 손실을 막는 전략을 선택할 수 있습니다. 예를 들어, 미국 거래 시간 동안 중지 손실을 강화하여, 피하는 확률을 줄입니다.

요약하다

이 전략은 달러 금액을 매개 변수로 하여 직관적인 손해 막기 기능을 구현한다. 이 전략의 장점은 매개 변수 선택과 자금 통제가 직관적이기 때문이며, 단점은 피지하기 쉽고 수익을 얻기 힘들다. 우리는 입점 시점, 손해 막기 매개 변수 최적화, 계약 선택 등의 측면에서 개선하여 전략을 더 안정적으로 수익을 낼 수 있다.

전략 소스 코드
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © adolgov

// @description
// 

//@version=4
strategy("Stop loss and Take Profit in $$ example", overlay=true)

// random entry condition

longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)

moneyToSLPoints(money) =>
    strategy.position_size !=0 ? (money / syminfo.pointvalue / abs(strategy.position_size)) / syminfo.mintick : na

p = moneyToSLPoints(input(200, title = "Take Profit $$"))
l = moneyToSLPoints(input(100, title = "Stop Loss $$"))
strategy.exit("x", profit = p, loss = l)

// debug plots for visualize SL & TP levels
pointsToPrice(pp) =>
    na(pp) ? na : strategy.position_avg_price + pp * sign(strategy.position_size) * syminfo.mintick
    
pp = plot(pointsToPrice(p), style = plot.style_linebr )
lp = plot(pointsToPrice(-l), style = plot.style_linebr )
avg = plot( strategy.position_avg_price, style = plot.style_linebr )
fill(pp, avg, color = color.green)
fill(avg, lp, color = color.red)