
이 전략은 여러 지표의 조합을 사용하여 트렌드 방향과 거래 시기를 판단하여 압력 균형 방법을 사용하여 거래의 승률을 높인다. MACD, PSAR 및 EMA의 세 가지 지표를 사용하여 판단을 수행하고, 스톱 로즈와 결합하여 효율적인 수익을 얻습니다.
EMA를 이용하여 평균선을 계산하여 전체 트렌드 방향을 판단한다. EMA가 큰 값은 현재 상승 추세에 있으며, EMA가 작은 값은 현재 하락 추세에 있다.
MACD를 사용하여 빠른 선과 느린 선의 차이를 계산합니다. 차이는 0보다 크면 현재 상승 추세에 있으며, 차이는 0보다 작으면 현재 하락 추세에 있습니다.
PSAR을 사용하여 연속적인 변화점을 계산할 때, PSAR 값이 더 큰 것은 현재 하향 추세에 있고, PSAR 값이 더 작은 것은 현재 상승 추세에 있다.
위의 세 가지 지표가 결합되면 트렌드 일관성을 판단한다. 세 가지 지표 판단 결과가 일치하면 트렌드가 명확하게 나타납니다. 구매 또는 판매 작업을 수행 할 수 있습니다.
구매 및 판매 조건에 따라 포지션을 개설하고, 스톱 로스 스톱 포인트를 설정하고, 스톱 로스 또는 스톱 로스 조건이 달성되면 포지션을 청산하여 수익을 얻습니다.
구체적인 운영 규칙은 다음과 같습니다.
여러 지표로 추세를 판단하여 판단의 정확도를 높여줍니다.
압력 균형 방식을 사용하여, 트렌드가 명확할 때 포지션을 열고, 수익을 얻을 확률을 높인다.
스톱로스 스톱포인트를 설정하여 손실을 제한하고 수익을 고정합니다.
거래 규칙이 명확한 시스템, 절차화된 거래에 적합하다.
다양한 품종과 거래주기를 조정할 수 있습니다.
트렌드 판단에 오류가 있을 수 있으며, 이는 포지션 개시 방향의 오류로 이어진다.
시장의 급격한 변동으로 인해 지표가 잘못된 신호를 보낼 수 있습니다.
스톱포인트가 너무 커서 제 시간에 멈출 수 없습니다.
매개 변수가 잘못 설정되어 너무 자주 거래되거나 적시에 거래가 되지 않습니다.
거래 품종의 유동성이 부족하여 계획대로 손실을 막을 수 없습니다.
변수를 최적화하고, 스톱포드를 조정하고, 유동성이 좋은 거래 품종을 선택함으로써 위험을 줄일 수 있다.
동향 판단의 정확성을 최적화하기 위해 EMA 주기 변수를 조정한다.
MACD 단선, 느린 선의 주기 변수를 조정하여 MACD 지표의 민감성을 최적화한다.
스탠드 스탠드 비율 변수를 조정하여 스탠드 스탠드의 최적의 균형을 얻습니다.
다른 보조 지표들을 추가하여 포지션 개시 시점 선택의 정확성을 향상시킵니다.
거래 품종 선택을 최적화하여 유동성이 좋고 변동성이 높은 품종을 선택하십시오.
거래 시기를 조정하여 다른 품종의 시장 특성에 맞게 조정하십시오.
이 전략은 다양한 지표를 사용하여 트렌드를 판단하고, 트렌드가 명확할 때 포지션을 열고, 스톱로스를 설정하여 시장 움직임을 효과적으로 파악하고, 일정 수익을 보장하는 전제하에서 비교적 이상적인 수익을 얻을 수 있습니다. 매개 변수를 최적화하고 다른 보조 지표를 추가함으로써 전략의 안정성과 수익 수준을 더욱 향상시킬 수 있습니다. 이 전략의 거래 규칙은 명확하고 이해하기 쉽고, 프로그램 거래에 적합합니다.
/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 1h
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/
// © exlux99
//@version=4
strategy(title = "Crypto Scalper", overlay = true, pyramiding=1,initial_capital = 100, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.03)
len = input(60, minval=1, title="Length EMA")
src = input(close, title="Source")
out = ema(src, len)
//
fast_length = input(title="Fast Length MACD", type=input.integer, defval=12)
slow_length = input(title="Slow Length MACD", type=input.integer, defval=26)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Oscillator MA Type MACD", type=input.string, defval="EMA", options=["SMA", "EMA"])
sma_signal = input(title="Signal Line MA Type MACD", type=input.string, defval="EMA", options=["SMA", "EMA"])
// Calculating
fast_ma = sma_source == "SMA" ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source == "SMA" ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na
if bar_index > 0
firstTrendBar = false
SAR := nextBarSAR
if bar_index == 1
float prevSAR = na
float prevEP = na
lowPrev = low[1]
highPrev = high[1]
closeCur = close
closePrev = close[1]
if closeCur > closePrev
uptrend := true
EP := high
prevSAR := lowPrev
prevEP := high
else
uptrend := false
EP := low
prevSAR := highPrev
prevEP := low
firstTrendBar := true
SAR := prevSAR + start * (prevEP - prevSAR)
if uptrend
if SAR > low
firstTrendBar := true
uptrend := false
SAR := max(EP, high)
EP := low
AF := start
else
if SAR < high
firstTrendBar := true
uptrend := true
SAR := min(EP, low)
EP := high
AF := start
if not firstTrendBar
if uptrend
if high > EP
EP := high
AF := min(AF + increment, maximum)
else
if low < EP
EP := low
AF := min(AF + increment, maximum)
if uptrend
SAR := min(SAR, low[1])
if bar_index > 1
SAR := min(SAR, low[2])
else
SAR := max(SAR, high[1])
if bar_index > 1
SAR := max(SAR, high[2])
nextBarSAR := SAR + AF * (EP - SAR)
tplong=input(0.245, step=0.005)
sllong=input(1.0, step=0.005)
tpshort=input(0.055, step=0.005)
slshort=input(0.03, step=0.005)
if (uptrend and hist >0 and close < out)
strategy.entry("short", strategy.short, stop=nextBarSAR, comment="short")
strategy.exit("short_tp/sl", "short", profit=close * tpshort / syminfo.mintick, loss=close * slshort / syminfo.mintick, comment='SHORT EXIT', alert_message = 'closeshort')
if (not uptrend and hist <0 and close > out)
strategy.entry("long", strategy.long, stop=nextBarSAR, comment="long")
strategy.exit("short_tp/sl", "long", profit=close * tplong / syminfo.mintick, loss=close * sllong / syminfo.mintick, comment='LONG EXIT', alert_message = 'closelong')