커뮤니티
수고하십니다! 문의드려요.
2013-11-16 17:51:55
245
글번호 69554
갭보정된 CSar를 구현해보려고 해서
var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0);
if date!=date[1] then {
gap = Open-Close[1];
sumGap = sumGap+gap;
}
GO = O - sumGap;
GH = H - sumGap;
GL = L - sumGap;
GC = C - sumGap;
이걸 이용해서 사용자 함수의 CSar 항목 중에서
각 해당Open,High,Low,Close 등의 글자를 GO,GH, GL,GC로 바꾸는 방법을 사용했습니다.
Csar부분은 제가 바꾼 이름 "gap_CSar"로 변경했구요.
다른 지표는 다 잘 되는데 유독 요놈만 안되는 이유를 모르겠습니다.
증상은
Csar의 값이 굉장히 크게 나와 차트가 거의 일직선으로 압축되는 현상이 발생합니다.
외부변수의 속도값을 크게해봐도 별반 나아지는게 없네요. 즉 외부변수의 문제는
아닌듯합니다.
그냥, 버그이겠거니 하고,
갭보정된 분봉차트로
일반의"파라볼릭종가"를 적용했을 때의 속도값으로
시스템식을 만들어보고 돌려봐도, 원하는대로 나오지가 않습니다.
즉, 사용자함수 부분에서 오류가 난걸로 보입니다.
제가 놓친것이 무엇일까요?
답변 2
예스스탁 예스스탁 답변
2013-11-18 14:34:27
안녕하세요
예스스탁입니다.
var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0);
if date!=date[1] then {
gap = Open-Close[1];
sumGap = sumGap+gap;
}
GO = O - sumGap;
GH = H - sumGap;
GL = L - sumGap;
GC = C - sumGap;
위 값으로 Open,High,Low,Close를 모두 대체하셨다면
수식을 잘못 작성하신것은 아닙니다.
차트속성의 갭보정은 당일데이터를 고정한 가운데
과거로 가면서 과거 데이터를 보정합니다.
하지만 수식에서는 해당 내용이 구현이 되지 않으므로
차트 과거보터 현재로 오면서 갭을 모아 보정한 시고저종값을 사용하게 되는데
이값은 현재봉의 축과는 괴리가 많이 발생할수 있는 값입니다.
차트 전체상의 갭을 모으면 -30이라면
현재 종가에 이값을 가감함으로 실제 차트와는 차이가 있게 됩니다.
이값을 이용해 만든 지표는 GO,GH,GL,GC등과 함께 보셔야 하며
해당 값과 조합으로 시스템을 만드셔야 합니다.
실제 차트축과 괴리가 발생할수 있으므로 봉차트 위 보다는
스토케스틱과 같이 차트 하단에 따로 적용해 보셔야 합니다.
/* Description : Close SAR
*
* Provided By : YesStock Inc. (c) Copyright 2006
* E-Mail : webmaster@yesstock.com
*/
Input : AF(0.02), AFMAX(0.2);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(High), LowValue(Low), EP(0),CSarv(0);
var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0);
if date!=date[1] then {
gap = Open-Close[1];
sumGap = sumGap+gap;
}
GO = O - sumGap;
GH = H - sumGap;
GL = L - sumGap;
GC = C - sumGap;
if EP != 0 Then
{
if Direction == 1 then
{
EP = HighValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if GH > HighValue then
{
HighValue = GH;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if GC < SAR_Value then
{
Direction = -1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
LowValue = GL;
}
}
else
{
EP = LowValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if GL < LowValue then
{
LowValue = GL;
AF_Value = AF_Value + Af;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if GC > SAR_Value then
{
Direction = 1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
HighValue = GH;
}
}
CSarv = SAR_Value;
}
else
{
if SAR_Value != 0 && EP == 0 then
{
if Direction == 1 then
{
EP = HighValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if GH > HighValue then
{
HighValue = GH;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
else
{
EP = LowValue;
AF_Value = Af;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if GL < LowValue then
{
LowValue = GL;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
CSarv = SAR_Value;
}
else
{
if Direction == 0 then
{
if GC > GC[1] then Direction = 1;
else
if GC < GC[1] then Direction = -1;
}
else
{
if Direction == 1 then
{
if GC < GC[1] then
{
Direction = -1;
SAR_Value = HighValue;
CSarv = SAR_Value;
}
}
if Direction == -1 then
{
if GC > GC[1] then
{
Direction = 1;
SAR_Value = LowValue;
CSarv = SAR_Value;
}
}
}
LowValue = min(GL, LowValue);
HighValue = max(GH, HighValue);
}
}
plot1(CSarv);
plot2(GC);
즐거운 하루되세요
> 차싸 님이 쓴 글입니다.
> 제목 : 수고하십니다! 문의드려요.
> 갭보정된 CSar를 구현해보려고 해서
var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0);
if date!=date[1] then {
gap = Open-Close[1];
sumGap = sumGap+gap;
}
GO = O - sumGap;
GH = H - sumGap;
GL = L - sumGap;
GC = C - sumGap;
이걸 이용해서 사용자 함수의 CSar 항목 중에서
각 해당Open,High,Low,Close 등의 글자를 GO,GH, GL,GC로 바꾸는 방법을 사용했습니다.
Csar부분은 제가 바꾼 이름 "gap_CSar"로 변경했구요.
다른 지표는 다 잘 되는데 유독 요놈만 안되는 이유를 모르겠습니다.
증상은
Csar의 값이 굉장히 크게 나와 차트가 거의 일직선으로 압축되는 현상이 발생합니다.
외부변수의 속도값을 크게해봐도 별반 나아지는게 없네요. 즉 외부변수의 문제는
아닌듯합니다.
그냥, 버그이겠거니 하고,
갭보정된 분봉차트로
일반의"파라볼릭종가"를 적용했을 때의 속도값으로
시스템식을 만들어보고 돌려봐도, 원하는대로 나오지가 않습니다.
즉, 사용자함수 부분에서 오류가 난걸로 보입니다.
제가 놓친것이 무엇일까요?
차싸
2013-11-18 15:07:11
작성해주신것의 2번째줄.
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(High), LowValue(Low), EP(0),CSarv(0);
혹시 실수가 아닌가 했습니다.
변수 선언부의 C,H,L을 그냥 두는 이유가 없을텐데 하면서
그대로 적용해보니, 정상작동됩니다.
아직도... 머리로는 이해가 안가지만,,(sumgap등을 맨 위에 놓고 했습니다.
변수선언부의 초기값마저 적용되게끔)
멀고도 험한 길이라는걸 다시 깨닫습니다. 감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수고하십니다! 문의드려요.
> 안녕하세요
예스스탁입니다.
var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0);
if date!=date[1] then {
gap = Open-Close[1];
sumGap = sumGap+gap;
}
GO = O - sumGap;
GH = H - sumGap;
GL = L - sumGap;
GC = C - sumGap;
위 값으로 Open,High,Low,Close를 모두 대체하셨다면
수식을 잘못 작성하신것은 아닙니다.
차트속성의 갭보정은 당일데이터를 고정한 가운데
과거로 가면서 과거 데이터를 보정합니다.
하지만 수식에서는 해당 내용이 구현이 되지 않으므로
차트 과거보터 현재로 오면서 갭을 모아 보정한 시고저종값을 사용하게 되는데
이값은 현재봉의 축과는 괴리가 많이 발생할수 있는 값입니다.
차트 전체상의 갭을 모으면 -30이라면
현재 종가에 이값을 가감함으로 실제 차트와는 차이가 있게 됩니다.
이값을 이용해 만든 지표는 GO,GH,GL,GC등과 함께 보셔야 하며
해당 값과 조합으로 시스템을 만드셔야 합니다.
실제 차트축과 괴리가 발생할수 있으므로 봉차트 위 보다는
스토케스틱과 같이 차트 하단에 따로 적용해 보셔야 합니다.
/* Description : Close SAR
*
* Provided By : YesStock Inc. (c) Copyright 2006
* E-Mail : webmaster@yesstock.com
*/
Input : AF(0.02), AFMAX(0.2);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(High), LowValue(Low), EP(0),CSarv(0);
var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0);
if date!=date[1] then {
gap = Open-Close[1];
sumGap = sumGap+gap;
}
GO = O - sumGap;
GH = H - sumGap;
GL = L - sumGap;
GC = C - sumGap;
if EP != 0 Then
{
if Direction == 1 then
{
EP = HighValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if GH > HighValue then
{
HighValue = GH;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if GC < SAR_Value then
{
Direction = -1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
LowValue = GL;
}
}
else
{
EP = LowValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if GL < LowValue then
{
LowValue = GL;
AF_Value = AF_Value + Af;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if GC > SAR_Value then
{
Direction = 1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
HighValue = GH;
}
}
CSarv = SAR_Value;
}
else
{
if SAR_Value != 0 && EP == 0 then
{
if Direction == 1 then
{
EP = HighValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if GH > HighValue then
{
HighValue = GH;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
else
{
EP = LowValue;
AF_Value = Af;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if GL < LowValue then
{
LowValue = GL;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
CSarv = SAR_Value;
}
else
{
if Direction == 0 then
{
if GC > GC[1] then Direction = 1;
else
if GC < GC[1] then Direction = -1;
}
else
{
if Direction == 1 then
{
if GC < GC[1] then
{
Direction = -1;
SAR_Value = HighValue;
CSarv = SAR_Value;
}
}
if Direction == -1 then
{
if GC > GC[1] then
{
Direction = 1;
SAR_Value = LowValue;
CSarv = SAR_Value;
}
}
}
LowValue = min(GL, LowValue);
HighValue = max(GH, HighValue);
}
}
plot1(CSarv);
plot2(GC);
즐거운 하루되세요
> 차싸 님이 쓴 글입니다.
> 제목 : 수고하십니다! 문의드려요.
> 갭보정된 CSar를 구현해보려고 해서
var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0);
if date!=date[1] then {
gap = Open-Close[1];
sumGap = sumGap+gap;
}
GO = O - sumGap;
GH = H - sumGap;
GL = L - sumGap;
GC = C - sumGap;
이걸 이용해서 사용자 함수의 CSar 항목 중에서
각 해당Open,High,Low,Close 등의 글자를 GO,GH, GL,GC로 바꾸는 방법을 사용했습니다.
Csar부분은 제가 바꾼 이름 "gap_CSar"로 변경했구요.
다른 지표는 다 잘 되는데 유독 요놈만 안되는 이유를 모르겠습니다.
증상은
Csar의 값이 굉장히 크게 나와 차트가 거의 일직선으로 압축되는 현상이 발생합니다.
외부변수의 속도값을 크게해봐도 별반 나아지는게 없네요. 즉 외부변수의 문제는
아닌듯합니다.
그냥, 버그이겠거니 하고,
갭보정된 분봉차트로
일반의"파라볼릭종가"를 적용했을 때의 속도값으로
시스템식을 만들어보고 돌려봐도, 원하는대로 나오지가 않습니다.
즉, 사용자함수 부분에서 오류가 난걸로 보입니다.
제가 놓친것이 무엇일까요?
다음글
이전글