답변완료
문의드립니다
지그재그 파동식인데요
스토캐스틱을 기준으로 하여
50선 위로 스코K가 상승하여... 50선 아래로 떨어지는 구간까지를 최고가격을 고점으로
50선 아래로 스토K나 하락하여 ... 50선 위로 올라오는 구간까지를 최저가격을 저점으로
하며.
또한.. 과열권<80> 하락 이후.. 51선을 이탈하지 않고 다시 과열권 진입시
직전 하락한 51에서 79사이의 최저가격을 저점으로 하고
다시 진입한 과열권에서 최고가격을 고점으로 표현
침체권<20> 돌파 이후 49선을 돌파하지 않고 다시 침체권 진입시
직전 상승한 21에서 49 사이의 최고가격을 고점으로 하고
다시 진입한 침체권에서 최저가각을 저점으로 표현이 되게 부탁드립니다
즉. 고점의 기준이 2개이며 .. 저점의 기준도 2개입니다
위 내용에 맞게 수식을 작성 하여 주셔도 되구요
아니면 아래 수식을 변경하여 주셔도 됩니다
Input:Period(12),Period1(5),레벨(4),선색깔(MAGENTA),선두께(3),수치표시여부(1),수치표시위치(10),폰트크기(13),두껍게(1);
Var:StokValue(0),고점(1),저점(-1),신규(1),연장(2),연속(3),삼선(4);
Array:고[10,44](0),저[10,44](0), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime
최종상태[5](0),처리구분[5](0),TL[3](0),Text[3](0);
//=========================================================//
If 레벨 <= 4 Then {
Var1 = 레벨 * 10;
StokValue = StochasticsK(Period,Period1);
Value1 = IndicatorZigZag302(H,L,StokValue,50,고,저,최종상태,처리구분);
If 최종상태[레벨] == 고점 Then {
If 처리구분[레벨] == 신규 Then {
TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]);
If 수치표시여부 == 1 Then {
Text[2] = Text_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale),
NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/저[1,Var1 + 1],2) + "%)");
Text_SetStyle(Text[2], 2, 1);
Text_SetSize(Text[2],폰트크기);
Text_SetBold(Text[2],두껍게);
Text_SetColor(Text[2],RED);
}
}
If 처리구분[레벨] == 연장 Then {
TL_SetEnd(TL[2],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]);
If 수치표시여부 == 1 Then {
Text_SetLocation(Text[2],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale));
Text_SetString(Text[2],NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/저[1,Var1 + 1],2) + "%)");
}
}
If 처리구분[레벨] == 연속 Then {
TL[1] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]);
TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]);
If 수치표시여부 == 1 Then {
Text[1] = Text_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale),
NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[2,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[2,Var1 + 1] - 저[1,Var1 + 1])*100/고[2,Var1 + 1],2) + "%)");
Text[2] = Text_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale),
NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/저[1,Var1 + 1],2) + "%)");
Text_SetStyle(Text[1], 2, 0);
Text_SetStyle(Text[2], 2, 1);
Text_SetSize(Text[1],폰트크기);
Text_SetSize(Text[2],폰트크기);
Text_SetBold(Text[1],두껍게);
Text_SetBold(Text[2],두껍게);
Text_SetColor(Text[1],BLUE);
Text_SetColor(Text[2],RED);
}
}
If 처리구분[레벨] == 삼선 Then {
TL[0] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1],고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1]);
TL[1] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]);
TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]);
If 수치표시여부 == 1 Then {
Text[0] = Text_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1] + (수치표시위치 * PriceScale),
NumToStr(고[2,Var1 + 1],2) + "(+" + NumToStr(고[2,Var1 + 1] - 저[2,Var1 + 1],2) + ", " +
NumToStr((고[2,Var1 + 1] - 저[2,Var1 + 1])*100/저[2,Var1 + 1],2) + "%)");
Text[1] = Text_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale),
NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[2,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[2,Var1 + 1] - 저[1,Var1 + 1])*100/고[2,Var1 + 1],2) + "%)");
Text[2] = Text_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale),
NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/저[1,Var1 + 1],2) + "%)");
Text_SetStyle(Text[0], 2, 1);
Text_SetStyle(Text[1], 2, 0);
Text_SetStyle(Text[2], 2, 1);
Text_SetSize(Text[0],폰트크기);
Text_SetSize(Text[1],폰트크기);
Text_SetSize(Text[2],폰트크기);
Text_SetBold(Text[0],두껍게);
Text_SetBold(Text[1],두껍게);
Text_SetBold(Text[2],두껍게);
Text_SetColor(Text[0],RED);
Text_SetColor(Text[1],BLUE);
Text_SetColor(Text[2],RED);
}
}
}
If 최종상태[레벨] == 저점 Then {
If 처리구분[레벨] == 신규 Then {
TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]);
If 수치표시여부 == 1 Then {
Text[2] = Text_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale),
NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/고[1,Var1 + 1],2) + "%)");
Text_SetStyle(Text[2], 2, 0);
Text_SetSize(Text[2],폰트크기);
Text_SetBold(Text[2],두껍게);
Text_SetColor(Text[2],BLUE);
}
}
If 처리구분[레벨] == 연장 Then {
TL_SetEnd(TL[2],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]);
If 수치표시여부 == 1 Then {
Text_SetLocation(Text[2],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale));
Text_SetString(Text[2],NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/고[1,Var1 + 1],2) + "%)");
}
}
If 처리구분[레벨] == 연속 Then {
TL[1] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]);
TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]);
If 수치표시여부 == 1 Then {
Text[1] = Text_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale),
NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[2,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[2,Var1 + 1])*100/저[2,Var1 + 1],2) + "%)");
Text[2] = Text_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale),
NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/고[1,Var1 + 1],2) + "%)");
Text_SetStyle(Text[1], 2, 1);
Text_SetStyle(Text[2], 2, 0);
Text_SetSize(Text[1],폰트크기);
Text_SetSize(Text[2],폰트크기);
Text_SetBold(Text[1],두껍게);
Text_SetBold(Text[2],두껍게);
Text_SetColor(Text[1],RED);
Text_SetColor(Text[2],BLUE);
}
}
If 처리구분[레벨] == 삼선 Then {
TL[0] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1],저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1]);
TL[1] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]);
TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]);
If 수치표시여부 == 1 Then {
Text[0] = Text_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1] - (수치표시위치 * PriceScale),
NumToStr(저[2,Var1 + 1],2) + "(-" + NumToStr(고[2,Var1 + 1] - 저[2,Var1 + 1],2) + ", " +
NumToStr((고[2,Var1 + 1] - 저[2,Var1 + 1])*100/고[2,Var1 + 1],2) + "%)");
Text[1] = Text_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale),
NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[2,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[2,Var1 + 1])*100/저[2,Var1 + 1],2) + "%)");
Text[2] = Text_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale),
NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " +
NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/고[1,Var1 + 1],2) + "%)");
Text_SetStyle(Text[0], 2, 0);
Text_SetStyle(Text[1], 2, 1);
Text_SetStyle(Text[2], 2, 0);
Text_SetSize(Text[0],폰트크기);
Text_SetSize(Text[1],폰트크기);
Text_SetSize(Text[2],폰트크기);
Text_SetBold(Text[0],두껍게);
Text_SetBold(Text[1],두껍게);
Text_SetBold(Text[2],두껍게);
Text_SetColor(Text[0],BLUE);
Text_SetColor(Text[1],RED);
Text_SetColor(Text[2],BLUE);
}
}
}
TL_SetColor(TL[0],선색깔); TL_SetSize(TL[0],선두께);
TL_SetColor(TL[1],선색깔); TL_SetSize(TL[1],선두께);
TL_SetColor(TL[2],선색깔); TL_SetSize(TL[2],선두께);
} Else {
Alert("4레벨까지만 가능합니다!!");
}
으로
2020-02-11
363
글번호 135850
지표
답변완료
수평선 우측으로 연장 부탁드립니다
아래 파동선 수식
수평선 전체를 우측으로 연장되게
수정부탁드립니다
감사합니다
좋은하루되세요
Input:length(6);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),
TL1(0),처리구분(""),T(0),TL2(0),TL3(0);
var : hh(0),ll(0),ii(0),diff(0),TL41(0),TL42(0),TL43(0),TL44(0),TL45(0),TL46(0);
Array:고점[10,2](0),저점[10,2](0);
처리구분 = "";
If Highest(H,length) == H and lastHiVal <> H and
Lowest(L,length) == L and lastLoVal <> L Then
{
If 저점[1,1] > L Then 처리구분 = "저점처리";
If 고점[1,1] < H Then 처리구분 = "고점처리";
}
Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리";
Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
T = 1;
lastHiVal = H;
If 고점[1,2] < 저점[1,2] Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then
{
고점[1,1] = H;
고점[1,2] = Index;
sBar = Index - 저점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
TL_Delete(TL2);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
TL_SetExtRight(TL2,False);
TL2 = TL_New(sDate[1],sTime[1],고점[1,1],sdate,sTime,고점[1,1]);
TL_SetColor(TL2,BLUE);
TL_SetSize(TL2,3);
If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then
{
sBar = Index - 저점[2,2];
eBar = Index - 저점[1,2];
}
}
}
If 처리구분 == "저점처리" Then
{
T = -1;
lastLoVal = L;
If 저점[1,2] < 고점[1,2] Then
{
For j = 10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L Then
{
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
TL_Delete(TL3);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
TL_SetExtRight(TL3,False);
TL3 = TL_New(sDate[1],sTime[1],저점[1,1],sdate,sTime,저점[1,1]);
TL_SetColor(TL3,RED);
TL_SetSize(TL3,3);
If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then
{
sBar = Index - 고점[2,2];
eBar = Index - 고점[1,2];
}
}
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,WHITE);
TL_SetEnd(TL2,sdate,stime,고점[1,1]);
TL_SetEnd(TL3,sdate,stime,저점[1,1]);
TL_SetExtRight(TL2,true);
TL_SetExtRight(TL3,true);
if T != T[1] then
{
if T == 1 Then
{
HH = 고점[2,1];
LL = 저점[1,1];
ii = index-고점[2,2];
diff = abs(HH-LL);
}
Else
{
HH = 고점[1,1];
LL = 저점[2,1];
ii = index-저점[2,2];
diff = abs(HH-LL);
}
TL_Delete(TL41);
TL_Delete(TL42);
TL_Delete(TL43);
TL_Delete(TL44);
TL_Delete(TL45);
TL_Delete(TL46);
TL41 = TL_New(sdate[ii],stime[ii],LL+diff*2.00,sdate,stime,LL+diff*2.00);
TL42 = TL_New(sdate[ii],stime[ii],LL+diff*2.618,sdate,stime,LL+diff*2.618);
TL43 = TL_New(sdate[ii],stime[ii],LL+diff*3.618,sdate,stime,LL+diff*3.618);
TL44 = TL_New(sdate[ii],stime[ii],HH-diff*2.00,sdate,stime,HH-diff*2.00);
TL45 = TL_New(sdate[ii],stime[ii],HH-diff*2.618,sdate,stime,HH-diff*2.618);
TL46 = TL_New(sdate[ii],stime[ii],HH-diff*3.618,sdate,stime,HH-diff*3.618);
TL_SetExtRight(TL41,true);
TL_SetExtRight(TL42,true);
TL_SetExtRight(TL43,true);
TL_SetExtRight(TL44,true);
TL_SetExtRight(TL45,true);
TL_SetExtRight(TL46,true);
TL_SetSize(TL41,2);
TL_SetSize(TL42,2);
TL_SetSize(TL43,2);
TL_SetSize(TL44,2);
TL_SetSize(TL45,2);
TL_SetSize(TL46,2);
}
2020-02-12
273
글번호 135846
지표