상대 변동성을 기준으로 3 개로 나눈 구간들을 활용해보겠습니다. 변동성이 가장 큰 구간에는 익절선과 가격에 더 붙어 있는 손절선 두 가지를, 변동성이 중간 정도인 구간에는 익절선과 손절선 두 가지를, 변동성이 없는 구간에서는 손절선을 길게 늘어트려 나오게 해보겠습니다. 이로써 3단 변신!
복습
일단 보기 ATR 값을 직관적으로 관찰하기 위하여, 위 차트에 오버레이 시킨 것이 아닌 칸을 나누어 가격과 변동성을 비교할 수 있게 그렸습니다. 지표의 색깔 별로 각기 다른 변동성 구간을 뜻 합니다.
원하는 전략은 이런 그림입니다. 상승 추세에서 발생하는 첫 고 변동성 시그널에서 매수 / 구간별 조건에 맞게 청산.
아이디어
현재 이런식으로 가격을 분할 한 모습입니다. 상대값을 사용하기 때문에, 추세의 시작 지점에서 수렴 -> 추세 로 가는 경우 급격하게 평균 값을 뛰어 넘는 캔들이 분명 나오며, 이러한 구간에는 고 변동성 구간으로 표시가 됩니다.
그리고 구간별로 각기 다른 손절선과 익절선 값을 정의해줌으로써 해당 가격이 가지고 있는 변동성에 따라 다른 청산 방법을 취하도록 조작해줍니다.
각 조건을 간단하게 정의한다면,
저변동성: 손절선
중변동성: 손절선과 익절선
고변동성: 높힌 손절선과 익절선
HighR = Relative > BandH and Relative < BandH2
HighR2 = Relative > BandH2
일단 어제 코딩에서 HighR = 중변동성, HighR2 = 고변동성 구간으로 정의했습니다. 여기에 사용하기 쉽게 저변동성도 정의해버립니다.
LowR = Relative < BandH
물론 위 저, 고 변동성이 아닌 상황이 모두 저 변동성 구간이긴 하지만, 나중에 조건절을 넣을때 길어지면 불편함으로...
손절선과 익절선을 넣는 방법은 새로운 방법을 도입하진않고 바로 이전 포스팅 주제였던, 선들에서 사용한 코드를 그대로 사용하겠습니다. 이번 주제는 변동성에 따라 바뀌는 조건들이니깐요!
lowband3input = input(1.5)
lowband3mainput = input(50)
lowband3 = sma(close,lowband3mainput) - atr(10)*(lowband3input)
plot(lowband3, color =red)
위 포스팅에서는 손절선 1종류, 1종류만 사용했으나, 저희는 익절선 1종류, 손절선 2종류가 필요하니, 계수가 덜 붙은 짧은 손절선 하나만 추가해주도록 합니다.
이전에 3 계수를 사용했으니, 이번에는 1.5를 기본 설정값으로~
관찰하기
옥헤이, 바탕화면 색깔로 현재 변동성에 대한 정보를 보여주고, 세 선으로 현재 손절과 익절에 대한 값을 보여주고 있습니다.
고변동성 구간의 경우 손절을 완전히 짧게 만들고 싶습니다.
lowband3 = sma(close,lowband3mainput) + atr(10)*(lowband3input)
과감하게 고변동성 구간의 경우 이동평균선의 위에 밴드를 설치하여 이동평균선을 터치하기도 전에 청산을 하게끔 조작해줍니다.
요런 구간에서 청산을 나가게끔 정의를 해주는 거죠~ 전략까지 만들어봐야 수익률 확인이 가능하기에 일단 설정만 바꿔놓고 패쓰!
변환 구간
lowband3p = if(HighR)
lowband3
만약 HighR 상황이라면 lowband3 =lowband 3p 이다! 를 정의해주고
plot(lowband3p, color =red, style= cross)
이걸 점선으로 그려줍니다. 여기서 선으로 그릴 경우 연결된 선으로 표현되어 시각적 해석이 불가능해집니다.
선일 경우는 요렇게 표현되고
점선일 경우 요렇게 표현. 이제 보니깐 HighR2 일 경우 인데, 잘못 써놨습니다. 후딱가서 고칩시다 ㅎㅎ. 오류 잡기에 시각화 만한게 없는 것 같습니다.
lowband2p = if(HighR or LowR)
lowband2
plot(lowband2p, color =red, style= cross)
이번에는 HighR 또는 LowR 일 경우 손절을 아래로 잡아라 라는 부분을 코딩해줍니다.
이런식으로 손절은 항상 걸려있는 선으로 표현되며, 상황에 따라 변하게 되죠.
highband2p= if(HighR or HighR2)
highband2
plot(highband2p, color =green, style= cross)
마지막으로 중, 고 변동성 구간일 경우 익절선을 걸어줍니다.
여기서 익절선에 대한 룰을 다시 한 번 언급드리자면, 가격이 익절선을 위에서 아래로 뚫고 내려올 경우 익절 되는 것 입니다! 즉, 가격이 익절선 위에 있어도 익절을 하지 않습니다.
Stop = close < lowband3p or close < lowband2p
TP = close[1] > highband2p and close < highband2p
손절과 익절을 정의해주고. (제발 상황에 따라 널값으로 보내어 비교가 안되길 빌며... 아니면 전부 if 로 해줘야...)
trendinput = input(200)
trend = close > sma(close,trendinput)
greencandle = close > open
BuySignal = trend and greencandle and HighR2
진입 시그널을 후딱 간편하게 정의해주고.
if (BuySignal)
strategy.entry("long", strategy.long)
if (Stop or TP)
strategy.close("long")
전략으로 만들어 버리면~ 끝
투박하지만 수익률은 나옵니다! 손실률이 작다는 점이 상당히 인상적이네요.
다음 포스팅에서는 투박하게 만든 보조지표를 정교하게 다듬어 보도록 하겠습니다. 현재 임의의 보조지표를 마구잡이로 넣은 상태로, 어떤 지표가 어떤 기능을 어떻게 하고 있는지 알기 어렵습니다. 많은 기능을 한 지표에 넣을 경우 생기는 상황으로, 최적화 하기 전에 거래 내역을 살펴보며 어떤 문제점이 있는지 살피는 작업이 매우 중요합니다!
질문, 댓글, 팔로우는 감사합니다!
새로운 아이디어, 종목 추천 등은 언제나 환영입니다!
Congratulations @roostermine! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :
You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word
STOP
To support your work, I also upvoted your post!
Vote for @Steemitboard as a witness to get one more award and increased upvotes!