예스스탁
예스스탁 답변
2022-07-18 15:36:27
안녕하세요
예스스탁입니다.
타주기로 작성되는 부분이라 정확히 가이드를 제공해 드리기 어렵습니다.
해당 지그재그 지표가 N봉동안 최고가나 최저가가 갱신되는것으로
상승/하락을 우선 판별하고 이후 상승구간의 최고가/ 하락구간의 최저가를 고점이나 저점으로 판별해 가므로
위와 같은 구조에서 식을 작성해 보셔야 합니다.
즐거운 하루되세요
> 히익 님이 쓴 글입니다.
> 제목 : 지그재그 재질문
> 안녕하세요! 이전 답변에 대한 재질문 입니다.
혹시 그럼 힌트 하나만 주실 수 있을까요? 함수 작성은 제가 직접 하겠습니다.(주봉,월봉 작성 법은 알고있습니다)
항상 도움주셔서 감사드립니다^^
//////////////////////////////////////////////////////
안녕하세요
예스스탁입니다.
문의하신 내용은 수식으로 가능한 내용이지만
작성해 보는데 시간이 많이 소모되는 내용으로 저희가 답변을 드리기 어렵습니다.
업무상 일정시간 이상 요구되는 내용은 저희가 답변을 드리지 않습니다.
도움을 드리지 못해 죄송합니다.
즐거운 하루되세요
> 히익 님이 쓴 글입니다.
> 제목 : 지그재그 차트
> 안녕하세요 개발자님. 첨부된 사진은 예전에 개발자님께서 작성해주신 지그재그 차트입니다. 주봉에 적용되었고, length(기간) 은 2 입니다.
혹시 이 주봉에 적용된 지그재그 차트와 함수를 일봉에 그대로 옮겨와 적용시키는게 가능할까요?
아래는 지그재그 함수 입니다. 항상 도움 주셔서 감사합니다!
input:length(12);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),Text1(0),process(0),T(0);
Array:HH[10,2](0),LL[10,2](0);
process = 0;
If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then
{
If LL[1,1] > L Then process = -1;
If HH[1,1] < H Then process = 1;
}
Else If Highest(H,length) == H and lastHiVal <> H Then process = 1;
Else If Lowest(L,length) == L and lastLoVal <> L Then process = -1;
If process == 1 Then
{
T = 1;
lastHiVal = H;
If HH[1,2] < LL[1,2] Then
{
For j = 10 DownTo 2
{
HH[j,1] = HH[j-1,1];
HH[j,2] = HH[j-1,2];
}
}
If HH[1,2] < LL[1,2] or HH[1,1] < H Then
{
HH[1,1] = H;
HH[1,2] = Index;
sBar = Index - LL[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
if LL[1,1] > 0 Then
{
TL1 = TL_New(sDate[sBar],sTime[sBar],LL[1,1],sDate[eBar],sTime[eBar],HH[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],HH[1,1],NewLine+NumToStr(HH[1,1],2));
Text_SetStyle(Text1, 2, 1);
}
Else
{
Text_Delete(text1);
Text1 = Text_New(sDate[eBar],sTime[eBar],HH[1,1],NewLine+NumToStr(HH[1,1],2));
Text_SetStyle(Text1, 2, 1);
}
Text_SetStyle(Text1, 2, 1);
}
}
If process == -1 Then
{
T = -1;
lastLoVal = L;
If LL[1,2] < HH[1,2] Then
{
For j = 10 DownTo 2
{
LL[j,1] = LL[j-1,1];
LL[j,2] = LL[j-1,2];
}
}
If LL[1,2] < HH[1,2] or LL[1,1] > L Then
{
LL[1,1] = L;
LL[1,2] = Index;
sBar = Index - HH[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
if HH[1,1] > 0 Then
{
TL1 = TL_New(sDate[sBar],sTime[sBar],HH[1,1],sDate[eBar],sTime[eBar],LL[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],LL[1,1],NumToStr(LL[1,1],2));
Text_SetStyle(Text1, 2, 0);
}
Else
{
Text_Delete(text1);
Text1 = Text_New(sDate[eBar],sTime[eBar],LL[1,1],NumToStr(LL[1,1],2));
Text_SetStyle(Text1, 2, 0);
}
}
}
if T == 1 and CrossUp(C,HH[2,1]) Then
Buy();
if T == -1 and CrossDown(C,LL[2,1]) Then
Sell();