
쌍평선 반전 돌파 전략은 123 반전 전략과 가격과 평선 격차 전략의 두 가지 전략을 결합한 조합 전략이다. 이 전략의 주요 아이디어는 123 반전이 신호를 형성하는 동시에, 가격과 지정된 주기의 평선 격차도 대응 신호를 형성할 때 거래 신호를 생성하는 것이다.
이중 평행선 역전 돌파 전략은 두 부분으로 구성됩니다.
123 역전 전략의 거래 신호는 다음과 같습니다: 2 일 연속으로 종결 가격 역전 ((즉, 전날 종결 가격이 높고, 다음 날 종결 가격이 낮다; 또는 전날 종결 가격이 낮고, 다음 날 종결 가격이 높다), 동시에 9 일 무작위 지표 K 라인이 특정 수준 이하에 있다 ((부정 50), 이렇게 구매 신호를 형성한다; 2 일 연속으로 종결 가격 역전, 동시에 9 일 무작위 지표 K 라인이 특정 수준 이상이다 ((부정 50), 이렇게 판매 신호를 형성한다.
가격과 평균선 격차 전략은 가격과 지정된 주기 평균선 (기본 14일) 사이의 차이의 비율을 계산한다. 격차가 특정 수준 (기본 3%) 보다 작으면 구매 신호를 발생시키고, 격차가 특정 수준 (기본 0.54%) 보다 크면 판매 신호를 발생시킨다.
쌍평선 역전 돌파 전략은 상술한 두 전략의 거래 신호가 동방향일 때, 즉 둘 다 구매 또는 둘 다 판매 할 때, 이 전략이 실제 거래 신호를 생성한다.
이중 평행선 반전 돌파 전략은 반전 전략과 트렌드 전략의 장점을 결합하여 긴 것을 줄여주는 전략이라고 할 수 있다.
123 역전 전략은 역전 전략으로서, 가격 역전 시 역전 기회를 잡을 수 있다. 가격과 평균선 격차 전략은 추세 추적 전략으로서, 더 긴 선의 추세를 잡을 수 있다. 이 둘을 결합하면, 단기 가격 역전을 적시에 잡을 수 있고, 장기적인 추세를 잡을 수 있으며, 포착되는 것을 피할 수 있다.
또한, 두 가지 전략의 신호 동향을 요구함으로써, 유효하지 않은 거래의 횟수를 효과적으로 줄일 수 있으며, 문자 잡음 비율을 향상시킬 수 있다.
이중 평행 역전 돌파 전략은 두 가지 전략의 장점을 통합적으로 사용하지만, 두 가지 전략의 각자의 위험을 물려받기도 한다.
123 반전 부분의 경우, 2 일 연속 반전이 가격 반전을 완전히 보장하지 않으며, 단기 회귀 시세에 의한 가짜 반전일 수 있다. 또한, 무작위 지표 매개 변수를 잘못 설정하면 신호 품질이 떨어질 수 있다.
가격과 평균선 간격 부분에서 평균선 파라미터를 잘못 설정하면 신호 지연이 발생할 수 있다. 또한 가격과 평균선 간격은 트렌드 방향을 판단할 수 없으며 기계적으로 신호를 생성할 수 있다.
요약하자면, 이 전략의 주요 위험은 파라미터를 잘못 설정하고 판단 오류에 있다. 파라미터를 최적화하여, 스톱 스톱을 설정하거나, 인위적으로 개입하는 거래를 통해 위험을 회피할 수 있다.
쌍평선 역전 돌파 전략은 다음과 같은 측면에서 최적화될 수 있다:
다양한 수단의 조합을 통해 전략의 안정성과 수익성을 더욱 높일 수 있을 것으로 보인다.
쌍평선 반전 돌파 전략은 반전 전략과 트렌드 전략을 통합하여 두 전략 신호가 동시적으로 실제 거래 신호를 생성한다. 그것은 단기 가격 반전 기회를 포착하고 장기 트렌드를 추적 할 수 있으며, 포장을 피할 수 있습니다. 동시에 쌍 신호를 조합하여 신호의 신뢰성을 향상시킬 수 있습니다. 이 전략은 여러 가지 방법으로 최적화 업그레이드를 할 수 있으며, 강력한 기능이 있으며, 광범위한 양적 거래 전략입니다.
/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-17 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 13/04/2021
// This is combo strategies for get a cumulative signal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
// The strategy sells at market, if close price is lower than the previous close price
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Percent difference between price and MA
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
vFast = sma(stoch(close, high, low, Length), KSmoothing)
vSlow = sma(vFast, DLength)
pos = 0.0
pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0)))
pos
DBP_MA(Length,SellZone,BuyZone) =>
pos = 0.0
xSMA = sma(close, Length)
nRes = abs(close - xSMA) * 100 / close
pos:= iff(nRes < BuyZone, 1,
iff(nRes > SellZone, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Difference between price and MA", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Difference between price and MA ----")
LengthDBP = input(14, minval=1)
SellZone = input(0.54, minval=0.01, step = 0.01)
BuyZone = input(0.03, minval=0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDBP_MA = DBP_MA(LengthDBP,SellZone,BuyZone)
pos = iff(posReversal123 == 1 and posDBP_MA == 1 , 1,
iff(posReversal123 == -1 and posDBP_MA == -1, -1, 0))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1 , 1, pos))
if (possig == 1 )
strategy.entry("Long", strategy.long)
if (possig == -1 )
strategy.entry("Short", strategy.short)
if (possig == 0)
strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )