커뮤니티
MRO함수에서
2004-01-13 14:30:01
1540
글번호 1968
MRO함수의 기본 문법이
MRO(Condition, Period, Occur)이잖아요?
여기서 Period 항목에 특정기간동안이 아닌, 모든 기간을 기준으로 할려면 어떻게 해야 하는지요?
만약 ma(C, 5) > ma(C, 20)이 되는 조건을 가장 최근에 만족하는 시점이 현재로부터 몇 봉 전에 발생했는지 알려면 어떻게 하면됩니까?
제가 MRO(ma(C, 5) > ma(C, 20), 10000, 1) 이렇게 작성을 했습니다.
Period 항목에 충분히 긴 기간을 넣기위해서 10000 이라는 숫자를 넣었더니, 현재로 부터 10000봉까지는 단 한번밖에 포지션이 발생하지 않더라구요.
단지, 기간에 상관없이 조건을 만족하는 최근의 시점을 구하려면 어떻게 해야하나요?
답변 3
예스스탁 예스스탁 답변
2004-01-14 11:50:19
안녕하세요? 예스스탁입니다...
MRO는 Period기간 동안 Occur번째로 Condition의 조건을 만족하는 시점이 현재로부터 몇 봉 전에 발생했는지를 나타내는 함수입니다.
MRO식에 대한 예를 간단히 작성해 보겠습니다...
[지표내용]
최근 500개 봉 이내에서 가장최근 5 - 20 이평 골든크로스가 발생한 시점의 5이평값을 출력하는 지표식입니다.
[지표식]
input : P1(5), P2(20);
var1 = ma(C,p1); //단기이동평균
var2 = ma(C,p2); //장기이동평균
var3 = MRO(CrossUp(var1,var2),500,1); //가장 최근 골든크로스 시점의 현재로부터의 거리(index)
plot1(ma(C,5)[var3]);
[지표해석]
MRO(CrossUp(var1,var2),500,1) 는 최근 500개 봉 중에서 가장 최근에 골든크로스가 발생한 시점의 index를 나타내는 함수입니다. 예를들어 10개 전봉에서 골든크로스가 발행했다면 결과값으로 10을 리턴하게 됩니다.
두번째로 최근에 발생한 골든크로스 시점의 index를 리턴하려면 MRO(CrossUp(var1,var2),500,2) 로 작성하면 됩니다
즐거운 하루 되세요...
> CJ_ccachi72 님이 쓴 글입니다.
> 제목 : MRO함수에서
> MRO함수의 기본 문법이
MRO(Condition, Period, Occur)이잖아요?
여기서 Period 항목에 특정기간동안이 아닌, 모든 기간을 기준으로 할려면 어떻게 해야 하는지요?
만약 ma(C, 5) > ma(C, 20)이 되는 조건을 가장 최근에 만족하는 시점이 현재로부터 몇 봉 전에 발생했는지 알려면 어떻게 하면됩니까?
제가 MRO(ma(C, 5) > ma(C, 20), 10000, 1) 이렇게 작성을 했습니다.
Period 항목에 충분히 긴 기간을 넣기위해서 10000 이라는 숫자를 넣었더니, 현재로 부터 10000봉까지는 단 한번밖에 포지션이 발생하지 않더라구요.
단지, 기간에 상관없이 조건을 만족하는 최근의 시점을 구하려면 어떻게 해야하나요?
회원
2004-01-14 13:56:16
제가 원하는 것은 MRO(Condition, Period, Occur)에서 Period에 상관없이 무조건 Condition이 최근에 만족하는 시점을 구하고자 할때 어떻게 하면 되는가 입니다.
제가 이것을 질문한 이유는 시뮬레이션을 수행하였을때 전 단지 Condition이 최근에 만족하는 시점을 적용하길 원했는데, Period의 수에 따라 결과가 틀려지기 때문입니다.
가령 Occur에는 1이라는 숫자를 넣고, Period에는 500이라는 숫자를 넣었다고 가정합시다.
그런데 만약, 현재로 부터 500봉의 기간동안 Condition을 만족하는 경우가 전혀 없었다면 값을 불러올수 없겠지요.
반대로, 그 500봉의 기간동안 Condition을 만족하는 경우가 여러번 생긴경우, 포지션 진입을 여러번 하여야 함에도 Period를 500으로 정하였기 때문에, 그 기간동안 시뮬레이션에서는 단 1번밖에 포지션진입이 발생하지 않더라구요.
대신증권의 예를 들어보겠습니다.
대신증권에서는 MRO와 유사한 함수로 "ValueWhen(Occur, Condition, Datafield, Period)"가 있습니다.
이것은, "Period동안 Occur번째로 Condition을 만족하는 시점의 Datafield값을 반환한다"는 의미입니다.
그런데, 여기서 Period에 관계없이 Datafield값을 반환하는 함수로 다음과 같은 함수가 있습니다.
"ValueWhenAll(Occur, Condition, Datafield)"
이것의 의미는 "Occur번째로 Condition을 만족하는 시점의 Datafield값을 반환한다" 입니다.
저는 대신증권의 "ValueWhenAll"같이 할려면 어떻게 하면 되는지를 질문드린 것입니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : MRO함수...
> 안녕하세요? 예스스탁입니다...
MRO는 Period기간 동안 Occur번째로 Condition의 조건을 만족하는 시점이 현재로부터 몇 봉 전에 발생했는지를 나타내는 함수입니다.
MRO식에 대한 예를 간단히 작성해 보겠습니다...
[지표내용]
최근 500개 봉 이내에서 가장최근 5 - 20 이평 골든크로스가 발생한 시점의 5이평값을 출력하는 지표식입니다.
[지표식]
input : P1(5), P2(20);
var1 = ma(C,p1); //단기이동평균
var2 = ma(C,p2); //장기이동평균
var3 = MRO(CrossUp(var1,var2),500,1); //가장 최근 골든크로스 시점의 현재로부터의 거리(index)
plot1(ma(C,5)[var3]);
[지표해석]
MRO(CrossUp(var1,var2),500,1) 는 최근 500개 봉 중에서 가장 최근에 골든크로스가 발생한 시점의 index를 나타내는 함수입니다. 예를들어 10개 전봉에서 골든크로스가 발행했다면 결과값으로 10을 리턴하게 됩니다.
두번째로 최근에 발생한 골든크로스 시점의 index를 리턴하려면 MRO(CrossUp(var1,var2),500,2) 로 작성하면 됩니다
즐거운 하루 되세요...
> CJ_ccachi72 님이 쓴 글입니다.
> 제목 : MRO함수에서
> MRO함수의 기본 문법이
MRO(Condition, Period, Occur)이잖아요?
여기서 Period 항목에 특정기간동안이 아닌, 모든 기간을 기준으로 할려면 어떻게 해야 하는지요?
만약 ma(C, 5) > ma(C, 20)이 되는 조건을 가장 최근에 만족하는 시점이 현재로부터 몇 봉 전에 발생했는지 알려면 어떻게 하면됩니까?
제가 MRO(ma(C, 5) > ma(C, 20), 10000, 1) 이렇게 작성을 했습니다.
Period 항목에 충분히 긴 기간을 넣기위해서 10000 이라는 숫자를 넣었더니, 현재로 부터 10000봉까지는 단 한번밖에 포지션이 발생하지 않더라구요.
단지, 기간에 상관없이 조건을 만족하는 최근의 시점을 구하려면 어떻게 해야하나요?
예스스탁 예스스탁 답변
2004-01-14 17:02:26
안녕하세요? 예스스탁입니다...
이전에도 말씀드린바와 같이 MRO함수는 Period기간 동안 Occur번째로 Condition의 조건을 만족하는 시점이 현재로부터 몇 봉 전에 발생했는지를 나타내는 함수입니다.
다음의 예를 가지고 설명을 하겠습니다...
plot1(MRO(CrossUp(ma(C, 5),ma(C, 20),500,1));
위 식을 차트에 적용하게 된다면 지표값은 현재의 시점을 기준으로 이전 500봉 동안 가장 최근 골든크로스가 발생한 시점까지의 봉 번호가 나열이 됩니다.
만약, 사용자님께서 수행하신 것과 같이 Occur에 1이라는 숫자를 넣고 기간값에 500이라는 숫자를 넣었는데 조건을 만족하는 경우가 전혀 없었다면 지표값은 "-1"이 나올 것이며 만족을 할 경우 index함수와 유사하게 지표가 그려질 것입니다. 그리고 이 지표는 이전 500봉 동안 가장최근 조건을 만족한 이전시점까지의 봉 번호가 지표로 그려지게 되는 것입니다. 그러므로 가장 최근의 조건 만족 시점의 좌표값이 0이 될 것이며 현재봉까지 1씩 증가할 것입니다.
설령 현재봉을 기준으로 500봉 동안 조건을 만족하는 경우가 여러번 생겼다고 할 지라도 위 지표는 가장 최근의 시점만 찾게 되는 것입니다.
이유는 조건에서 (MRO(Condition, Period, Occur) 가장최근이라고 전제를 주었기 때문입니다.
예를 들어서, 500봉 동안 현재봉을 기준으로 가장 최근에 골든크로스가 발생한 시점의 데이터값(시/고/저/종가)을 구한다면 다음과 같게 될 것입니다.
input : P1(5), P2(20);
var1 = ma(C,p1); //단기이동평균
var2 = ma(C,p2); //장기이동평균
var3 = MRO(CrossUp(var1,var2),500,1); //가장 최근 골든크로스 시점의 현재로부터의 거리(index)
plot1(C[var3]);
plot2(O[var3]);
plot3(H[var3]);
plot4(L[var3]);
참고로, MRO에서 기간값을 없애고 전 구간을 대상으로 하는 함수는 제공되고 있지 않습니다.
만약, 문의하신 바와 같이 특정 조건 발생시점의 데이터값을 구하고자 하신다면 데이터 로드 문제상 차라리 IF문을 이용하시는 것이 더 안정적일 것입니다.
예)
input : P1(5), P2(20);
var1 = ma(C,p1); //단기이동평균
var2 = ma(C,p2); //장기이동평균
if crossup(var1, var2) then {
var3 = i; //골든 크로스 발생 시점의 인덱스값 저장
}
plot1(c[i-var3]); //가장 최근의 골든크로스 발생 시점의 종가값
plot2(c[i-var3[1]]); //두번째 최근의 골든크로스 발생 시점의 종가값
감사합니다...
> CJ_ccachi72 님이 쓴 글입니다.
> 제목 : Re : Re : 제 질문의 의도는 그것이 아닙니다.
> 제가 원하는 것은 MRO(Condition, Period, Occur)에서 Period에 상관없이 무조건 Condition이 최근에 만족하는 시점을 구하고자 할때 어떻게 하면 되는가 입니다.
제가 이것을 질문한 이유는 시뮬레이션을 수행하였을때 전 단지 Condition이 최근에 만족하는 시점을 적용하길 원했는데, Period의 수에 따라 결과가 틀려지기 때문입니다.
가령 Occur에는 1이라는 숫자를 넣고, Period에는 500이라는 숫자를 넣었다고 가정합시다.
그런데 만약, 현재로 부터 500봉의 기간동안 Condition을 만족하는 경우가 전혀 없었다면 값을 불러올수 없겠지요.
반대로, 그 500봉의 기간동안 Condition을 만족하는 경우가 여러번 생긴경우, 포지션 진입을 여러번 하여야 함에도 Period를 500으로 정하였기 때문에, 그 기간동안 시뮬레이션에서는 단 1번밖에 포지션진입이 발생하지 않더라구요.
대신증권의 예를 들어보겠습니다.
대신증권에서는 MRO와 유사한 함수로 "ValueWhen(Occur, Condition, Datafield, Period)"가 있습니다.
이것은, "Period동안 Occur번째로 Condition을 만족하는 시점의 Datafield값을 반환한다"는 의미입니다.
그런데, 여기서 Period에 관계없이 Datafield값을 반환하는 함수로 다음과 같은 함수가 있습니다.
"ValueWhenAll(Occur, Condition, Datafield)"
이것의 의미는 "Occur번째로 Condition을 만족하는 시점의 Datafield값을 반환한다" 입니다.
저는 대신증권의 "ValueWhenAll"같이 할려면 어떻게 하면 되는지를 질문드린 것입니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : MRO함수...
> 안녕하세요? 예스스탁입니다...
MRO는 Period기간 동안 Occur번째로 Condition의 조건을 만족하는 시점이 현재로부터 몇 봉 전에 발생했는지를 나타내는 함수입니다.
MRO식에 대한 예를 간단히 작성해 보겠습니다...
[지표내용]
최근 500개 봉 이내에서 가장최근 5 - 20 이평 골든크로스가 발생한 시점의 5이평값을 출력하는 지표식입니다.
[지표식]
input : P1(5), P2(20);
var1 = ma(C,p1); //단기이동평균
var2 = ma(C,p2); //장기이동평균
var3 = MRO(CrossUp(var1,var2),500,1); //가장 최근 골든크로스 시점의 현재로부터의 거리(index)
plot1(ma(C,5)[var3]);
[지표해석]
MRO(CrossUp(var1,var2),500,1) 는 최근 500개 봉 중에서 가장 최근에 골든크로스가 발생한 시점의 index를 나타내는 함수입니다. 예를들어 10개 전봉에서 골든크로스가 발행했다면 결과값으로 10을 리턴하게 됩니다.
두번째로 최근에 발생한 골든크로스 시점의 index를 리턴하려면 MRO(CrossUp(var1,var2),500,2) 로 작성하면 됩니다
즐거운 하루 되세요...
> CJ_ccachi72 님이 쓴 글입니다.
> 제목 : MRO함수에서
> MRO함수의 기본 문법이
MRO(Condition, Period, Occur)이잖아요?
여기서 Period 항목에 특정기간동안이 아닌, 모든 기간을 기준으로 할려면 어떻게 해야 하는지요?
만약 ma(C, 5) > ma(C, 20)이 되는 조건을 가장 최근에 만족하는 시점이 현재로부터 몇 봉 전에 발생했는지 알려면 어떻게 하면됩니까?
제가 MRO(ma(C, 5) > ma(C, 20), 10000, 1) 이렇게 작성을 했습니다.
Period 항목에 충분히 긴 기간을 넣기위해서 10000 이라는 숫자를 넣었더니, 현재로 부터 10000봉까지는 단 한번밖에 포지션이 발생하지 않더라구요.
단지, 기간에 상관없이 조건을 만족하는 최근의 시점을 구하려면 어떻게 해야하나요?