참조데이터를 사용하여 특정종목과 특정종목이 포함된 지수의 상대강도를 비교하고 싶습니다.
아래는 어떤 분의 질문에 운영자님이 작성해 주셨던 것인데요...
input : N(20);
var : RSD(0),MAV(0),MRS(0);
RSD = Data1(c)/data2(c) * 100;
mav = Data1(ma(RSD,N));
MRS = ((RSD /mav) - 1 ) * 100;
Plot1(MRS);
plot2(0);
위의 식은 20일의 기간 동안 2개종목의 비율과 해당 비율을 단순평균한 값으로 하나의 mrs가 계산되게 되어 있는데
트레이딩뷰에서 보니 63일(3달), 126일(6달), 252일(12달)로 세개의 RS를 나타내면서 단순평균이 아니라 설정한 기간값의 구간별로 가중값을 주어 가중평균하여 나타내는 지표가 있더라구요
아래는 트레이딩뷰에서 발췌한 것인데 예스트레이더에서 똑같이 구현해 보고 싶습니다. 바쁘시겠지만 지표 작성 꼭 좀 부탁드리겠습니다.
//@version=3
study("IBD RS", overlay=true)
src = security(ticker, "D", close)
mo_12 = 0.4*((src)/src[63]) + 0.2*((src)/src[126]) + 0.2*((src)/src[189]) + 0.2*((src)/src[252])
mo_6 = 0.4*((src)/src[21]) + 0.2*((src)/src[63]) + 0.2*((src)/src[84]) + 0.2*((src)/src[126])
mo_3 = 0.4*((src)/src[11]) + 0.2*((src)/src[21]) + 0.2*((src)/src[42]) + 0.2*((src)/src[63])
plot(100*mo_12, style=line, linewidth=3, color=#1E90FF, transp=0)
plot(100*mo_6, style=line, linewidth=2, color=#1E90FF, transp=0)
plot(100*mo_3, style=line, linewidth=1, color=#1E90FF, transp=0)
※ 참고로 mo_12는 12개월을 의미하며 한달을 21일로 잡을때 63은 3개월, 126은 6개월의 기간을 의미하는 식입니다.
답변 1
예스스탁
예스스탁 답변
2023-03-29 09:39:29
안녕하세요
예스스탁입니다.
저희 프로그램의 차트에서는 분봉이하의 주기의 경우
차트의 첫봉의 날짜 +99일 정도의 일간데이타가 내부적으로 제공됩니다.
올려주신 내용에 252일전 종가와 같이 긴기간 이전일의 종가가 사용되는데
차트 주기가 일봉이면 관계가 없지만 사용하시는 주기가 분봉이하이면
지정한 주기에 따라서는 해당 기간까지 일간데이타가 제공되지 않을수 있습니다.
차트틑 최대 1만개봉 조회가 되므로 1만개 조회해서 1번식을 적용해 보시고
만약 1번식으로 선이 나오지 않는 다면 2번식을 이용하셔야 합니다.
2번식 참조데이타를 이용하는 식이고 차트에 참조데이타로 일봉을 추가하고 해당식 적용하셔야 합니다.
차트왼쪽 상단의 종목선택 버튼 중 오른쪽이 참조데이타를 선택해 추가하는 버튼입니다.
기본종목과 같은 종목을 일간으로 지정해 추가하시면 됩니다.
1
var : mo_12(0),mo_6(0),mo_3(0);
if DayClose(252) > 0 Then
{
mo_12 = 0.4*((DayClose(0))/DayClose(63)) + 0.2*((DayClose(0))/DayClose(126)) + 0.2*((DayClose(0))/DayClose(189)) + 0.2*((DayClose(0))/DayClose(252));
plot1(100*mo_12);
}
if DayClose(126) > 0 Then
{
mo_6 = 0.4*((DayClose(0))/DayClose(21)) + 0.2*((DayClose(0))/DayClose(63)) + 0.2*((DayClose(0))/DayClose(84)) + 0.2*((DayClose(0))/DayClose(126));
plot2(100*mo_6);
}
if DayClose(62) > 0 Then
{
mo_3 = 0.4*((DayClose(0))/DayClose(11)) + 0.2*((DayClose(0))/DayClose(21)) + 0.2*((DayClose(0))/DayClose(42)) + 0.2*((DayClose(0))/DayClose(63));
plot3(100*mo_3);
}
2
var : src(0,Data2),mo_12(0,Data2),mo_6(0,Data2),mo_3(0,Data2);
src = Data2(c);
mo_12 = 0.4*((src)/src[63]) + 0.2*((src)/src[126]) + 0.2*((src)/src[189]) + 0.2*((src)/src[252]);
mo_6 = 0.4*((src)/src[21]) + 0.2*((src)/src[63]) + 0.2*((src)/src[84]) + 0.2*((src)/src[126]);
mo_3 = 0.4*((src)/src[11]) + 0.2*((src)/src[21]) + 0.2*((src)/src[42]) + 0.2*((src)/src[63]);
plot1(100*mo_12);
plot2(100*mo_6);
plot3(100*mo_3);
즐거운 하루되세요
> 분노의물타기 님이 쓴 글입니다.
> 제목 : 지표 작성 부탁드릴게요
> 참조데이터를 사용하여 특정종목과 특정종목이 포함된 지수의 상대강도를 비교하고 싶습니다.
아래는 어떤 분의 질문에 운영자님이 작성해 주셨던 것인데요...
input : N(20);
var : RSD(0),MAV(0),MRS(0);
RSD = Data1(c)/data2(c) * 100;
mav = Data1(ma(RSD,N));
MRS = ((RSD /mav) - 1 ) * 100;
Plot1(MRS);
plot2(0);
위의 식은 20일의 기간 동안 2개종목의 비율과 해당 비율을 단순평균한 값으로 하나의 mrs가 계산되게 되어 있는데
트레이딩뷰에서 보니 63일(3달), 126일(6달), 252일(12달)로 세개의 RS를 나타내면서 단순평균이 아니라 설정한 기간값의 구간별로 가중값을 주어 가중평균하여 나타내는 지표가 있더라구요
아래는 트레이딩뷰에서 발췌한 것인데 예스트레이더에서 똑같이 구현해 보고 싶습니다. 바쁘시겠지만 지표 작성 꼭 좀 부탁드리겠습니다.
//@version=3
study("IBD RS", overlay=true)
src = security(ticker, "D", close)
mo_12 = 0.4*((src)/src[63]) + 0.2*((src)/src[126]) + 0.2*((src)/src[189]) + 0.2*((src)/src[252])
mo_6 = 0.4*((src)/src[21]) + 0.2*((src)/src[63]) + 0.2*((src)/src[84]) + 0.2*((src)/src[126])
mo_3 = 0.4*((src)/src[11]) + 0.2*((src)/src[21]) + 0.2*((src)/src[42]) + 0.2*((src)/src[63])
plot(100*mo_12, style=line, linewidth=3, color=#1E90FF, transp=0)
plot(100*mo_6, style=line, linewidth=2, color=#1E90FF, transp=0)
plot(100*mo_3, style=line, linewidth=1, color=#1E90FF, transp=0)
※ 참고로 mo_12는 12개월을 의미하며 한달을 21일로 잡을때 63은 3개월, 126은 6개월의 기간을 의미하는 식입니다.