
쌍평균선 역전 거래 전략은 단기 및 장기 두 개의 다른 기간의 간단한 이동 평균을 계산하여 가격과 이동 평균의 관계에 따라 거래 신호를 생성합니다. 단기평균선 상에서 장기평균선을 통과하면 더 많이하고, 단기평균선 아래에서 장기평균선을 통과하면 더 적습니다. 이 전략은 트렌드 추적 전략입니다.
이 전략은 입력 파라미터를 통해 두 개의 다른 주기 길이의 간단한 이동 평균을 설정합니다. 짧은 주기선은 빠른 라인, 긴 주기선은 느린 라인이라고합니다. 빠른 라인은 가격 변화가 더 빠르게 반응하여 단기 트렌드를 포착합니다. 느린 라인은 가격 변화가 더 느리게 반응하여 단기 시장 소음을 필터링하여 주요 트렌드를 포착합니다. 빠른 라인을 통과하면 가격이 상승하고 더 많은 것을 할 수 있으며 빠른 라인을 통과하면 가격이 하락하고 더 많은 것을 할 수 있습니다.
구체적으로, 전략은 sma () 함수를 통해 두 개의 평균선을 계산하고 계산 결과를 xSMA (속선) 와 빠른 선에 부여한다. 전략은 클로즈 가격을 사용하여 평균선을 계산한다. 클로즈 가격이 xSMA를 넘으면 더 많이 하고, 클로즈 가격이 xSMA를 넘으면 더 텅 비어있다. 전략은 거래 시간 범위를 제한하여 지정된 시간 범위 내에서만 거래 신호를 발송한다.
각 거래에 대해 스톱 스톱 손실을 설정하고 스톱 스톱 손실이 도달했을 때 즉시 스톱 스톱 손실을 설정합니다. 동시에, 전략은 barcolor 함수를 통해 가격과 느린 선의 관계를 K 선에 표시합니다: 더 많이 할 때, K 선은 녹색입니다.
평균선 매개 변수를 조정하거나, 스톱 스톱 손실 전략을 최적화하거나, 시간 제한을 취소하거나, 더 합리적인 거래 기간을 설정하여 위험을 줄일 수 있습니다. 너무 많은 가짜 신호를 피하기 위해 필터링 조건으로 다른 지표와 결합하는 것도 고려할 수 있습니다.
쌍평선 역전 거래 전략overall은 간단한 실용적인 트렌드 추적 전략이다. 그것은 평선의 부드러운 작용을 최대한 활용하여 트렌드 방향을 식별하고, 느린 느린 평선과 함께 거래 신호를 생성한다. 이 전략은 구현하기 쉽고, 아이디어가 명확하며, 초보자에게 적합하다. 그러나 그것은 더 많은 가짜 신호와 시간 지연 문제를 일으킬 수 있다.
/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 4h
basePeriod: 15m
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/
// © HPotter
// Simple SMA strategy
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors
//@version=4
timeinrange(res, sess) => not na(time(res, sess)) ? 1 : 0
strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true)
Resolution = input(title="Resolution", type=input.resolution, defval="D")
Source = input(title="Source", type=input.source, defval=close)
xSeries = security(syminfo.tickerid, Resolution, Source)
Length = input(title="Length", type=input.integer, defval=14, minval=2)
TriggerPrice = input(title="Trigger Price", type=input.source, defval=close)
TakeProfit = input(50, title="Take Profit", step=0.01)
StopLoss = input(20, title="Stop Loss", step=0.01)
UseTPSL = input(title="Use Take\Stop", type=input.bool, defval=false)
BarColors = input(title="Painting bars", type=input.bool, defval=true)
ShowLine = input(title="Show Line", type=input.bool, defval=true)
UseAlerts = input(title="Use Alerts", type=input.bool, defval=false)
timeframe = input(title="Time Frame", defval="15")
timerange = input(title="Time Range", defval="2300-0800")
reverse = input(title="Trade Reverse", type=input.bool, defval=false)
pos = 0
xSMA = sma(xSeries, Length)
pos := iff(TriggerPrice > xSMA, 1,
iff(TriggerPrice < xSMA, -1, nz(pos[1], 0)))
nRes = ShowLine ? xSMA : na
alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY')
alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL')
alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position')
possig =iff(pos[1] != pos,
iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos)), 0)
if (possig == 1 and timeinrange(timeframe, timerange))
strategy.entry("Long", strategy.long)
if (possig == -1 and timeinrange(timeframe, timerange))
strategy.entry("Short", strategy.short)
if (timeinrange(timeframe, timerange) == 0)
strategy.close_all()
if (UseTPSL)
strategy.close("Long", when = high > strategy.position_avg_price + TakeProfit, comment = "close buy take profit")
strategy.close("Long", when = low < strategy.position_avg_price - StopLoss, comment = "close buy stop loss")
strategy.close("Short", when = low < strategy.position_avg_price - TakeProfit, comment = "close buy take profit")
strategy.close("Short", when = high > strategy.position_avg_price + StopLoss, comment = "close buy stop loss")
nColor = BarColors ? strategy.position_avg_price != 0 and pos == 1 ? color.green :strategy.position_avg_price != 0 and pos == -1 ? color.red : color.blue : na
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)