커뮤니티

문의드립니다

프로필 이미지
장군
2020-11-10 15:33:56
621
글번호 143756
답변완료
1)Input:barCnt(5); Var:j(0),turnPntBit(""),TL1(0),TL33(0),TL44(0),HD(0),HT(0),LD(0),LT(0),HH(0),LL(0); Array:valArr[10](0),barArr[10](0),turnPntArr[10](""); // 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가 For j = 0 To 9 { barArr[j] = barArr[j] + 1; } 상승추세선과 하락추세선의 마지막값출력테스트를 나오게 부탁드립니다, // 고점조건 = 5-1-5에서 가운데 고가가 좌측 5봉과 우측 5봉 고가보다 높다 // 저점조건 = 5-1-5에서 가운데 저가가 좌측 5봉과 우측 5봉 저가보다 낮다 Condition1 = Highest(H,barCnt)[barCnt+1] <= H[barCnt] and H[barCnt] > Highest(H,barCnt); Condition2 = Lowest(L,barCnt)[barCnt+1] >= L[barCnt] and L[barCnt] < Lowest(L,barCnt); // 전환점구분 null값으로 초기화; // if 고점조건, 저점조건 동시 만족시 then // if 이전 고점,저점 범위를 모두 벗어났을 때 // 전환점구분 = 고저점; // else if 이전 고점을 갱신했다면 전환점구분 = 고점; // else if 이전 저점을 갱신했다면 전환점구분 = 저점; // else if 전환점배열의 현재(배열상 1번째)값이 고점이면 전환점구분 = 저점; // else if 전환점배열의 현재 값이 저점이면 전환점구분 = 고점; // else if 고점조건 만족하면 전환점구분 = 고점; // else if 저점조건 만족하면 전환전구분 = 저점; turnPntBit = ""; If Condition1 and Condition2 Then { If Max(valArr[1],valArr[2]) < H[barCnt] and Min(valArr[1],valArr[2]) > L[barCnt] Then turnPntBit = "HiLo"; Else If Max(valArr[1],valArr[2]) < H[barCnt] Then turnPntBit = "Hi"; Else If Min(valArr[1],valArr[2]) > L[barCnt] Then turnPntBit = "Lo"; Else If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; // if 전환점구분에 값이 있을 때만 아래 실행, 없으면 통과 If turnPntBit <> "" Then { // if 전환점구분이 고저점이면 then // 이전 파동은 연장시키고 아래에서 새로이 파동선을 추가토록 한다. If turnPntBit == "HiLo" Then { valArr[1] = IFF(turnPntArr[1] == "Hi",H[barCnt],L[barCnt]); barArr[1] = barCnt; TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else turnPntBit = "Hi"; } // if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then // 배열값들을 이전값으로 Move; If turnPntBit <> turnPntArr[1] Then { for j = 8 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; } } // if 전환점구분이 바뀌었거나 또는 // (전환점구분은 안바뀌었는데 // (이전 고점보다 높은 고점이 발생했거나 또는 // 이전 저점보다 낮은 저점이 발생했으면)) then If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H[barCnt]) or (turnPntBit == "Lo" and valArr[1] > L[barCnt]))) Then { // 값 배열에는 고점 또는 저점을 대입; // 봉개수 배열에는 입력변수의 봉개수 대입; // 전환점 배열에 전환점구분값을 대입; valArr[1] = IFF(turnPntBit == "Hi",H[barCnt],L[barCnt]); barArr[1] = barCnt; turnPntArr[1] = turnPntBit; // if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고; // else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장; If turnPntArr[1][1] <> turnPntArr[1][0] Then TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2], sDate[barArr[1]],sTime[barArr[1]],valArr[1]); Else TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } } TL_SetSize(TL1,0); TL_SetColor(TL1,BLACK); var : TL11(0),TL12(0),hhh(0),lll(0),mmm(0),mm1(0),mm2(0),mm3(0),mm4(0); if turnPntArr[1][0] == "Hi" Then { hhh = valArr[1]; TL_Delete(TL11); TL_SetExtRight(TL11,true); TL_SetColor(TL11,BLUE); TL_SetSize(TL11,0); mmm = (hhh-lll)/5; TL_Delete(mm1); TL_SetExtRight(mm1,true); TL_SetColor(mm1,BLACK); TL_SetSize(mm1,0); TL_Delete(mm2); TL_SetExtRight(mm2,true); TL_SetColor(mm2,BLACK); TL_SetSize(mm2,0); TL_Delete(mm3); TL_SetExtRight(mm3,true); TL_SetColor(mm3,BLACK); TL_SetSize(mm3,0); TL_Delete(mm4); TL_SetExtRight(mm4,true); TL_SetColor(mm4,BLACK); TL_SetSize(mm4,0); } if turnPntArr[1][0] == "Lo" Then { lll = valArr[1]; TL_Delete(TL12); TL_SetExtRight(TL12,true); TL_SetColor(TL12,LGREEN); TL_SetSize(TL12,0); mmm = (hhh-lll)/5; TL_Delete(mm1); TL_SetExtRight(mm1,true); TL_SetColor(mm1,BLACK); TL_SetSize(mm1,0); TL_Delete(mm2); TL_SetExtRight(mm2,true); TL_SetColor(mm2,BLACK); TL_SetSize(mm2,0); TL_Delete(mm3); TL_SetExtRight(mm3,true); TL_SetColor(mm3,BLACK); TL_SetSize(mm3,0); TL_Delete(mm4); TL_SetExtRight(mm4,true); TL_SetColor(mm4,BLACK); TL_SetSize(mm4,0); } if bdate != BDate[1] Then{ HD = sdate; HT = stime; LD = sdate; LT = stime; HH = H; LL = L; } if H > HH Then{ HH = H; HD = sdate; HT = stime; } TL_Delete(TL33); if turnPntArr[1][0] == "Hi" Then{ TL33 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],HD,HT,dayhigh); } if turnPntArr[1][0] == "Lo" Then{ TL33 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],HD,HT,dayhigh); } TL_SetExtRight(TL33,true); TL_SetColor(TL33,LGREEN); TL_SetSize(TL33,1); if L < LL Then{ LL = L; LD = sdate; LT = stime; } TL_Delete(TL44); if turnPntArr[1][0] == "Hi" Then{ TL44 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],LD,LT,daylow); } if turnPntArr[1][0] == "Lo" Then{ TL44 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],LD,LT,daylow); } TL_SetExtRight(TL44,true); TL_SetColor(TL44,BLACK); TL_SetSize(TL44,1); 상승추세선 과 하락추세선의 마지막값이 나오게 출력테스트를부탁드립니다,~~ 봉과 추세선이 만나는지점도텍스트출력부탁드립니다 2) Input:length(5); Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0),처리구분(""), TL_Val1(0),TL_Val2(0); Var:TL11(0),TL12(0),TL13(0),TL14(0),TL15(0),TL16(0),TL17(0),TL18(0),TL19(0),TL20(0); Var:TL21(0),TL22(0),TL23(0),TL24(0),TL25(0),TL26(0),TL27(0),TL28(0),TL29(0),TL30(0),mav(0),T(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 { 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; TL_Delete(TL1); TL_Delete(TL2); If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { Text_Delete(Text1); If 고점[3,1][1] < 고점[2,1][1] and 고점[2,1][1] > 고점[1,1][1]and 저점[2,1][1] < 저점[1,1][1] Then TL_Delete(TL2); } TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]); TL2 = TL_New(sDate[eBar+1],sTime[eBar+1],고점[1,1]+ PriceScale*1,sDate[eBar],sTime[eBar],고점[1,1]+PriceScale*1); TL_SetExtRight(Tl2,true); TL_SetColor(Tl2,CYAN); TL_SetSize(TL2,2); TL_SetColor(TL1,BLACK); TL_SetSize(TL1,0); 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 { 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; TL_Delete(TL1); TL_Delete(TL2); If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { Text_Delete(Text1); If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1] > 고점[1,1][1] Then TL_Delete(TL3); } TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]); TL2 = TL_New(sDate[eBar+1],sTime[eBar+1],저점[1,1]- PriceScale*1,sDate[eBar],sTime[eBar],저점[1,1]-PriceScale*1); TL_SetExtRight(Tl2,true); TL_SetColor(Tl2,RED); TL_SetSize(TL2,2); TL_SetColor(TL1,BLACK); TL_SetSize(TL1,0); If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then { sBar = Index - 고점[2,2]; eBar = Index - 고점[1,2]; } } } mav = ma(C,20); 고점수평선이 확정되어 수평선이 나오면 고점수평선으로부터+50틱에 레드색으로 수평선이 나오게~~반대로 저점수평선이 확정되어 저점을찍으면 저점수평선으로 부턱-50틱에 블루색으로 수평선이 나오게 ~~수평선은 트리로 나오게 해주세요, 2)당일시가기준으로 상승시+50틱마다수평선이나오게 하고십습니다, 당일시가기준으로 하락시-50틱마다 수평선이나오게 하고십습니다 +는 래드색 -는 블루색,, 수평선 마지막값이 나오도록 톄스트출력을 하고십습니다, 3)전일고점과 저점을 기준으로 +50,-50틱마다 2번과갗이 수평선이나오게 하고 전일은 전일이란 글씨가 나오게 ~~수치값테스트술력을 해주세요, 4)당일고점과 저점을 기준으로 +50틱 -50틱 마다 1번이나 2번과갗이 당일이란 글씨가나오게 하고 수치갑텍스트 출력을 하고십습니다, 1234번 색갈을 다 다르게 하게 조정하게끔부탁드립니다~~미리감사드립다,
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-11-10 17:39:37

안녕하세요 예스스탁입니다. 1 Input:barCnt(5); Var:j(0),turnPntBit(""),TL1(0),TL33(0),TL44(0),HD(0),HT(0),LD(0),LT(0),HH(0),LL(0),tx1(0); Array:valArr[10](0),barArr[10](0),turnPntArr[10](""); // 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가 For j = 0 To 9 { barArr[j] = barArr[j] + 1; } //상승추세선과 하락추세선의 마지막값출력테스트를 나오게 부탁드립니다, // 고점조건 = 5-1-5에서 가운데 고가가 좌측 5봉과 우측 5봉 고가보다 높다 // 저점조건 = 5-1-5에서 가운데 저가가 좌측 5봉과 우측 5봉 저가보다 낮다 Condition1 = Highest(H,barCnt)[barCnt+1] <= H[barCnt] and H[barCnt] > Highest(H,barCnt); Condition2 = Lowest(L,barCnt)[barCnt+1] >= L[barCnt] and L[barCnt] < Lowest(L,barCnt); // 전환점구분 null값으로 초기화; // if 고점조건, 저점조건 동시 만족시 then // if 이전 고점,저점 범위를 모두 벗어났을 때 // 전환점구분 = 고저점; // else if 이전 고점을 갱신했다면 전환점구분 = 고점; // else if 이전 저점을 갱신했다면 전환점구분 = 저점; // else if 전환점배열의 현재(배열상 1번째)값이 고점이면 전환점구분 = 저점; // else if 전환점배열의 현재 값이 저점이면 전환점구분 = 고점; // else if 고점조건 만족하면 전환점구분 = 고점; // else if 저점조건 만족하면 전환전구분 = 저점; turnPntBit = ""; If Condition1 and Condition2 Then { If Max(valArr[1],valArr[2]) < H[barCnt] and Min(valArr[1],valArr[2]) > L[barCnt] Then turnPntBit = "HiLo"; Else If Max(valArr[1],valArr[2]) < H[barCnt] Then turnPntBit = "Hi"; Else If Min(valArr[1],valArr[2]) > L[barCnt] Then turnPntBit = "Lo"; Else If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; // if 전환점구분에 값이 있을 때만 아래 실행, 없으면 통과 If turnPntBit <> "" Then { // if 전환점구분이 고저점이면 then // 이전 파동은 연장시키고 아래에서 새로이 파동선을 추가토록 한다. If turnPntBit == "HiLo" Then { valArr[1] = IFF(turnPntArr[1] == "Hi",H[barCnt],L[barCnt]); barArr[1] = barCnt; TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else turnPntBit = "Hi"; } // if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then // 배열값들을 이전값으로 Move; If turnPntBit <> turnPntArr[1] Then { for j = 8 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; } } // if 전환점구분이 바뀌었거나 또는 // (전환점구분은 안바뀌었는데 // (이전 고점보다 높은 고점이 발생했거나 또는 // 이전 저점보다 낮은 저점이 발생했으면)) then If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H[barCnt]) or (turnPntBit == "Lo" and valArr[1] > L[barCnt]))) Then { // 값 배열에는 고점 또는 저점을 대입; // 봉개수 배열에는 입력변수의 봉개수 대입; // 전환점 배열에 전환점구분값을 대입; valArr[1] = IFF(turnPntBit == "Hi",H[barCnt],L[barCnt]); barArr[1] = barCnt; turnPntArr[1] = turnPntBit; // if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고; // else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장; If turnPntArr[1][1] <> turnPntArr[1][0] Then { TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2], sDate[barArr[1]],sTime[barArr[1]],valArr[1]); TX1 = Text_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],NumToStr(valArr[1],2)); if turnPntArr[1][0] == "Hi" Then Text_SetStyle(tx1,2,1); Else Text_SetStyle(tx1,2,0); } Else { TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); Text_SetLocation(tx1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } } } TL_SetSize(TL1,0); TL_SetColor(TL1,BLACK); var : TL11(0),TL12(0),hhh(0),lll(0),mmm(0),mm1(0),mm2(0),mm3(0),mm4(0); if turnPntArr[1][0] == "Hi" Then { hhh = valArr[1]; TL_Delete(TL11); TL_SetExtRight(TL11,true); TL_SetColor(TL11,BLUE); TL_SetSize(TL11,0); mmm = (hhh-lll)/5; TL_Delete(mm1); TL_SetExtRight(mm1,true); TL_SetColor(mm1,BLACK); TL_SetSize(mm1,0); TL_Delete(mm2); TL_SetExtRight(mm2,true); TL_SetColor(mm2,BLACK); TL_SetSize(mm2,0); TL_Delete(mm3); TL_SetExtRight(mm3,true); TL_SetColor(mm3,BLACK); TL_SetSize(mm3,0); TL_Delete(mm4); TL_SetExtRight(mm4,true); TL_SetColor(mm4,BLACK); TL_SetSize(mm4,0); } if turnPntArr[1][0] == "Lo" Then { lll = valArr[1]; TL_Delete(TL12); TL_SetExtRight(TL12,true); TL_SetColor(TL12,LGREEN); TL_SetSize(TL12,0); mmm = (hhh-lll)/5; TL_Delete(mm1); TL_SetExtRight(mm1,true); TL_SetColor(mm1,BLACK); TL_SetSize(mm1,0); TL_Delete(mm2); TL_SetExtRight(mm2,true); TL_SetColor(mm2,BLACK); TL_SetSize(mm2,0); TL_Delete(mm3); TL_SetExtRight(mm3,true); TL_SetColor(mm3,BLACK); TL_SetSize(mm3,0); TL_Delete(mm4); TL_SetExtRight(mm4,true); TL_SetColor(mm4,BLACK); TL_SetSize(mm4,0); } if bdate != BDate[1] Then{ HD = sdate; HT = stime; LD = sdate; LT = stime; HH = H; LL = L; } if H > HH Then{ HH = H; HD = sdate; HT = stime; } TL_Delete(TL33); if turnPntArr[1][0] == "Hi" Then{ TL33 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],HD,HT,dayhigh); } if turnPntArr[1][0] == "Lo" Then{ TL33 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],HD,HT,dayhigh); } TL_SetExtRight(TL33,true); TL_SetColor(TL33,LGREEN); TL_SetSize(TL33,1); if L < LL Then{ LL = L; LD = sdate; LT = stime; } TL_Delete(TL44); if turnPntArr[1][0] == "Hi" Then{ TL44 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],LD,LT,daylow); } if turnPntArr[1][0] == "Lo" Then{ TL44 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],LD,LT,daylow); } TL_SetExtRight(TL44,true); TL_SetColor(TL44,BLACK); TL_SetSize(TL44,1); 2 Input:length(5); Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0),처리구분(""), TL_Val1(0),TL_Val2(0); Var:TL11(0),TL12(0),TL13(0),TL14(0),TL15(0),TL16(0),TL17(0),TL18(0),TL19(0),TL20(0); Var:TL21(0),TL22(0),TL23(0),TL24(0),TL25(0),TL26(0),TL27(0),TL28(0),TL29(0),TL30(0),mav(0),T(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 { 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; TL_Delete(TL1); TL_Delete(TL2); TL_Delete(TL3); If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { Text_Delete(Text1); If 고점[3,1][1] < 고점[2,1][1] and 고점[2,1][1] > 고점[1,1][1]and 저점[2,1][1] < 저점[1,1][1] Then { TL_Delete(TL2); TL_Delete(TL3); } } TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]); TL2 = TL_New(sDate[eBar+1],sTime[eBar+1],고점[1,1]+ PriceScale*1,sDate[eBar],sTime[eBar],고점[1,1]+PriceScale*1); TL3 = TL_New(sDate[eBar+1],sTime[eBar+1],고점[1,1]+ PriceScale*50,sDate[eBar],sTime[eBar],고점[1,1]+PriceScale*50); TL_SetExtRight(Tl2,true); TL_SetColor(Tl2,CYAN); TL_SetSize(TL2,2); TL_SetExtRight(Tl3,true); TL_SetColor(Tl3,CYAN); TL_SetSize(TL3,2); TL_SetColor(TL1,BLACK); TL_SetSize(TL1,0); 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 { 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; TL_Delete(TL1); TL_Delete(TL2); TL_Delete(TL3); If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { Text_Delete(Text1); If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1] > 고점[1,1][1] Then { TL_Delete(TL2); TL_Delete(TL3); } } TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]); TL2 = TL_New(sDate[eBar+1],sTime[eBar+1],저점[1,1]- PriceScale*1,sDate[eBar],sTime[eBar],저점[1,1]-PriceScale*1); TL3 = TL_New(sDate[eBar+1],sTime[eBar+1],저점[1,1]- PriceScale*50,sDate[eBar],sTime[eBar],저점[1,1]-PriceScale*50); TL_SetExtRight(Tl2,true); TL_SetColor(Tl2,RED); TL_SetSize(TL2,2); TL_SetExtRight(Tl3,true); TL_SetColor(Tl3,RED); TL_SetSize(TL3,2); TL_SetColor(TL1,BLACK); TL_SetSize(TL1,0); If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then { sBar = Index - 고점[2,2]; eBar = Index - 고점[1,2]; } } } mav = ma(C,20); 3 input : 표시소숫점자리수(2); var : cnt(0),d1(0),t1(0),HP(0),LP(0); Array : HTL[20](0),LTL[20](0); Array : HTX[20](0),LTX[20](0); if Bdate != Bdate[1] Then { d1 = sDate; t1 = sTime; HP = DayOpen; LP = DayOpen; var2 = PriceScale*50; For cnt = 0 to 19 { TL_Delete(HTL[cnt]); TL_Delete(LTL[cnt]); Text_Delete(HTX[cnt]); Text_Delete(LTX[cnt]); HTL[cnt] = TL_New(sDate,sTime, HP+Var2*cnt,NextBarSdate,NextBarStime,HP+Var2*cnt); TL_SetColor(HTL[cnt],RED); HTX[cnt] = Text_New(sDate,sTime, HP+Var2*cnt,"당일"+NumToStr(HP+Var2*cnt,표시소숫점자리수)); if cnt >= 1 Then { LTL[cnt] = TL_New(sDate,sTime, LP-Var2*cnt,NextBarSdate,NextBarStime,LP-Var2*cnt); TL_SetColor(LTL[cnt],BLUE); LTX[cnt] = Text_New(sDate,sTime, LP-Var2*cnt,"당일"+NumToStr(LP-Var2*cnt,표시소숫점자리수)); } } } Else { For cnt = 0 to 19 { TL_SetEnd(HTL[cnt],sDate,sTime,HP+Var2*cnt); Text_SetLocation(HTL[cnt],sDate,sTime,HP+Var2*cnt); if cnt >= 1 Then { TL_SetEnd(LTL[cnt],sDate,sTime,LP-Var2*cnt); Text_SetLocation(LTL[cnt],sDate,sTime,LP-Var2*cnt); } } } 4 input : 표시소숫점자리수(2); var : cnt(0),d1(0),t1(0),HP(0),LP(0); Array : HTL[20](0),LTL[20](0); Array : HTX[20](0),LTX[20](0); if Bdate != Bdate[1] Then { d1 = sDate; t1 = sTime; HP = DayHigh(1); LP = DayLow(1); var2 = PriceScale*50; For cnt = 0 to 19 { TL_Delete(HTL[cnt]); TL_Delete(LTL[cnt]); Text_Delete(HTX[cnt]); Text_Delete(LTX[cnt]); HTL[cnt] = TL_New(sDate,sTime, HP+Var2*cnt,NextBarSdate,NextBarStime,HP+Var2*cnt); TL_SetColor(HTL[cnt],RED); HTX[cnt] = Text_New(sDate,sTime, HP+Var2*cnt,"전일"+NumToStr(HP+Var2*cnt,표시소숫점자리수)); LTL[cnt] = TL_New(sDate,sTime, LP-Var2*cnt,NextBarSdate,NextBarStime,LP-Var2*cnt); TL_SetColor(LTL[cnt],BLUE); LTX[cnt] = Text_New(sDate,sTime, LP-Var2*cnt,"전일"+NumToStr(LP-Var2*cnt,표시소숫점자리수)); } } Else { For cnt = 0 to 19 { TL_SetEnd(HTL[cnt],sDate,sTime,HP+Var2*cnt); Text_SetLocation(HTL[cnt],sDate,sTime,HP+Var2*cnt); TL_SetEnd(LTL[cnt],sDate,sTime,LP-Var2*cnt); Text_SetLocation(LTL[cnt],sDate,sTime,LP-Var2*cnt); } } 5 input : 표시소숫점자리수(2); var : cnt(0),d1(0),t1(0),HP(0),LP(0); Array : HTL[20](0),LTL[20](0); Array : HTX[20](0),LTX[20](0); if Bdate != Bdate[1] Then { d1 = sDate; t1 = sTime; HP = DayHigh(0); LP = DayLow(0); var2 = PriceScale*50; For cnt = 0 to 19 { TL_Delete(HTL[cnt]); TL_Delete(LTL[cnt]); Text_Delete(HTX[cnt]); Text_Delete(LTX[cnt]); HTL[cnt] = TL_New(sDate,sTime, HP+Var2*cnt,NextBarSdate,NextBarStime,HP+Var2*cnt); TL_SetColor(HTL[cnt],RED); HTX[cnt] = Text_New(sDate,sTime, HP+Var2*cnt,"당일"+NumToStr(HP+Var2*cnt,표시소숫점자리수)); LTL[cnt] = TL_New(sDate,sTime, LP-Var2*cnt,NextBarSdate,NextBarStime,LP-Var2*cnt); TL_SetColor(LTL[cnt],BLUE); LTX[cnt] = Text_New(sDate,sTime, LP-Var2*cnt,"당일"+NumToStr(LP-Var2*cnt,표시소숫점자리수)); } } Else { HP = DayHigh(0); LP = DayLow(0); For cnt = 0 to 19 { TL_SetBegin(HTL[cnt],D1,T1,HP+Var2*cnt); TL_SetEnd(HTL[cnt],sDate,sTime,HP+Var2*cnt); Text_SetLocation(HTL[cnt],sDate,sTime,HP+Var2*cnt); TL_SetBegin(LTL[cnt],D1,T1,LP-Var2*cnt); TL_SetEnd(LTL[cnt],sDate,sTime,LP-Var2*cnt); Text_SetLocation(LTL[cnt],sDate,sTime,LP-Var2*cnt); } } 즐거운 하루되세요 > 장군 님이 쓴 글입니다. > 제목 : 문의드립니다 > 1)Input:barCnt(5); Var:j(0),turnPntBit(""),TL1(0),TL33(0),TL44(0),HD(0),HT(0),LD(0),LT(0),HH(0),LL(0); Array:valArr[10](0),barArr[10](0),turnPntArr[10](""); // 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가 For j = 0 To 9 { barArr[j] = barArr[j] + 1; } 상승추세선과 하락추세선의 마지막값출력테스트를 나오게 부탁드립니다, // 고점조건 = 5-1-5에서 가운데 고가가 좌측 5봉과 우측 5봉 고가보다 높다 // 저점조건 = 5-1-5에서 가운데 저가가 좌측 5봉과 우측 5봉 저가보다 낮다 Condition1 = Highest(H,barCnt)[barCnt+1] <= H[barCnt] and H[barCnt] > Highest(H,barCnt); Condition2 = Lowest(L,barCnt)[barCnt+1] >= L[barCnt] and L[barCnt] < Lowest(L,barCnt); // 전환점구분 null값으로 초기화; // if 고점조건, 저점조건 동시 만족시 then // if 이전 고점,저점 범위를 모두 벗어났을 때 // 전환점구분 = 고저점; // else if 이전 고점을 갱신했다면 전환점구분 = 고점; // else if 이전 저점을 갱신했다면 전환점구분 = 저점; // else if 전환점배열의 현재(배열상 1번째)값이 고점이면 전환점구분 = 저점; // else if 전환점배열의 현재 값이 저점이면 전환점구분 = 고점; // else if 고점조건 만족하면 전환점구분 = 고점; // else if 저점조건 만족하면 전환전구분 = 저점; turnPntBit = ""; If Condition1 and Condition2 Then { If Max(valArr[1],valArr[2]) < H[barCnt] and Min(valArr[1],valArr[2]) > L[barCnt] Then turnPntBit = "HiLo"; Else If Max(valArr[1],valArr[2]) < H[barCnt] Then turnPntBit = "Hi"; Else If Min(valArr[1],valArr[2]) > L[barCnt] Then turnPntBit = "Lo"; Else If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; // if 전환점구분에 값이 있을 때만 아래 실행, 없으면 통과 If turnPntBit <> "" Then { // if 전환점구분이 고저점이면 then // 이전 파동은 연장시키고 아래에서 새로이 파동선을 추가토록 한다. If turnPntBit == "HiLo" Then { valArr[1] = IFF(turnPntArr[1] == "Hi",H[barCnt],L[barCnt]); barArr[1] = barCnt; TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else turnPntBit = "Hi"; } // if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then // 배열값들을 이전값으로 Move; If turnPntBit <> turnPntArr[1] Then { for j = 8 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; } } // if 전환점구분이 바뀌었거나 또는 // (전환점구분은 안바뀌었는데 // (이전 고점보다 높은 고점이 발생했거나 또는 // 이전 저점보다 낮은 저점이 발생했으면)) then If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H[barCnt]) or (turnPntBit == "Lo" and valArr[1] > L[barCnt]))) Then { // 값 배열에는 고점 또는 저점을 대입; // 봉개수 배열에는 입력변수의 봉개수 대입; // 전환점 배열에 전환점구분값을 대입; valArr[1] = IFF(turnPntBit == "Hi",H[barCnt],L[barCnt]); barArr[1] = barCnt; turnPntArr[1] = turnPntBit; // if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고; // else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장; If turnPntArr[1][1] <> turnPntArr[1][0] Then TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2], sDate[barArr[1]],sTime[barArr[1]],valArr[1]); Else TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } } TL_SetSize(TL1,0); TL_SetColor(TL1,BLACK); var : TL11(0),TL12(0),hhh(0),lll(0),mmm(0),mm1(0),mm2(0),mm3(0),mm4(0); if turnPntArr[1][0] == "Hi" Then { hhh = valArr[1]; TL_Delete(TL11); TL_SetExtRight(TL11,true); TL_SetColor(TL11,BLUE); TL_SetSize(TL11,0); mmm = (hhh-lll)/5; TL_Delete(mm1); TL_SetExtRight(mm1,true); TL_SetColor(mm1,BLACK); TL_SetSize(mm1,0); TL_Delete(mm2); TL_SetExtRight(mm2,true); TL_SetColor(mm2,BLACK); TL_SetSize(mm2,0); TL_Delete(mm3); TL_SetExtRight(mm3,true); TL_SetColor(mm3,BLACK); TL_SetSize(mm3,0); TL_Delete(mm4); TL_SetExtRight(mm4,true); TL_SetColor(mm4,BLACK); TL_SetSize(mm4,0); } if turnPntArr[1][0] == "Lo" Then { lll = valArr[1]; TL_Delete(TL12); TL_SetExtRight(TL12,true); TL_SetColor(TL12,LGREEN); TL_SetSize(TL12,0); mmm = (hhh-lll)/5; TL_Delete(mm1); TL_SetExtRight(mm1,true); TL_SetColor(mm1,BLACK); TL_SetSize(mm1,0); TL_Delete(mm2); TL_SetExtRight(mm2,true); TL_SetColor(mm2,BLACK); TL_SetSize(mm2,0); TL_Delete(mm3); TL_SetExtRight(mm3,true); TL_SetColor(mm3,BLACK); TL_SetSize(mm3,0); TL_Delete(mm4); TL_SetExtRight(mm4,true); TL_SetColor(mm4,BLACK); TL_SetSize(mm4,0); } if bdate != BDate[1] Then{ HD = sdate; HT = stime; LD = sdate; LT = stime; HH = H; LL = L; } if H > HH Then{ HH = H; HD = sdate; HT = stime; } TL_Delete(TL33); if turnPntArr[1][0] == "Hi" Then{ TL33 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],HD,HT,dayhigh); } if turnPntArr[1][0] == "Lo" Then{ TL33 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],HD,HT,dayhigh); } TL_SetExtRight(TL33,true); TL_SetColor(TL33,LGREEN); TL_SetSize(TL33,1); if L < LL Then{ LL = L; LD = sdate; LT = stime; } TL_Delete(TL44); if turnPntArr[1][0] == "Hi" Then{ TL44 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],LD,LT,daylow); } if turnPntArr[1][0] == "Lo" Then{ TL44 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],LD,LT,daylow); } TL_SetExtRight(TL44,true); TL_SetColor(TL44,BLACK); TL_SetSize(TL44,1); 상승추세선 과 하락추세선의 마지막값이 나오게 출력테스트를부탁드립니다,~~ 봉과 추세선이 만나는지점도텍스트출력부탁드립니다 2) Input:length(5); Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0),처리구분(""), TL_Val1(0),TL_Val2(0); Var:TL11(0),TL12(0),TL13(0),TL14(0),TL15(0),TL16(0),TL17(0),TL18(0),TL19(0),TL20(0); Var:TL21(0),TL22(0),TL23(0),TL24(0),TL25(0),TL26(0),TL27(0),TL28(0),TL29(0),TL30(0),mav(0),T(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 { 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; TL_Delete(TL1); TL_Delete(TL2); If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { Text_Delete(Text1); If 고점[3,1][1] < 고점[2,1][1] and 고점[2,1][1] > 고점[1,1][1]and 저점[2,1][1] < 저점[1,1][1] Then TL_Delete(TL2); } TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]); TL2 = TL_New(sDate[eBar+1],sTime[eBar+1],고점[1,1]+ PriceScale*1,sDate[eBar],sTime[eBar],고점[1,1]+PriceScale*1); TL_SetExtRight(Tl2,true); TL_SetColor(Tl2,CYAN); TL_SetSize(TL2,2); TL_SetColor(TL1,BLACK); TL_SetSize(TL1,0); 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 { 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; TL_Delete(TL1); TL_Delete(TL2); If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { Text_Delete(Text1); If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1] > 고점[1,1][1] Then TL_Delete(TL3); } TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]); TL2 = TL_New(sDate[eBar+1],sTime[eBar+1],저점[1,1]- PriceScale*1,sDate[eBar],sTime[eBar],저점[1,1]-PriceScale*1); TL_SetExtRight(Tl2,true); TL_SetColor(Tl2,RED); TL_SetSize(TL2,2); TL_SetColor(TL1,BLACK); TL_SetSize(TL1,0); If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then { sBar = Index - 고점[2,2]; eBar = Index - 고점[1,2]; } } } mav = ma(C,20); 고점수평선이 확정되어 수평선이 나오면 고점수평선으로부터+50틱에 레드색으로 수평선이 나오게~~반대로 저점수평선이 확정되어 저점을찍으면 저점수평선으로 부턱-50틱에 블루색으로 수평선이 나오게 ~~수평선은 트리로 나오게 해주세요, 2)당일시가기준으로 상승시+50틱마다수평선이나오게 하고십습니다, 당일시가기준으로 하락시-50틱마다 수평선이나오게 하고십습니다 +는 래드색 -는 블루색,, 수평선 마지막값이 나오도록 톄스트출력을 하고십습니다, 3)전일고점과 저점을 기준으로 +50,-50틱마다 2번과갗이 수평선이나오게 하고 전일은 전일이란 글씨가 나오게 ~~수치값테스트술력을 해주세요, 4)당일고점과 저점을 기준으로 +50틱 -50틱 마다 1번이나 2번과갗이 당일이란 글씨가나오게 하고 수치갑텍스트 출력을 하고십습니다, 1234번 색갈을 다 다르게 하게 조정하게끔부탁드립니다~~미리감사드립다,