
이 전략은 K 선의 개체 길이에 기초하여 다공간 방향을 판단한다. 그것은 최근 30개의 K 선의 평균 개체 길이를 계산한다. 태양 선의 개체 길이가 평균 개체 길이보다 크면 더 하고, 음 선의 개체 길이가 평균 개체 길이보다 크면 공백한다.
이 전략은 먼저 K 선의 개체 길이 body를 계산하고, 최근 30개의 K 선의 개체 길이 sbody의 평균값을 계산한다.
오늘 K 선이 음선 ((bar==-1) 이고, 개체가 평균 개체 길이보다 더 큰 경우, 다중을 열고 ((up1) .
오늘 K선이 태양선 ((bar==1) 이고, 개체 길이가 평균 개체 길이보다 크면 빈 표 ((dn1)) 를 열는다.
다중을 열고, 오늘 K선이 양선 ((bar==1) 이고, 현재 포지션은 수익 상태인 경우, 다중을 청산한다.
공명 상표가 열린 후, 오늘 K 선이 음선 ((bar==-1) 이고, 현재 포지션이 수익 상태인 경우, 공명 상표는
이 전략은 단순하고 효과적으로 K선 개체의 길이를 사용하여 시장 추세를 판단합니다. 개체가 길어지면 추세가 강하다는 것을 나타냅니다. 따라서 개체 길이를 다공간 판단의 근거로 사용합니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
전략적 아이디어는 간단하고 명확하며, 이해하기 쉽고, 실행하기 쉽습니다.
K선 개체 길이를 사용하여 트렌드를 판단하고, 노이즈 방해를 피한다.
동적 평균 계산을 사용하여 시장의 변화에 적응할 수 있다.
이윤 평준화 조건을 설정하면 전략 수익률을 높일 수 있다.
다양한 시장 환경에 적용할 수 있는 전략 변수
이 전략에는 몇 가지 위험도 있습니다.
더 긴 개체는 강세를 나타내는 것은 아니지만, 정상적인 변동일 수 있다.
평균 엔터티 길이의 시간 창을 잘못 설정하면 놓친 거래 기회가 발생할 수 있습니다.
이 사건으로 인해 전략적 손실이 발생할 수 있습니다.
과잉 공백 지위를 너무 오랫동안 보유하면 손실이 커질 수 있습니다.
위험과 대응하는 방법:
다른 지표와 함께 트렌드를 판단하여 잘못된 트레이드를 피하십시오.
다양한 변수를 테스트하고, 평균 개체 길이의 계산을 최적화한다.
단편적 손실을 제어하기 위해 Stop Loss Stop 조건을 설정합니다.
포지션 개시 및 포지션 논리를 최적화하여 포지션을 너무 오래 보유하지 않도록하십시오.
이 전략은 다음과 같은 측면에서 최적화될 수 있습니다.
MACD, RSI 등의 지표와 결합하여 트렌드를 판단하여 일반적인 변동으로 인해 잘못된 신호를 피하십시오.
다양한 평균 개체 길이 시간 창 변수를 테스트하여 최적의 변수 조합을 찾습니다.
포지션 개시량 제어 논리를 추가하여 손실 횟수가 증가함에 따라 포지션 개시량을 점차적으로 줄입니다.
이동 중지 또는 이윤률 중지 탈퇴 조건을 설정하고 단편 손실 비율을 제어하십시오.
포지션 개시 및 포지션 조건을 최적화하여 유효하지 않은 거래를 피하십시오. 예를 들어, 연속으로 3 개의 K 라인 엔티티가 더 길면 포지션을 개시하십시오.
특정 기간 동안 또는 중요한 자료가 발표되기 전후로 거래를 피하고, 환율 충격으로 인한 손실을 통제하십시오.
이 전략의 전체적인 아이디어는 명확하고 이해하기 쉽고, K 선의 개체와 그 평균 길이를 비교하여 진입 시기를 판단한다. 전략 최적화 공간은 넓고, 여러 가지 측면에서 최적화 조정이 가능하며, 전략 매개 변수가 다른 시장 환경에 더 적합하다. 전체적으로, 이 전략은 양적 거래 진입 전략으로 충분히 간단하고 신뢰할 수 있으며, 초보자 상인들이 사용하고 학습하기에 적합하다. 계속 최적화하고 더 많은 지표를 조합함으로써 전략 수익률과 안정성을 더욱 향상시킬 수 있다.
/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=3
strategy(title = "Noro's ColorBar Strategy v1.0", shorttitle = "ColorBar str v1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usebody = input(true, defval = true, title = "Use body")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//Signals
bar = close > open ? 1 : close < open ? - 1 : 0
body = abs(close - open)
sbody = ema(body, 30)
up1 = bar == -1 and (body > sbody or usebody == false)
dn1 = bar == 1 and (body > sbody or usebody == false)
plus = (close > strategy.position_avg_price and strategy.position_size > 0) or (close < strategy.position_avg_price and strategy.position_size < 0)
exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and plus
if up1
strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))
if dn1
strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))
if time > timestamp(toyear, tomonth, 31, 00, 00) or exit
strategy.close_all()