이 전략은 이동 평균에 기반한 다중 하위 전략이다. 그것은 3개의 다른 변수의 이동 평균을 사용하여 거래 신호를 생성한다. 가격이 이동 평균을 상회할 때 더하고, 하락할 때 공백한다. 이 전략은 3개의 이동 평균을 가지고 있으며, 단계별로 더 많은 공백을 수행하여 트렌드 추적을 구현한다.
이 전략은 sma 함수를 사용하여 len의 길이를 계산하는 이동 평균 ma ᄂ을 계산합니다. 그리고는 ma에 따라 3개의 평평한 이동 평균 longline1, longline2, longline3를 계산합니다. 그 중 longline1 평평한 -4%, longline2 평평한 -5%, longline3 평평한 -6%입니다.
구매 신호가 생성될 때, 현재 포지션이 없다면, 가격이 롱라인 1을 통과할 때 포지션을 더 한다. 1손 포지션이 있다면, 가격이 롱라인 2을 통과할 때 1손을 다시 열다. 2손 포지션이 있다면, 가격이 롱라인 3을 통과할 때 1손을 다시 열고, 최대 3손 포지션을 더 한다.
팔기 신호가 생성될 때, 만약 현재 더 많은 포지션을 가지고 있다면, 가격이 마를 뚫을 때 평소 포지션을 니다.
이 전략은 더 많은 것을 할 수 있으며, 트렌드 추적 효과를 얻을 수 있습니다.
위험 해결 방법:
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
다른 지표 판단을 추가하여 트렌드 방향을 결정합니다. 예를 들어 MACD를 사용하여 트렌드 판단이 강합니다.
이동 평균 변수를 최적화하여 최적의 변수 조합을 찾습니다.
“이번 선거는 민주당의 선거인단, 민주당의 선거인단, 민주당의 선거인단, 민주당의 선거인단, 민주당의 선거인단, 민주당의 선거인단,
ATR에 따라 스톱포드를 설정할 수 있는 모바일 스톱포드 메커니즘이 추가되었습니다.
시장의 변동에 따라 지수를 조정할 수 있으며, 큰 변동이 있을 때 지분을 줄일 수 있습니다.
다양한 품종 변수의 효과를 테스트하여 전략에 가장 적합한 품종을 찾습니다.
특정 형태가 발생했을 때 Exit 모듈을 개발하여 Exit를 고려합니다.
전체적으로 볼 때, 이 전략은 이동 평균을 사용하여 트렌드 방향을 판단하여 거래하고, 분단 분단 단위로 트렌드를 추적하여 이익을 얻을 수 있습니다. 그러나 약간의 지연이 존재하고, 위험을 높이는 위험이 있습니다. 보조 판단 지표, 최적화 파라미터, 위치 관리 조정, 손실 제도를 추가하는 등의 방법을 추가하여 이 전략을 최적화 할 수 있습니다.
/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2019
//@version=4
strategy(title = "Noro's ShiftMA-multi Strategy v1.0", shorttitle = "ShiftMA-multi", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)
//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Lenghs")
src = input(ohlc4, title = "MA Source")
longlevel1 = input(-4.0, title = "Long line 1")
longlevel2 = input(-5.0, title = "Long line 2")
longlevel3 = input(-6.0, title = "Long line 3")
needoffset = input(true, title = "Offset")
//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick
//MA
ma = sma(src, len)
longline1 = round(ma * ((100 + longlevel1) / 100) * mult) / mult
longline2 = round(ma * ((100 + longlevel2) / 100) * mult) / mult
longline3 = round(ma * ((100 + longlevel3) / 100) * mult) / mult
//Lines
offset = needoffset ? 1 : 0
plot(ma, color = color.blue)
plot(longline1, offset = offset, color = color.lime)
plot(longline2, offset = offset, color = color.lime)
plot(longline3, offset = offset, color = color.lime)
//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
lots = 0.0
if ma > 0
lots := round(size / lot)
strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0))
lots := round(size / lot)
strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1))
lots := round(size / lot)
strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2))
if size > 0
strategy.entry("TP", strategy.short, 0, limit = ma)