Q&A 게시판 HOME > Q&A 게시판
작성자 : 예스스탁 작성일 : 2021-05-12 17:32:48 조회수 : 455
Re:항상 감사드립니다 수식문의드립니다.

안녕하세요
예스스탁입니다.

색상1 = 0;
색상2 = 0.236;
색상3 = 0.382;
색상4 = 0.50;
색상5 = 0.618;
색상6 = 0.764;
색상7 = 1;
색상8 = 1.236;
색상9 = 1.382;
색상10 = 1.50;
색상11 = 1.618;
색상12 = 2;
색상13 = 2.618;
색상14 = 4.236;
색상15 = 6.845;

15개의 선을 모두 개별적으로 색상지정할 수 있게 외부변수로 처리해 드립니다.
예스랭귀지 도움말에서 제공되는 색상예약어 확인하시고 색 지정하시면 됩니다.



#===================================#
# 지 표 명 : 피보나치 되돌림
#==========================================#
Input:변동률(0.2),레벨(4),선두께(1),수치표시(1);
input : 선색1(RED),선색2(RED),선색3(RED),선색4(YELLOW),선색5(YELLOW),선색6(YELLOW),선색7(GREEN),선색8(GREEN);
input : 선색9(GREEN),선색10(CYAN),선색11(CYAN),선색12(CYAN),선색13(BLUE),선색14(BLUE),선색15(BLUE);
Var:j(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[2](0),
      fr[15,4](0);     // 1:비율, 2:값, 3:라인번호, 4:텍스트번호 
#==========================================#
If 레벨 <= 4 Then {
    Var1 = 레벨 * 10;
    Value1 = ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분);
    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 처리구분[레벨] == 연장 Then 
            TL_SetEnd(TL[2],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]);
        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 처리구분[레벨] == 삼선 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 최종상태[레벨] == 저점 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 처리구분[레벨] == 연장 Then 
            TL_SetEnd(TL[2],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]);
        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 처리구분[레벨] == 삼선 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]);
        } 
    }
} Else {
    Alert("4레벨까지만 가능합니다!!");
}
#==========================================#
If Index == 0 Then  {
    fr[1,1] = 0;
    fr[2,1] = 0.236;
    fr[3,1] = 0.382;
    fr[4,1] = 0.50;
    fr[5,1] = 0.618;
    fr[6,1] = 0.764;
    fr[7,1] = 1;
fr[8,1] = 1.236;
   fr[9,1] = 1.382;
   fr[10,1] = 1.50;
   fr[11,1] = 1.618;
   fr[12,1] = 2;
   fr[13,1] = 2.618;
   fr[14,1] = 4.236;
   fr[15,1] = 6.845;
}
If 최종상태[레벨][1] == 고점 and 최종상태[레벨] == 저점 Then { // 추세가 바뀔 때 피보나치 라인을 계산
    For j = 1 To 15 {
        If fr[j,3] > 0 Then TL_Delete(fr[j,3]);               // 기존의 라인은 지우고
        fr[j,2] = 고[1,Var1 + 1] - ((고[1,Var1 + 1] - 저[2,Var1 + 1]) * fr[j,1]);  // 피보나치 비율을 곱해서 계산
        fr[j,3] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],fr[j,2],sDate,sTime,fr[j,2]); // 라인을 생성
        TL_SetSize(fr[j,3],선두께);
        If 수치표시 == 1 Then {
            If fr[j,4] > 0 Then Text_Delete(fr[j,4]);
            fr[j,4] = Text_New(저[2,Var1 + 3],저[2,Var1 + 4],fr[j,2],"(" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2));
            Text_SetStyle(fr[j,4], 0, 1);    // 왼쪽,중앙
        }
    }
} Else If 최종상태[레벨][1] == 저점 and 최종상태[레벨] == 고점 Then {
    For j = 1 To 15 {
        If fr[j,3] > 0 Then TL_Delete(fr[j,3]);
        fr[j,2] = 저[1,Var1 + 1] + ((고[2,Var1 + 1] - 저[1,Var1 + 1]) * fr[j,1]);
        fr[j,3] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],fr[j,2],sDate,sTime,fr[j,2]);
        TL_SetSize(fr[j,3],선두께);
        If 수치표시 == 1 Then {
            If fr[j,4] > 0 Then Text_Delete(fr[j,4]);
            fr[j,4] = Text_New(고[2,Var1 + 3],고[2,4],fr[j,2],"(" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2));
            Text_SetStyle(fr[j,4], 0, 1);
        }
    }
} Else {
    For j = 1 To 15 {
        TL_SetEnd(fr[j,3],sDate,sTime,fr[j,2]);
    }
}

TL_SetColor(fr[1,3],선색1); # 0
TL_SetColor(fr[2,3],선색2); # 0
TL_SetColor(fr[3,3],선색3); # 0
TL_SetColor(fr[4,3],선색4); # 0
TL_SetColor(fr[5,3],선색5); # 0
TL_SetColor(fr[6,3],선색6); # 0
TL_SetColor(fr[7,3],선색7); # 0
TL_SetColor(fr[8,3],선색8); # 0
TL_SetColor(fr[9,3],선색9); # 0
TL_SetColor(fr[10,3],선색10); # 0
TL_SetColor(fr[11,3],선색11); # 0
TL_SetColor(fr[12,3],선색12); # 0
TL_SetColor(fr[13,3],선색13); # 0
TL_SetColor(fr[14,3],선색14); # 0
TL_SetColor(fr[15,3],선색15); # 0


즐거운 하루되세요



>> 호로로록 님이 쓴 글입니다.

>> 제목 : 항상 감사드립니다 수식문의드립니다.#==========================================#
# 지 표 명 : 피보나치 되돌림
#==========================================#
Input:변동률(0.2),레벨(4),선색(yellow),선두께(1),수치표시(1);
Var:j(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[2](0),
      fr[15,4](0);     // 1:비율, 2:값, 3:라인번호, 4:텍스트번호 
#==========================================#
If 레벨 <= 4 Then {
    Var1 = 레벨 * 10;
    Value1 = ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분);
    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 처리구분[레벨] == 연장 Then 
            TL_SetEnd(TL[2],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]);
        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 처리구분[레벨] == 삼선 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 최종상태[레벨] == 저점 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 처리구분[레벨] == 연장 Then 
            TL_SetEnd(TL[2],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]);
        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 처리구분[레벨] == 삼선 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]);
        } 
    }
} Else {
    Alert("4레벨까지만 가능합니다!!");
}
#==========================================#
If Index == 0 Then  {
    fr[1,1] = 0;
    fr[2,1] = 0.236;
    fr[3,1] = 0.382;
    fr[4,1] = 0.50;
    fr[5,1] = 0.618;
    fr[6,1] = 0.764;
    fr[7,1] = 1;
fr[8,1] = 1.236;
   fr[9,1] = 1.382;
   fr[10,1] = 1.50;
   fr[11,1] = 1.618;
   fr[12,1] = 2;
   fr[13,1] = 2.618;
   fr[14,1] = 4.236;
   fr[15,1] = 6.845;
}
If 최종상태[레벨][1] == 고점 and 최종상태[레벨] == 저점 Then { // 추세가 바뀔 때 피보나치 라인을 계산
    For j = 1 To 15 {
        If fr[j,3] > 0 Then TL_Delete(fr[j,3]);               // 기존의 라인은 지우고
        fr[j,2] = 고[1,Var1 + 1] - ((고[1,Var1 + 1] - 저[2,Var1 + 1]) * fr[j,1]);  // 피보나치 비율을 곱해서 계산
        fr[j,3] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],fr[j,2],sDate,sTime,fr[j,2]); // 라인을 생성
        TL_SetColor(fr[j,3],선색);
        TL_SetSize(fr[j,3],선두께);
        If 수치표시 == 1 Then {
            If fr[j,4] > 0 Then Text_Delete(fr[j,4]);
            fr[j,4] = Text_New(저[2,Var1 + 3],저[2,Var1 + 4],fr[j,2],"(" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2));
            Text_SetStyle(fr[j,4], 0, 1);    // 왼쪽,중앙
        }
    }
} Else If 최종상태[레벨][1] == 저점 and 최종상태[레벨] == 고점 Then {
    For j = 1 To 15 {
        If fr[j,3] > 0 Then TL_Delete(fr[j,3]);
        fr[j,2] = 저[1,Var1 + 1] + ((고[2,Var1 + 1] - 저[1,Var1 + 1]) * fr[j,1]);
        fr[j,3] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],fr[j,2],sDate,sTime,fr[j,2]);
        TL_SetColor(fr[j,3],선색);
        TL_SetSize(fr[j,3],선두께);
        If 수치표시 == 1 Then {
            If fr[j,4] > 0 Then Text_Delete(fr[j,4]);
            fr[j,4] = Text_New(고[2,Var1 + 3],고[2,4],fr[j,2],"(" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2));
            Text_SetStyle(fr[j,4], 0, 1);
        }
    }
} Else {
    For j = 1 To 15 {
        TL_SetEnd(fr[j,3],sDate,sTime,fr[j,2]);
    }
}

항상 감사합니다. 다름이아니라 차티스트님의 피보나치 되돌림 지표입니다.
여기서 
 fr[1,1] = 0;
    fr[2,1] = 0.236;
    fr[3,1] = 0.382;
    fr[4,1] = 0.50;
    fr[5,1] = 0.618;
    fr[6,1] = 0.764;
    fr[7,1] = 1;
fr[8,1] = 1.236;
   fr[9,1] = 1.382;
   fr[10,1] = 1.50;
   fr[11,1] = 1.618;
   fr[12,1] = 2;
   fr[13,1] = 2.618;
   fr[14,1] = 4.236;
   fr[15,1] = 6.845;
비율마다 선 색을 다르게 선택 할수 있게 수정이 가능할 수 있는지 문의 드립니다.
목록 답변