
이 전략은 이동 평균을 거래 신호로 사용하여 사용자 정의한 스톱 스톱 비율과 결합하여 전체적인 지표 구동형 스톱 스톱 전략을 구현합니다. 이 전략은 자동으로 입문, 손실, 스톱을 수행 할 수 있으며, 인적 개입이 필요하지 않습니다.
이 전략의 핵심 논리는 다음과 같습니다.
3주기 SMA를 거래 신호로 사용하며, SMA 상단에서 0을 넘으면 더하고, SMA 하단에서 0을 넘으면 공백합니다.
사용자 입장 후, 사용자 정의한 스톱 손실 비율과 스톱 스 비율을 설정할 수 있습니다.
입점 가격과 사용자 설정에 따라 자동으로 스톱 라인을 설정합니다.
입점 가격과 사용자 설정에 따라 자동으로 정지선을 설정합니다.
가격이 스톱 라인을 만지면 자동으로 스톱; 가격이 스톱 라인을 만지면 자동으로 스톱;
정지 주문을 자동으로 취소합니다.
구체적으로, 전략은 sma 함수를 통해 3주기의 이동 평균을 계산하고, 그 값을 ma 변수에 부여한다.
다음으로 다중 입구선 long를 계산하고, 그 값은 ma 더하기 ma의 백분율인 lo。lo는 사용자가 조정할 수 있는 변수이며, 여러 번에 입구선 이동량을 나타냅니다。
ma가 0을 입으면, 더하기 시작을 나타냅니다. strategy.entry 함수를 통해 더하기 입시, 입시 가격은 long。
동시에, 중지 및 정지 가격을 설정하십시오. 정지 가격은 출입 가격으로 출입 가격의 sl%를 니다. sl는 사용자가 조정할 수 있는 파라미터를 나타냅니다. 정지 가격은 출입 가격에 출입 가격의 tp%를 더합니다.
strategy.entry 함수를 통해 스톱로스 명령과 스톱 ?? 명령을 각각 설정한다. 가격이 스톱로스 라인을 만지면 자동으로 스톱; 가격이 스톱 ?? 라인을 만지면 자동으로 스톱한다.
포지션 평준화 후, strategy.cancel 함수를 통해 자동으로 스톱로스 스 주문을 취소한다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
자동화 수준이 높고, 인간의 개입이 필요없고, 자동 거래에 적합합니다.
사용자 정의 가능한 Stop Loss Stop Stop 비율, 위험 제어;
거래 신호는 지표에서 나오고, 가짜 돌파구를 피합니다.
“비즈얼 스톱 스톱 손실, 직관적으로 명확하다.
전략의 논리는 명확하고 간단하며, 구현을 이해하기 쉽습니다.
이 전략에는 몇 가지 위험도 있습니다.
지표가 잘못된 신호를 생성할 위험이 있다. 해결책은 지표가 안정적이고 신뢰할 수 있도록 파라미터를 최적화하는 것이다.
스톱 스톱 비율이 부합적으로 설정되어 너무 완만하거나 너무 급진적일 수 있습니다. 해결책은 상이한 시장에 맞게 스톱 스톱 매개 변수를 조정하는 것입니다.
브레이크 엔트리는 쉽게 잡힐 수 있다. 해결책은 트렌드, 수량 지표와 같은 필터링 엔트리 신호를 결합하는 것이다.
철회할 가능성이 크다. 해결책은 포지션 기준을 낮추거나, 또는 스톱로스를 추적하는 것이다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
이동 평균의 파라미터를 최적화하여 더 신뢰할 수 있도록 하는 것;
입시 조건을 최적화하여 가짜 돌파구를 방지하고, 가격확인을 추가할 수 있습니다.
역동적인 상쇄, 추적 상쇄 등으로 상쇄 전략을 최적화할 수 있다.
자금 관리를 최적화하고, 포지션 기준을 조정하고, 1인당 위험을 낮추는 것.
필터링 시점을 최적화하여 트렌드와 저항 지점을 지원하는 지표와 결합하십시오.
수익성을 높이기 위해 피라미딩에 가입하십시오.
특정 품종에 대한 파라미터 최적화.
이 전략은 지표가동형의 중지 손실 전략으로, 거래 자동화, 위험 제어의 장점을 가지고 있으며, 양적 거래에 적합합니다. 그러나 지표 변수, 입시 필터, 중지 손실 전략, 자금 관리 등을 최적화해야하는 방향도 있습니다.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-11-09 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("example for panel signals", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//https://www.tradingview.com/script/m2a04xmb-noro-s-shiftma-tp-sl-strategy/
//Settings
lo = input(-5.0, title = "Long-line, %")
tp = input(5.0, title = "Take-profit")
sl = input(2.0, title = "Stop-loss")
//SMA
ma = sma(ohlc4, 3)
long = ma + ((ma / 100) * lo)
//Orders
avg = strategy.position_avg_price
if ma > 0
strategy.entry("Long", strategy.long, limit = long)
strategy.entry("Take", strategy.short, 0, limit = avg + ((avg / 100) * tp))
strategy.entry("Stop", strategy.short, 0, stop = avg - ((avg / 100) * sl))
//Cancel order
if strategy.position_size == 0
strategy.cancel("Take")
strategy.cancel("Stop")
//Lines
plot(long, offset = 1, color = color.black, transp = 0)
take = avg != 0 ? avg + ((avg / 100) * tp) : long + ((long / 100) * tp)
stop = avg != 0 ? avg - ((avg / 100) * sl) : long - ((long / 100) * sl)
takelinecolor = avg == avg[1] and avg != 0 ? color.lime : na
stoplinecolor = avg == avg[1] and avg != 0 ? color.red : na
plot(take, offset = 1, color = takelinecolor, linewidth = 3, transp = 0)
plot(stop, offset = 1, color = stoplinecolor, linewidth = 3, transp = 0)
//
disp_panels = input(true, title="Display info panels?")
h=high
info_label_off = input(20, title="Info panel offset")
info_label_size = input(size.large, options=[size.tiny, size.small, size.normal, size.large, size.huge], title="Info panel label size")
info_panel_x = timenow + round(change(time)*info_label_off)
info_panel_y = h
info_title= "-=-=-=-=- Info Panel -=-=-=-=-"
info_div = "\n\n------------------------------"
a = "\n\ Long : " + tostring(long)
b = "\n\ Stop loss : " + tostring(stop)
c = "\n\ TP : " + tostring(take)
// info_text = a+c+b
// info_panel = disp_panels ? label.new(x=info_panel_x, y=info_panel_y, text=info_text, xloc=xloc.bar_time, yloc=yloc.price, color=color.yellow, style=label.style_labelup, textcolor=color.black, size=info_label_size) : na
// label.delete(info_panel[1])