초상향 쌍평균선 전략은 초상향 지표와 간단한 이동 평균을 기반으로 한 양적 거래 전략이다. 이 전략은 초상향 지표를 사용하여 시장의 경향 방향을 판단하고, 200일 간단한 이동 평균과 결합하여 필터링을 수행하고, 큰 경향 방향에서 포지션을 열고 더 많은 공백을 한다.
이 전략은 두 가지 지표를 사용합니다.
슈퍼 트렌드 지표: 그것은 실제 파장 ATR과 곱하기에 따라 오프 트레일과 오프 트레일을 계산한다. 상단 트레일보다 높은 상장 가격이 부진하고, 하단 트레일보다 낮은 것은 부진이다.
200일 간소 이동 평균: 최근 200일간의 종결 가격에 대한 수학적 평균을 한다. 종결 가격이 이 선보다 높으면 큰 추세 부진을 나타내고, 이 선보다 낮으면 큰 추세 하향을 나타낸다.
전략적 논리:
초상향 지표가 우세한 경우 ((( 초상향 지표 값이 0보다 크며, 마감 가격은 200일 평균선보다 높을 때, 상향 입장을 한다。
초상향 지표가 하락할 때 ((( 초상향 지표 값이 0보다 작고, 종결 가격이 200일 평균선 이하일 때, 마이너스 상장을 한다.
초트렌드 지표와 이전 신호가 반전될 때 평점으로 출전한다.
스톱로스는 25%로 설정되어 있습니다.
이 전략은 단기 트렌드를 판단하는 초 트렌드 지표와 200 일 평균선을 판단하는 장기 트렌드를 결합하여 가짜 브레이크를 효과적으로 필터링하여 거래 빈도를 줄이는 동시에 승률을 높일 수 있습니다. 큰 시장에서, 트렌드는 충분히 명확하고, 손실이 크고, 이익이 많습니다.
이 전략의 주요 위험은 상쇄 손실이 크며, 높은 레버리지의 경우 강제 청산의 위험을 증가시킨다. 또한, 시장이 정리될 때, 초 트렌드 지표는 과도한 신호를 생성하여 거래 빈도와 비용을 증가시킨다.
ATR 주기, 곱하기 변수 및 중지 손실의 폭을 적절하게 조정하여 위험을 줄일 수 있습니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
ATR 주기와 곱셈 변수를 조정하고, 오버 트렌드 지표의 변수를 최적화합니다.
다른 평평한 지표들, 예를 들어 EMA, VIDYA와 같은 것을 시도해 보세요.
BOLL 채널이나 KD 지표와 같은 다른 보조 지표를 추가하여 신호를 더 필터링하십시오.
손해배상 전략의 최적화, 예를 들어, 이득과 손해의 균형 지점으로 이동하거나, 대차적으로 손해배상을 중지한다.
이 전략은 전체적으로 매우 실용적이며, 단기 트렌드 판단과 장기 트렌드 판단을 고려하고, 손해 중지 설정도 합리적입니다. 파라미터를 조정하고 최적화하면 여전히 더 나은 효과를 얻을 수 있으며, 실무에서 검증하고 사용 할 가치가 있습니다.
/*backtest
start: 2023-12-16 00:00:00
end: 2024-01-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © wielkieef
//@version=5
strategy("Smart SuperTrend Strategy ", shorttitle="ST Strategy", overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.01)
// Parametry wskaźnika SuperTrend
atrLength = input(10, title="Lenght ATR")
factor = input(3.0, title="Mult.")
// Parametry dla SMA
lengthSMA = input(200, title="Lenght SMA")
// Parametry dla Stop Loss
sl = input.float(25.0, '% Stop Loss', step=0.1)
// Obliczanie ATR
atr = ta.atr(atrLength)
// Obliczanie podstawowej wartości SuperTrend
up = hl2 - (factor * atr)
dn = hl2 + (factor * atr)
// Obliczanie 200-SMA
sma200 = ta.sma(close, lengthSMA)
// Inicjalizacja zmiennych
var float upLevel = na
var float dnLevel = na
var int trend = na
var int trendWithFilter = na
// Logika SuperTrend
upLevel := close[1] > upLevel[1] ? math.max(up, upLevel[1]) : up
dnLevel := close[1] < dnLevel[1] ? math.min(dn, dnLevel[1]) : dn
trend := close > dnLevel[1] ? 1 : close < upLevel[1] ? -1 : nz(trend[1], 1)
// Filtr SMA i aktualizacja trendWithFilter
trendWithFilter := close > sma200 ? math.max(trend, 0) : math.min(trend, 0)
// Logika wejścia
longCondition = trend == 1
shortCondition = trend == -1
// Wejście w pozycje
if (longCondition) and close > sma200
strategy.entry("Long", strategy.long)
if (shortCondition) and close < sma200
strategy.entry("Short", strategy.short)
// Warunki zamknięcia pozycji
Long_close = trend == -1 and close > sma200
Short_close = trend == 1 and close < sma200
// Zamknięcie pozycji
if (Long_close)
strategy.close("Long")
if (Short_close)
strategy.close("Short")
// Kolory superTrendu z filtrem sma200
trendColor = trendWithFilter == 1 ? color.green : trendWithFilter == -1 ? color.red : color.blue
//ploty
plot(trendWithFilter == 1 ? upLevel : trendWithFilter == -1 ? dnLevel : na, color=trendColor, title="SuperTrend")
// Stop Loss ( this code is from author RafaelZioni, modified by wielkieef )
per(procent) =>
strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
// --------------------------------------------------------------------------------------------------------------------
strategy.exit('SL',loss=per(sl))
//by wielkieef