
이 전략은 코인베이스 거래소의 3분 K선에 기반한 고주파 거래 전략이다. K선의 상하선을 계산함으로써, 가격이 단기간에 반전할 기회가 있는지 판단한다. 가격이 상승하거나 하락할 때, 전략은 추세와 반대되는 위치를 취하여 짧은 선의 반전을 기대한다.
이 전략은 주로 가격이 단기간에 오버 바이어 또는 오버 소즈가 될 가능성을 판단합니다. 오버 바이어 또는 오버 소즈는 일반적으로 시장의 과도한 낙관주의 또는 비관주의 감정에서 비롯됩니다. 이러한 일시적인 감정 불균형이 발생하면 가격이 일반적으로 반전됩니다.
구체적으로, 전략은 K선의 상하 그림자 선의 크기를 계산한다. 그림자 선이 커질수록 현재 K선이 끝나지 않은 상태에서 상가력과 상가력의 대립이 더 강하다는 것을 나타낸다. 상하 그림자가 너무 커지면 많은 거래가 K선 종결 전에 낙점되어 패망하는 것을 나타내고, 다중의 힘이 쇠퇴할 것을 예고한다.
이 판단 논리에 따라, 전략이 그림자 라인이 지나치게 커지면 (즉, 가격이 단기간에 초과 구매 초과 판매가 발생하면), 추세와 반대되는 포지션을 선택하십시오. 다중 포지션에 들어가는 스톱 손실 가격은 아래 그림자 라인의 중간 가격이며, 공허 포지션에 들어가는 스톱 손실 가격은 위 그림자 라인의 중간 가격입니다.
이 전략의 가장 큰 장점은 시장의 비이성적인 단기 변동으로 인해 반대의 중매를 실현하는 것입니다. 그것은 더 적은 자금이 필요하지만 더 높은 효율성을 얻을 수 있습니다.
또 다른 장점은 코인베이스가 변동성이 높은 거래소라는 점입니다. 이 전략은 가격의 급격한 변동성을 활용하여 수익을 창출합니다.
이 전략의 가장 큰 위험은 단기 가격 변동이 예측 가능하지 않다는 것입니다. 상하의 그림자 선의 크기는 가격 반전의 모든 정보를 캡처 할 수 없습니다. 거래자의 비이성적 감정이 논리 법칙을 반드시 따르지 않습니다. 따라서 이 전략은 여전히 약간의 무작위성의 위험에 직면합니다.
또한, 중지 지점의 설정도 매우 중요합니다. 중지 지점이 너무 느슨하면 전략의 손실이 증가할 수 있으며, 중지 지점이 너무 엄격하면 기회를 놓칠 수 있습니다. 여기서 손실 비율과 승률 사이의 균형을 찾아야 합니다.
이 전략은 다음의 몇 가지 측면에서 더 개선될 수 있습니다.
이 전략은 전체적으로 전형적인 통계적 중개 전략이다. 그것은 가격의 단기적인 비합리적인 변동에서 이익을 얻으려고 시도하며, 어느 정도 논리성과 실행성을 가지고 있다. 다음 단계는 더 많은 차원에서 실험을 최적화하여 전략의 파라미터 설정과 거래 규칙을 더 과학적으로 체계화 할 수 있다.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//for coinbase, 3min logic
//This strategy trades against the short term trend. The first position can be either long or short.
//In the short term, prices fluctuate up and down on wide spread exchanges.
//And if the price moves to one side, the price tends to return to its original position momentarily.
//This strategy set stop order. Stop price is calculated with upper and lower shadows.
strategy("ndb_mm_for_coinbase_btcusd", overlay=true, initial_capital=100000, slippage=50)
fromyear = input(2019, minval = 2017, maxval = 2100, title = "From Year")
frommonth = input(12, minval = 1, maxval = 12, title = "From Month")
fromday = input(1, minval = 01, maxval = 31, title = "From day")
toyear = input(2100, minval = 1900, maxval = 2100, title = "To Year")
tomonth = input(12, minval = 01, maxval = 12, title = "To Month")
today = input(31, minval = 01, maxval = 31, title = "To day")
end = true
length = input(3, title="period")
mag = input(1.2, title="sigma", minval=0.1, step=0.1)
up_shadow = abs(high - max(open, close))
dn_shadow = abs(low - min(open, close))
up_shadow_ma = sma(up_shadow, length) * mag
dn_shadow_ma = sma(dn_shadow, length) * mag
upper = close + dn_shadow_ma
lower = close - up_shadow_ma
plot(upper, color=red)
plot(lower, color=blue)
if strategy.position_size == 0
strategy.entry("Long", strategy.long)
if 0 < strategy.position_size
strategy.entry("Short", strategy.short, stop=lower, when=end)
if 0 > strategy.position_size
strategy.entry("Long", strategy.long, stop=upper, when=end)