커뮤니티

수식 변환 의뢰 드려요!

프로필 이미지
qha71
2018-03-13 19:20:01
276
글번호 117356
답변완료
아래 수식은 멀티챠트용 수식들 입니다! 예스용으로 변환 부탁드릴께요! 감사합니다! Input:length(10),ClsPxUseBit(0),inRange(10),waveLineSize(2),displPRC(1); Var:j(0),jj(0),jjj(0),HH(0),LL(0),lastHi(0),lastLo(0),lastVertex(""),procBit(""), TL1(0),TL2(0); Array:PK[50,4](0),VL[50,4](0), // 1:가격, 2:봉번호, 3:날짜, 4:시각 &#8203; basePK[5](0),baseVL[5](0); // 0:사용 안함, 1:가격, 2:봉번호, 3:날짜, 4:시각&#65279; // 피보나치 라인을 계산하기 위해 기준이 되는 고점과 저점의 정보 //========================================== HH = IFF(ClsPxUseBit = 1,C,H); LL = IFF(ClsPxUseBit = 1,C,L); If CurrentBar = 1 Then Begin PK[1,1] = HH; VL[1,1] = LL; End ; Condition1 = Highest(HH,length) = HH and lastHi <> HH; Condition2 = Lowest (LL,length) = LL and lastLo <> LL; procBit = ""; If Condition1 and Condition2 Then Begin If lastVertex = "Valley" Then procBit = "Peak" Else procBit = "Valley"; End Else If Condition1 Then procBit = "Peak" Else If Condition2 Then procBit = "Valley"; //========================================== If procBit = "Peak" Then Begin lastHi = HH; If lastVertex = "Valley" Then Begin For j = 50 DownTo 2 Begin For jj = 1 To 4 Begin PK[j,jj] = PK[j-1,jj]; End ; End ; PK[1,1] = HH; PK[1,2] = BarNumber; PK[1,3] = Date; PK[1,4] = Time; TL1 = TL_New(VL[1,3],VL[1,4],VL[1,1],PK[1,3],PK[1,4],PK[1,1]); TL_SetSize(TL1,waveLineSize); TL_SetColor(TL1,RED); &#8203;// 주어진 범위내에서 가장 높은 고점을 찾는다 basePK[1] = 0; For j = 1 To inRange Begin // 주어진 범위내에서 If basePK[1] < PK[j,1] Then Begin // 기준고점보다 높은 고점이 나오면 For jjj = 1 To 4 Begin basePK[jjj] = PK[j,jjj]; // 1번열부터 4번열까지의 기준고점의 내용을 갱신 End ; End ; End ; End Else If PK[1,1] < HH Then Begin PK[1,1] = HH; PK[1,2] = BarNumber; PK[1,3] = Date; PK[1,4] = Time; TL_SetEnd(TL1,PK[1,3],PK[1,4],PK[1,1]); End ; lastVertex = "Peak"; End ; //========================================== If procBit = "Valley" Then Begin lastLo = LL; If lastVertex = "Peak" then Begin For j = 50 DownTo 2 Begin For jj = 1 To 4 Begin VL[j,jj] = VL[j-1,jj]; End ; End ; VL[1,1] = LL; VL[1,2] = BarNumber; VL[1,3] = Date; VL[1,4] = Time; TL1 = TL_New(PK[1,3],PK[1,4],PK[1,1],VL[1,3],VL[1,4],VL[1,1]); TL_SetSize(TL1,waveLineSize); TL_SetColor(TL1,BLUE); &#8203;// 주어진 범위 내에서 가장 낮은 저점을 찾는다. baseVL[1] = 0; For j = 1 To inRange Begin // 주어진 범위 내에서 If baseVL[1] > VL[j,1] or baseVL[1] = 0 Then Begin // 기준저점보다 낮거나 기준저가 0이면 For jjj = 1 To 4 Begin baseVL[jjj] = VL[j,jjj]; // 기준저점의 내용을 갱신 End ; End ; End ; End Else If VL[1,1] > LL then Begin VL[1,1] = LL; VL[1,2] = BarNumber; VL[1,3] = Date; VL[1,4] = Time; TL_SetEnd(TL1,VL[1,3],VL[1,4],VL[1,1]); End ; lastVertex = "Valley"; End ; //========================================== &#8203;Array: fr[7,4](0); // 1:비율, 2:가격, 3:추세선 ID, 4:텍스트 ID // 피보나치 수열 값을 저장할 배열변수 선언 &#8203;If CurrentBar = 1 Then Begin &#8203;// 계산에 필요한 최대봉개수(Maximum Bars Back)를 설정하게 되는데 최대봉개수 이전의 봉에서는 계산 결과가 안 나오고 // 최대봉개수 이상의 봉이 생긴 이후에 계산 값이 나온다. // 그래서 Maximum Bars Back가 20으로 설정되어 있으면 21번째 봉부터 CurrentBar가 1이 된다. // 한번 설정해 놓으면 바뀔 일이 없으므로 CurrentBar가 1일 때만 아래 블럭안의 작업을 수행하도록 한다. 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; End ; If basePK[1] > 0 and baseVL[1] > 0 Then Begin // 기준고, 기준저 값이 있는 경우 If baseVL[2][1] <> baseVL[2] or basePK[2][1] <> basePK[2] Then Begin &#8203;// 기준저의 봉 번호가 바뀌었거나(기준저가 바뀜) 기준고의 봉 번호가 바뀌었다면(기준고 변동) If TL2 > 0 Then TL_Delete(TL2); &#8203;// TL2는 기준고와 기준저를 잇는 추세선이며, 0보다 크다면 이미 추세선이 있다는 의미이므로 삭제하고 새로 그린다. TL2 = TL_New(baseVL[3],baseVL[4],baseVL[1],basePK[3],basePK[4],basePK[1]); TL_SetSize(TL2,4); TL_SetColor(TL2,Magenta); // 색깔은 개인 취향에 맞게 수정 If baseVL[2] < basePK[2] Then Begin &#8203;// 기준저점의 봉번호보다 기준고점의 봉번호가 크다면 기준고점이 뒤에 나타난 것이므로 기준파동은 상승파동이 된다. for j = 1 to 7 Begin If fr[j,3] > 0 Then TL_Delete(fr[j,3]); // 3번째 열을 추세선ID로 사용하겠다고 했으니 값이 0보다 크면 기존 추세선을 삭제 fr[j,2] = basePK[1] - ((basePK[1] - baseVL[1]) * fr[j,1]); // 2번째 열은 피보나치 비율이 곱해진 가격&#8203; fr[j,3] = TL_New(baseVL[3],baseVL[4],fr[j,2],Date,Time,fr[j,2]); &#8203; // 다시 3번째 열에 추세선의 ID를 저장 If displPRC = 1 Then Begin If fr[j,4] > 0 Then Text_Delete(fr[j,4]); // 4번째열은 텍스트ID. &#8203; fr[j,4] = Text_New(baseVL[3],baseVL[4],fr[j,2],"(" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2)); Text_SetStyle(fr[j,4], 1, 2); Text_SetColor(fr[j,4],black); End ; End ; End Else If basePK[2] < baseVL[2] Then Begin for j = 1 to 7 Begin If fr[j,3] > 0 Then TL_Delete(fr[j,3]); fr[j,2] = baseVL[1] + ((basePK[1] - baseVL[1]) * fr[j,1]); fr[j,3] = TL_New(basePK[3],basePK[4],fr[j,2],Date,Time,fr[j,2]); If displPRC = 1 Then Begin If fr[j,4] > 0 Then Text_Delete(fr[j,4]); fr[j,4] = Text_New(basePK[3],basePK[4],fr[j,2],"(" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2)); Text_SetStyle(fr[j,4], 1, 2); Text_SetColor(fr[j,4],black); End ; End ; End ; End Else Begin &#8203;// 기준고와 기준저의 변동이 없다면 기준 파동선은 그대로 두고 피보나치 되돌림만 연장한다. for j = 1 to 7 Begin TL_SetEnd(fr[j,3],Date,Time,fr[j,2]); End ; End ; End ; ----------------------------------------------------------------------------------- input:Length(10); Var:sBar(0),subTL1(0); Var:subLastHi(0),subLastLo(0),subLastVertex(""),subProcBit(""); Var:subPK1(0),subPK2(0),subPK3(0),subPK4(0),subPK5(0),subPK6(0),subPK7(0),subPK8(0),subPK9(0),subPK10(0), subVL1(0),subVL2(0),subVL3(0),subVL4(0),subVL5(0),subVL6(0),subVL7(0),subVL8(0),subVL9(0),subVL10(0), subPkBN1(0),subPkBN2(0),subPkBN3(0),subPkBN4(0),subPkBN5(0), subPkBN6(0),subPkBN7(0),subPkBN8(0),subPkBN9(0),subPkBN10(0), subVlBN1(0),subVlBN2(0),subVlBN3(0),subVlBN4(0),subVlBN5(0), subVlBN6(0),subVlBN7(0),subVlBN8(0),subVlBN9(0),subVlBN10(0); Var: var0(0),var1(0),var2(0),var3(0); //========================================== value1 = RSI( C, Length ) ; {value1 = Stochastic( H, L, C, Length, 3, 3, 1, var0, var1, var2, var3 ) ;} plot1(value1); condition3 = Highest(Value1,length) = Value1 and subLastHi <> Value1; condition4 = Lowest (value1,length) = value1 and subLastLo <> value1; subProcBit = ""; If Condition3 and Condition4 Then Begin If subLastVertex = "Valley" Then Begin If subVL1 > value1 Then SubProcBit = "Valley" Else SubProcBit = "Peak"; End Else If subLastVertex = "Peak" Then Begin If subPK1 < value1 Then subProcBit = "Peak" Else subProcBit = "Valley"; End; End Else If Condition3 Then subProcBit = "Peak" Else If condition4 Then subProcBit = "Valley"; //========================================== If subProcBit = "Peak" Then Begin subLastHi = H; If subLastVertex = "Valley" Then Begin subPK9 = subPK8; subpkBN9 = subpkBN8; subPK8 = subPK7; subpkBN8 = subpkBN7; subPK7 = subPK6; subpkBN7 = subpkBN6; subPK6 = subPK5; subpkBN6 = subpkBN5; subPK5 = subPK4; subpkBN5 = subpkBN4; subPK4 = subPK3; subpkBN4 = subpkBN3; subPK3 = subPK2; subpkBN3 = subpkBN2; subPK2 = subPK1; subpkBN2 = subpkBN1; subPK1 = value1; subpkBN1 = BarNumber; sBar = BarNumber - subvlBN1; subTL1 = tl_new_self(Date[sBar],Time[sBar],subVL1,Date,Time,subPK1); TL_SetSize(subTL1,2); TL_SetColor(subTL1,RED); End Else If subPK1 < value1 Then Begin subPK1 = value1; subpkBN1 = BarNumber; TL_SetEnd(subTL1,Date,Time,subPK1); End ; sublastVertex = "Peak"; End ; //========================================== If subprocBit = "Valley" Then Begin sublastLo = value1; If sublastVertex = "Peak" then Begin subVL9 = subVL8; subvlBN9 = subvlBN8; subVL8 = subVL7; subvlBN8 = subvlBN7; subVL7 = subVL6; subvlBN7 = subvlBN6; subVL6 = subVL5; subvlBN6 = subvlBN5; subVL5 = subVL4; subvlBN5 = subvlBN4; subVL4 = subVL3; subvlBN4 = subvlBN3; subVL3 = subVL2; subvlBN3 = subvlBN2; subVL2 = subVL1; subvlBN2 = subvlBN1; subVL1 = value1; subvlBN1 = BarNumber; sBar = BarNumber - subpkBN1; subTL1 = tl_new_self(Date[sBar],Time[sBar],subPK1,Date,Time,subVL1); TL_SetSize(subTL1,2); TL_SetColor(subTL1,BLUE); End Else If subVL1 > value1 then Begin subVL1 = value1; subvlBN1 = BarNumber; TL_SetEnd(subTL1,Date,Time,subVL1); End ; sublastVertex = "Valley"; End ; ------------------------------------------------------------------------------------ Indicator Name : HiLoZZTrendLine_RSI Input:length(10); Var:lastHi(0),lastLo(0),lastVertex(""),procBit(""); Var:sBar(0),TL1(0); Var:PK1(0),PK2(0),PK3(0),PK4(0),PK5(0),PK6(0),PK7(0),PK8(0),PK9(0),PK10(0), VL1(0),VL2(0),VL3(0),VL4(0),VL5(0),VL6(0),VL7(0),VL8(0),VL9(0),VL10(0), pkBN1(0),pkBN2(0),pkBN3(0),pkBN4(0),pkBN5(0), pkBN6(0),pkBN7(0),pkBN8(0),pkBN9(0),pkBN10(0), vlBN1(0),vlBN2(0),vlBN3(0),vlBN4(0),vlBN5(0), vlBN6(0),vlBN7(0),vlBN8(0),vlBN9(0),vlBN10(0); //========================================== Condition1 = Highest(H,length) = H and lastHi <> H; Condition2 = Lowest (L,length) = L and lastLo <> L; procBit = ""; If Condition1 and Condition2 Then Begin If lastVertex = "Valley" Then Begin If VL1 > L Then procBit = "Valley" Else procBit = "Peak"; End Else If lastVertex = "Peak" Then Begin If PK1 < H Then procBit = "Peak" Else procBit = "Valley"; End; End Else If Condition1 Then procBit = "Peak" Else If Condition2 Then procBit = "Valley"; //========================================== If procBit = "Peak" Then Begin lastHi = H; If lastVertex = "Valley" Then Begin PK9 = PK8; pkBN9 = pkBN8; PK8 = PK7; pkBN8 = pkBN7; PK7 = PK6; pkBN7 = pkBN6; PK6 = PK5; pkBN6 = pkBN5; PK5 = PK4; pkBN5 = pkBN4; PK4 = PK3; pkBN4 = pkBN3; PK3 = PK2; pkBN3 = pkBN2; PK2 = PK1; pkBN2 = pkBN1; PK1 = H; pkBN1 = BarNumber; sBar = BarNumber - vlBN1; TL1 = TL_New(Date[sBar],Time[sBar],VL1,Date,Time,PK1); TL_SetSize(TL1,2); TL_SetColor(TL1,RED); End Else If PK1 < H Then Begin PK1 = H; pkBN1 = BarNumber; TL_SetEnd(TL1,Date,Time,PK1); End ; lastVertex = "Peak"; End ; //========================================== If procBit = "Valley" Then Begin lastLo = L; If lastVertex = "Peak" then Begin VL9 = VL8; vlBN9 = vlBN8; VL8 = VL7; vlBN8 = vlBN7; VL7 = VL6; vlBN7 = vlBN6; VL6 = VL5; vlBN6 = vlBN5; VL5 = VL4; vlBN5 = vlBN4; VL4 = VL3; vlBN4 = vlBN3; VL3 = VL2; vlBN3 = vlBN2; VL2 = VL1; vlBN2 = vlBN1; VL1 = L; vlBN1 = BarNumber; sBar = BarNumber - pkBN1; TL1 = TL_New(Date[sBar],Time[sBar],PK1,Date,Time,VL1); TL_SetSize(TL1,2); TL_SetColor(TL1,BLUE); End Else If VL1 > L then Begin VL1 = L; vlBN1 = BarNumber; TL_SetEnd(TL1,Date,Time,VL1); End ; lastVertex = "Valley"; End ; //========================================== Var:subTL1(0); Var:subLastHi(0),subLastLo(0),subLastVertex(""),subProcBit(""); Var:subPK1(0),subPK2(0),subPK3(0),subPK4(0),subPK5(0),subPK6(0),subPK7(0),subPK8(0),subPK9(0),subPK10(0), subVL1(0),subVL2(0),subVL3(0),subVL4(0),subVL5(0),subVL6(0),subVL7(0),subVL8(0),subVL9(0),subVL10(0), subPkBN1(0),subPkBN2(0),subPkBN3(0),subPkBN4(0),subPkBN5(0), subPkBN6(0),subPkBN7(0),subPkBN8(0),subPkBN9(0),subPkBN10(0), subVlBN1(0),subVlBN2(0),subVlBN3(0),subVlBN4(0),subVlBN5(0), subVlBN6(0),subVlBN7(0),subVlBN8(0),subVlBN9(0),subVlBN10(0); Var: var0(0),var1(0),var2(0),var3(0); //========================================== value1 = RSI( C, Length ) ; plot1(value1); condition3 = Highest(Value1,length) = Value1 and subLastHi <> Value1; condition4 = Lowest (value1,length) = value1 and subLastLo <> value1; subProcBit = ""; If Condition3 and Condition4 Then Begin If subLastVertex = "Valley" Then Begin If subVL1 > value1 Then SubProcBit = "Valley" Else SubProcBit = "Peak"; End Else If subLastVertex = "Peak" Then Begin If subPK1 < value1 Then subProcBit = "Peak" Else subProcBit = "Valley"; End; End Else If Condition3 Then subProcBit = "Peak" Else If condition4 Then subProcBit = "Valley"; //========================================== If subProcBit = "Peak" Then Begin subLastHi = H; If subLastVertex = "Valley" Then Begin subPK9 = subPK8; subpkBN9 = subpkBN8; subPK8 = subPK7; subpkBN8 = subpkBN7; subPK7 = subPK6; subpkBN7 = subpkBN6; subPK6 = subPK5; subpkBN6 = subpkBN5; subPK5 = subPK4; subpkBN5 = subpkBN4; subPK4 = subPK3; subpkBN4 = subpkBN3; subPK3 = subPK2; subpkBN3 = subpkBN2; subPK2 = subPK1; subpkBN2 = subpkBN1; subPK1 = value1; subpkBN1 = BarNumber; sBar = BarNumber - subvlBN1; subTL1 = tl_new_self(Date[sBar],Time[sBar],subVL1,Date,Time,subPK1); TL_SetSize(subTL1,2); TL_SetColor(subTL1,RED); End Else If subPK1 < value1 Then Begin subPK1 = value1; subpkBN1 = BarNumber; TL_SetEnd(subTL1,Date,Time,subPK1); End ; sublastVertex = "Peak"; End ; //========================================== If subprocBit = "Valley" Then Begin sublastLo = value1; If sublastVertex = "Peak" then Begin subVL9 = subVL8; subvlBN9 = subvlBN8; subVL8 = subVL7; subvlBN8 = subvlBN7; subVL7 = subVL6; subvlBN7 = subvlBN6; subVL6 = subVL5; subvlBN6 = subvlBN5; subVL5 = subVL4; subvlBN5 = subvlBN4; subVL4 = subVL3; subvlBN4 = subvlBN3; subVL3 = subVL2; subvlBN3 = subvlBN2; subVL2 = subVL1; subvlBN2 = subvlBN1; subVL1 = value1; subvlBN1 = BarNumber; sBar = BarNumber - subpkBN1; subTL1 = tl_new_self(Date[sBar],Time[sBar],subPK1,Date,Time,subVL1); TL_SetSize(subTL1,2); TL_SetColor(subTL1,BLUE); End Else If subVL1 > value1 then Begin subVL1 = value1; subvlBN1 = BarNumber; TL_SetEnd(subTL1,Date,Time,subVL1); End ; sublastVertex = "Valley"; End ; //========================================== var:TL2(0),subTL2(0); if VL2 > VL1 and subVL2 < subVL1 then begin TL2 = tl_new_bn(vlBN2,VL2,vlBN1,VL1); TL_SetSize(TL2,2); TL_SetColor(TL2,BLACK); subTL2 = tl_new_self_bn(subVlBN2,subVL2,subVlBN1,subVL1); TL_SetSize(subTL2,2); TL_SetColor(subTL2,BLACK); end; --------------------------------------------------------------------------------- Indicator Name : HiLoZZTrendLine_Stochastics Input:length(10); Var:lastHi(0),lastLo(0),lastVertex(""),procBit(""); Var:sBar(0),TL1(0); Var:PK1(0),PK2(0),PK3(0),PK4(0),PK5(0),PK6(0),PK7(0),PK8(0),PK9(0),PK10(0), VL1(0),VL2(0),VL3(0),VL4(0),VL5(0),VL6(0),VL7(0),VL8(0),VL9(0),VL10(0), pkBN1(0),pkBN2(0),pkBN3(0),pkBN4(0),pkBN5(0), pkBN6(0),pkBN7(0),pkBN8(0),pkBN9(0),pkBN10(0), vlBN1(0),vlBN2(0),vlBN3(0),vlBN4(0),vlBN5(0), vlBN6(0),vlBN7(0),vlBN8(0),vlBN9(0),vlBN10(0); //========================================== Condition1 = Highest(H,length) = H and lastHi <> H; Condition2 = Lowest (L,length) = L and lastLo <> L; procBit = ""; If Condition1 and Condition2 Then Begin If lastVertex = "Valley" Then Begin If VL1 > L Then procBit = "Valley" Else procBit = "Peak"; End Else If lastVertex = "Peak" Then Begin If PK1 < H Then procBit = "Peak" Else procBit = "Valley"; End; End Else If Condition1 Then procBit = "Peak" Else If Condition2 Then procBit = "Valley"; //========================================== If procBit = "Peak" Then Begin lastHi = H; If lastVertex = "Valley" Then Begin PK9 = PK8; pkBN9 = pkBN8; PK8 = PK7; pkBN8 = pkBN7; PK7 = PK6; pkBN7 = pkBN6; PK6 = PK5; pkBN6 = pkBN5; PK5 = PK4; pkBN5 = pkBN4; PK4 = PK3; pkBN4 = pkBN3; PK3 = PK2; pkBN3 = pkBN2; PK2 = PK1; pkBN2 = pkBN1; PK1 = H; pkBN1 = BarNumber; sBar = BarNumber - vlBN1; TL1 = TL_New(Date[sBar],Time[sBar],VL1,Date,Time,PK1); TL_SetSize(TL1,2); TL_SetColor(TL1,RED); End Else If PK1 < H Then Begin PK1 = H; pkBN1 = BarNumber; TL_SetEnd(TL1,Date,Time,PK1); End ; lastVertex = "Peak"; End ; //========================================== If procBit = "Valley" Then Begin lastLo = L; If lastVertex = "Peak" then Begin VL9 = VL8; vlBN9 = vlBN8; VL8 = VL7; vlBN8 = vlBN7; VL7 = VL6; vlBN7 = vlBN6; VL6 = VL5; vlBN6 = vlBN5; VL5 = VL4; vlBN5 = vlBN4; VL4 = VL3; vlBN4 = vlBN3; VL3 = VL2; vlBN3 = vlBN2; VL2 = VL1; vlBN2 = vlBN1; VL1 = L; vlBN1 = BarNumber; sBar = BarNumber - pkBN1; TL1 = TL_New(Date[sBar],Time[sBar],PK1,Date,Time,VL1); TL_SetSize(TL1,2); TL_SetColor(TL1,BLUE); End Else If VL1 > L then Begin VL1 = L; vlBN1 = BarNumber; TL_SetEnd(TL1,Date,Time,VL1); End ; lastVertex = "Valley"; End ; //========================================== Var:subTL1(0); Var:subLastHi(0),subLastLo(0),subLastVertex(""),subProcBit(""); Var:subPK1(0),subPK2(0),subPK3(0),subPK4(0),subPK5(0),subPK6(0),subPK7(0),subPK8(0),subPK9(0),subPK10(0), subVL1(0),subVL2(0),subVL3(0),subVL4(0),subVL5(0),subVL6(0),subVL7(0),subVL8(0),subVL9(0),subVL10(0), subPkBN1(0),subPkBN2(0),subPkBN3(0),subPkBN4(0),subPkBN5(0), subPkBN6(0),subPkBN7(0),subPkBN8(0),subPkBN9(0),subPkBN10(0), subVlBN1(0),subVlBN2(0),subVlBN3(0),subVlBN4(0),subVlBN5(0), subVlBN6(0),subVlBN7(0),subVlBN8(0),subVlBN9(0),subVlBN10(0); Var: var0(0),var1(0),var2(0),var3(0); //========================================== value2 = Stochastic( H, L, C, Length, 3, 3, 1, var0, var1, var2, var3 ) ; value1 = var2; plot1(value1); condition3 = Highest(Value1,length) = Value1 and subLastHi <> Value1; condition4 = Lowest (value1,length) = value1 and subLastLo <> value1; subProcBit = ""; If Condition3 and Condition4 Then Begin If subLastVertex = "Valley" Then Begin If subVL1 > value1 Then SubProcBit = "Valley" Else SubProcBit = "Peak"; End Else If subLastVertex = "Peak" Then Begin If subPK1 < value1 Then subProcBit = "Peak" Else subProcBit = "Valley"; End; End Else If Condition3 Then subProcBit = "Peak" Else If condition4 Then subProcBit = "Valley"; //========================================== If subProcBit = "Peak" Then Begin subLastHi = H; If subLastVertex = "Valley" Then Begin subPK9 = subPK8; subpkBN9 = subpkBN8; subPK8 = subPK7; subpkBN8 = subpkBN7; subPK7 = subPK6; subpkBN7 = subpkBN6; subPK6 = subPK5; subpkBN6 = subpkBN5; subPK5 = subPK4; subpkBN5 = subpkBN4; subPK4 = subPK3; subpkBN4 = subpkBN3; subPK3 = subPK2; subpkBN3 = subpkBN2; subPK2 = subPK1; subpkBN2 = subpkBN1; subPK1 = value1; subpkBN1 = BarNumber; sBar = BarNumber - subvlBN1; subTL1 = tl_new_self(Date[sBar],Time[sBar],subVL1,Date,Time,subPK1); TL_SetSize(subTL1,2); TL_SetColor(subTL1,RED); End Else If subPK1 < value1 Then Begin subPK1 = value1; subpkBN1 = BarNumber; TL_SetEnd(subTL1,Date,Time,subPK1); End ; sublastVertex = "Peak"; End ; //========================================== If subprocBit = "Valley" Then Begin sublastLo = value1; If sublastVertex = "Peak" then Begin subVL9 = subVL8; subvlBN9 = subvlBN8; subVL8 = subVL7; subvlBN8 = subvlBN7; subVL7 = subVL6; subvlBN7 = subvlBN6; subVL6 = subVL5; subvlBN6 = subvlBN5; subVL5 = subVL4; subvlBN5 = subvlBN4; subVL4 = subVL3; subvlBN4 = subvlBN3; subVL3 = subVL2; subvlBN3 = subvlBN2; subVL2 = subVL1; subvlBN2 = subvlBN1; subVL1 = value1; subvlBN1 = BarNumber; sBar = BarNumber - subpkBN1; subTL1 = tl_new_self(Date[sBar],Time[sBar],subPK1,Date,Time,subVL1); TL_SetSize(subTL1,2); TL_SetColor(subTL1,BLUE); End Else If subVL1 > value1 then Begin subVL1 = value1; subvlBN1 = BarNumber; TL_SetEnd(subTL1,Date,Time,subVL1); End ; sublastVertex = "Valley"; End ; //========================================== var:TL2(0),subTL2(0); if VL2 > VL1 and subVL2 < subVL1 then begin TL2 = tl_new_bn(vlBN2,VL2,vlBN1,VL1); TL_SetSize(TL2,2); TL_SetColor(TL2,BLACK); subTL2 = tl_new_self_bn(subVlBN2,subVL2,subVlBN1,subVL1); TL_SetSize(subTL2,2); TL_SetColor(subTL2,BLACK); end;
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-03-14 10:03:06

안녕하세요 예스스탁입니다. 1. Input:length(10),ClsPxUseBit(0),inRange(10),waveLineSize(2),displPRC(1); Var:j(0),jj(0),jjj(0),HH(0),LL(0),lastHi(0),lastLo(0),lastVertex(""),procBit(""), TL1(0),TL2(0); Array:PK[50,4](0),VL[50,4](0), // 1:가격, 2:봉번호, 3:날짜, 4:시각 basePK[5](0),baseVL[5](0); // 0:사용 안함, 1:가격, 2:봉번호, 3:날짜, 4:시각? // 피보나치 라인을 계산하기 위해 기준이 되는 고점과 저점의 정보 //========================================== HH = IFF(ClsPxUseBit == 1,C,H); LL = IFF(ClsPxUseBit == 1,C,L); If CurrentBar == 1 Then Begin PK[1,1] = HH; VL[1,1] = LL; End ; Condition1 = Highest(HH,length) == HH and lastHi <> HH; Condition2 = Lowest (LL,length) == LL and lastLo <> LL; procBit = ""; If Condition1 and Condition2 Then Begin If lastVertex == "Valley" Then procBit = "Peak"; Else procBit = "Valley"; End Else If Condition1 Then procBit = "Peak"; Else If Condition2 Then procBit = "Valley"; //========================================== If procBit == "Peak" Then Begin lastHi = HH; If lastVertex == "Valley" Then Begin For j = 50 DownTo 2 Begin For jj = 1 To 4 Begin PK[j,jj] = PK[j-1,jj]; End ; End ; PK[1,1] = HH; PK[1,2] = index; PK[1,3] = Date; PK[1,4] = Time; TL1 = TL_New(VL[1,3],VL[1,4],VL[1,1],PK[1,3],PK[1,4],PK[1,1]); TL_SetSize(TL1,waveLineSize); TL_SetColor(TL1,RED); // 주어진 범위내에서 가장 높은 고점을 찾는다 basePK[1] = 0; For j = 1 To inRange Begin // 주어진 범위내에서 If basePK[1] < PK[j,1] Then Begin // 기준고점보다 높은 고점이 나오면 For jjj = 1 To 4 Begin basePK[jjj] = PK[j,jjj]; // 1번열부터 4번열까지의 기준고점의 내용을 갱신 End ; End ; End ; End Else If PK[1,1] < HH Then Begin PK[1,1] = HH; PK[1,2] = index; PK[1,3] = Date; PK[1,4] = Time; TL_SetEnd(TL1,PK[1,3],PK[1,4],PK[1,1]); End ; lastVertex = "Peak"; End ; //========================================== If procBit == "Valley" Then Begin lastLo = LL; If lastVertex == "Peak" then Begin For j = 50 DownTo 2 Begin For jj = 1 To 4 Begin VL[j,jj] = VL[j-1,jj]; End ; End ; VL[1,1] = LL; VL[1,2] = index; VL[1,3] = Date; VL[1,4] = Time; TL1 = TL_New(PK[1,3],PK[1,4],PK[1,1],VL[1,3],VL[1,4],VL[1,1]); TL_SetSize(TL1,waveLineSize); TL_SetColor(TL1,BLUE); // 주어진 범위 내에서 가장 낮은 저점을 찾는다. baseVL[1] = 0; For j = 1 To inRange Begin // 주어진 범위 내에서 If baseVL[1] > VL[j,1] or baseVL[1] == 0 Then Begin // 기준저점보다 낮거나 기준저가 0이면 For jjj = 1 To 4 Begin baseVL[jjj] = VL[j,jjj]; // 기준저점의 내용을 갱신 End ; End ; End ; End Else If VL[1,1] > LL then Begin VL[1,1] = LL; VL[1,2] = index; VL[1,3] = Date; VL[1,4] = Time; TL_SetEnd(TL1,VL[1,3],VL[1,4],VL[1,1]); End ; lastVertex = "Valley"; End ; //========================================== Array: fr[7,4](0); // 1:비율, 2:가격, 3:추세선 ID, 4:텍스트 ID // 피보나치 수열 값을 저장할 배열변수 선언 If CurrentBar == 1 Then Begin // 계산에 필요한 최대봉개수(Maximum Bars Back)를 설정하게 되는데 최대봉개수 이전의 봉에서는 계산 결과가 안 나오고 // 최대봉개수 이상의 봉이 생긴 이후에 계산 값이 나온다. // 그래서 Maximum Bars Back가 20으로 설정되어 있으면 21번째 봉부터 CurrentBar가 1이 된다. // 한번 설정해 놓으면 바뀔 일이 없으므로 CurrentBar가 1일 때만 아래 블럭안의 작업을 수행하도록 한다. 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; End ; If basePK[1] > 0 and baseVL[1] > 0 Then Begin // 기준고, 기준저 값이 있는 경우 If baseVL[2][1] <> baseVL[2] or basePK[2][1] <> basePK[2] Then Begin // 기준저의 봉 번호가 바뀌었거나(기준저가 바뀜) 기준고의 봉 번호가 바뀌었다면(기준고 변동) If TL2 > 0 Then TL_Delete(TL2); // TL2는 기준고와 기준저를 잇는 추세선이며, 0보다 크다면 이미 추세선이 있다는 의미이므로 삭제하고 새로 그린다. TL2 = TL_New(baseVL[3],baseVL[4],baseVL[1],basePK[3],basePK[4],basePK[1]); TL_SetSize(TL2,4); TL_SetColor(TL2,Magenta); // 색깔은 개인 취향에 맞게 수정 If baseVL[2] < basePK[2] Then Begin // 기준저점의 봉번호보다 기준고점의 봉번호가 크다면 기준고점이 뒤에 나타난 것이므로 기준파동은 상승파동이 된다. for j = 1 to 7 Begin If fr[j,3] > 0 Then TL_Delete(fr[j,3]); // 3번째 열을 추세선ID로 사용하겠다고 했으니 값이 0보다 크면 기존 추세선을 삭제 fr[j,2] = basePK[1] - ((basePK[1] - baseVL[1]) * fr[j,1]); // 2번째 열은 피보나치 비율이 곱해진 가격? fr[j,3] = TL_New(baseVL[3],baseVL[4],fr[j,2],Date,Time,fr[j,2]); // 다시 3번째 열에 추세선의 ID를 저장 If displPRC == 1 Then Begin If fr[j,4] > 0 Then Text_Delete(fr[j,4]); // 4번째열은 텍스트ID. ? fr[j,4] = Text_New(baseVL[3],baseVL[4],fr[j,2],"(" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2)); Text_SetStyle(fr[j,4], 1, 2); Text_SetColor(fr[j,4],black); End ; End ; End Else If basePK[2] < baseVL[2] Then Begin for j = 1 to 7 Begin If fr[j,3] > 0 Then TL_Delete(fr[j,3]); fr[j,2] = baseVL[1] + ((basePK[1] - baseVL[1]) * fr[j,1]); fr[j,3] = TL_New(basePK[3],basePK[4],fr[j,2],Date,Time,fr[j,2]); If displPRC == 1 Then Begin If fr[j,4] > 0 Then Text_Delete(fr[j,4]); fr[j,4] = Text_New(basePK[3],basePK[4],fr[j,2],"(" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2)); Text_SetStyle(fr[j,4], 1, 2); Text_SetColor(fr[j,4],black); End ; End ; End ; End Else Begin // 기준고와 기준저의 변동이 없다면 기준 파동선은 그대로 두고 피보나치 되돌림만 연장한다. for j = 1 to 7 Begin TL_SetEnd(fr[j,3],Date,Time,fr[j,2]); End ; End ; End ; 2 두번째 식은 지표에 추세선을 그리는 부분인데 예스랭귀지에서는 현재 지표에는 추세선을 그릴수 없어 수식변경이 가능하지 않습니다. 3 Input:length(10); Var:lastHi(0),lastLo(0),lastVertex(""),procBit(""); Var:sBar(0),TL1(0); Var:PK1(0),PK2(0),PK3(0),PK4(0),PK5(0),PK6(0),PK7(0),PK8(0),PK9(0),PK10(0), VL1(0),VL2(0),VL3(0),VL4(0),VL5(0),VL6(0),VL7(0),VL8(0),VL9(0),VL10(0), pkBN1(0),pkBN2(0),pkBN3(0),pkBN4(0),pkBN5(0), pkBN6(0),pkBN7(0),pkBN8(0),pkBN9(0),pkBN10(0), vlBN1(0),vlBN2(0),vlBN3(0),vlBN4(0),vlBN5(0), vlBN6(0),vlBN7(0),vlBN8(0),vlBN9(0),vlBN10(0); //========================================== Condition1 = Highest(H,length) == H and lastHi <> H; Condition2 = Lowest (L,length) == L and lastLo <> L; procBit = ""; If Condition1 and Condition2 Then Begin If lastVertex == "Valley" Then Begin If VL1 > L Then procBit = "Valley"; Else procBit = "Peak"; End Else If lastVertex == "Peak" Then Begin If PK1 < H Then procBit = "Peak" ; Else procBit = "Valley"; End; End Else If Condition1 Then procBit = "Peak"; Else If Condition2 Then procBit = "Valley"; //========================================== If procBit == "Peak" Then Begin lastHi = H; If lastVertex == "Valley" Then Begin PK9 = PK8; pkBN9 = pkBN8; PK8 = PK7; pkBN8 = pkBN7; PK7 = PK6; pkBN7 = pkBN6; PK6 = PK5; pkBN6 = pkBN5; PK5 = PK4; pkBN5 = pkBN4; PK4 = PK3; pkBN4 = pkBN3; PK3 = PK2; pkBN3 = pkBN2; PK2 = PK1; pkBN2 = pkBN1; PK1 = H; pkBN1 = index; sBar = index - vlBN1; TL1 = TL_New(Date[sBar],Time[sBar],VL1,Date,Time,PK1); TL_SetSize(TL1,2); TL_SetColor(TL1,RED); End Else If PK1 < H Then Begin PK1 = H; pkBN1 = index; TL_SetEnd(TL1,Date,Time,PK1); End ; lastVertex = "Peak"; End ; //========================================== If procBit == "Valley" Then Begin lastLo = L; If lastVertex == "Peak" then Begin VL9 = VL8; vlBN9 = vlBN8; VL8 = VL7; vlBN8 = vlBN7; VL7 = VL6; vlBN7 = vlBN6; VL6 = VL5; vlBN6 = vlBN5; VL5 = VL4; vlBN5 = vlBN4; VL4 = VL3; vlBN4 = vlBN3; VL3 = VL2; vlBN3 = vlBN2; VL2 = VL1; vlBN2 = vlBN1; VL1 = L; vlBN1 = index; sBar = index - pkBN1; TL1 = TL_New(Date[sBar],Time[sBar],PK1,Date,Time,VL1); TL_SetSize(TL1,2); TL_SetColor(TL1,BLUE); End Else If VL1 > L then Begin VL1 = L; vlBN1 = index; TL_SetEnd(TL1,Date,Time,VL1); End ; lastVertex = "Valley"; End ; 4 2번과 같이 지표에 그리는 부분이라 구현되지 않습니다. 5 Input:length(10); Var:lastHi(0),lastLo(0),lastVertex(""),procBit(""); Var:sBar(0),TL1(0); Var:PK1(0),PK2(0),PK3(0),PK4(0),PK5(0),PK6(0),PK7(0),PK8(0),PK9(0),PK10(0), VL1(0),VL2(0),VL3(0),VL4(0),VL5(0),VL6(0),VL7(0),VL8(0),VL9(0),VL10(0), pkBN1(0),pkBN2(0),pkBN3(0),pkBN4(0),pkBN5(0), pkBN6(0),pkBN7(0),pkBN8(0),pkBN9(0),pkBN10(0), vlBN1(0),vlBN2(0),vlBN3(0),vlBN4(0),vlBN5(0), vlBN6(0),vlBN7(0),vlBN8(0),vlBN9(0),vlBN10(0); //========================================== Condition1 = Highest(H,length) == H and lastHi <> H; Condition2 = Lowest (L,length) == L and lastLo <> L; procBit = ""; If Condition1 and Condition2 Then Begin If lastVertex == "Valley" Then Begin If VL1 > L Then procBit = "Valley"; Else procBit = "Peak"; End Else If lastVertex == "Peak" Then Begin If PK1 < H Then procBit = "Peak"; Else procBit = "Valley"; End; End Else If Condition1 Then procBit = "Peak"; Else If Condition2 Then procBit = "Valley"; //========================================== If procBit == "Peak" Then Begin lastHi = H; If lastVertex == "Valley" Then Begin PK9 = PK8; pkBN9 = pkBN8; PK8 = PK7; pkBN8 = pkBN7; PK7 = PK6; pkBN7 = pkBN6; PK6 = PK5; pkBN6 = pkBN5; PK5 = PK4; pkBN5 = pkBN4; PK4 = PK3; pkBN4 = pkBN3; PK3 = PK2; pkBN3 = pkBN2; PK2 = PK1; pkBN2 = pkBN1; PK1 = H; pkBN1 = index; sBar = index - vlBN1; TL1 = TL_New(Date[sBar],Time[sBar],VL1,Date,Time,PK1); TL_SetSize(TL1,2); TL_SetColor(TL1,RED); End Else If PK1 < H Then Begin PK1 = H; pkBN1 = index; TL_SetEnd(TL1,Date,Time,PK1); End ; lastVertex = "Peak"; End ; //========================================== If procBit == "Valley" Then Begin lastLo = L; If lastVertex == "Peak" then Begin VL9 = VL8; vlBN9 = vlBN8; VL8 = VL7; vlBN8 = vlBN7; VL7 = VL6; vlBN7 = vlBN6; VL6 = VL5; vlBN6 = vlBN5; VL5 = VL4; vlBN5 = vlBN4; VL4 = VL3; vlBN4 = vlBN3; VL3 = VL2; vlBN3 = vlBN2; VL2 = VL1; vlBN2 = vlBN1; VL1 = L; vlBN1 = index; sBar = index - pkBN1; TL1 = TL_New(Date[sBar],Time[sBar],PK1,Date,Time,VL1); TL_SetSize(TL1,2); TL_SetColor(TL1,BLUE); End Else If VL1 > L then Begin VL1 = L; vlBN1 = index; TL_SetEnd(TL1,Date,Time,VL1); End ; lastVertex = "Valley"; End ; 6 2번과 같이 지표에 그리는 부분이라 구현되지 않습니다. 즐거운 하루되세요 > qha71 님이 쓴 글입니다. > 제목 : 수식 변환 의뢰 드려요! > 아래 수식은 멀티챠트용 수식들 입니다! 예스용으로 변환 부탁드릴께요! 감사합니다! Input:length(10),ClsPxUseBit(0),inRange(10),waveLineSize(2),displPRC(1); Var:j(0),jj(0),jjj(0),HH(0),LL(0),lastHi(0),lastLo(0),lastVertex(""),procBit(""), TL1(0),TL2(0); Array:PK[50,4](0),VL[50,4](0), // 1:가격, 2:봉번호, 3:날짜, 4:시각 &#8203; basePK[5](0),baseVL[5](0); // 0:사용 안함, 1:가격, 2:봉번호, 3:날짜, 4:시각&#65279; // 피보나치 라인을 계산하기 위해 기준이 되는 고점과 저점의 정보 //========================================== HH = IFF(ClsPxUseBit = 1,C,H); LL = IFF(ClsPxUseBit = 1,C,L); If CurrentBar = 1 Then Begin PK[1,1] = HH; VL[1,1] = LL; End ; Condition1 = Highest(HH,length) = HH and lastHi <> HH; Condition2 = Lowest (LL,length) = LL and lastLo <> LL; procBit = ""; If Condition1 and Condition2 Then Begin If lastVertex = "Valley" Then procBit = "Peak" Else procBit = "Valley"; End Else If Condition1 Then procBit = "Peak" Else If Condition2 Then procBit = "Valley"; //========================================== If procBit = "Peak" Then Begin lastHi = HH; If lastVertex = "Valley" Then Begin For j = 50 DownTo 2 Begin For jj = 1 To 4 Begin PK[j,jj] = PK[j-1,jj]; End ; End ; PK[1,1] = HH; PK[1,2] = BarNumber; PK[1,3] = Date; PK[1,4] = Time; TL1 = TL_New(VL[1,3],VL[1,4],VL[1,1],PK[1,3],PK[1,4],PK[1,1]); TL_SetSize(TL1,waveLineSize); TL_SetColor(TL1,RED); &#8203;// 주어진 범위내에서 가장 높은 고점을 찾는다 basePK[1] = 0; For j = 1 To inRange Begin // 주어진 범위내에서 If basePK[1] < PK[j,1] Then Begin // 기준고점보다 높은 고점이 나오면 For jjj = 1 To 4 Begin basePK[jjj] = PK[j,jjj]; // 1번열부터 4번열까지의 기준고점의 내용을 갱신 End ; End ; End ; End Else If PK[1,1] < HH Then Begin PK[1,1] = HH; PK[1,2] = BarNumber; PK[1,3] = Date; PK[1,4] = Time; TL_SetEnd(TL1,PK[1,3],PK[1,4],PK[1,1]); End ; lastVertex = "Peak"; End ; //========================================== If procBit = "Valley" Then Begin lastLo = LL; If lastVertex = "Peak" then Begin For j = 50 DownTo 2 Begin For jj = 1 To 4 Begin VL[j,jj] = VL[j-1,jj]; End ; End ; VL[1,1] = LL; VL[1,2] = BarNumber; VL[1,3] = Date; VL[1,4] = Time; TL1 = TL_New(PK[1,3],PK[1,4],PK[1,1],VL[1,3],VL[1,4],VL[1,1]); TL_SetSize(TL1,waveLineSize); TL_SetColor(TL1,BLUE); &#8203;// 주어진 범위 내에서 가장 낮은 저점을 찾는다. baseVL[1] = 0; For j = 1 To inRange Begin // 주어진 범위 내에서 If baseVL[1] > VL[j,1] or baseVL[1] = 0 Then Begin // 기준저점보다 낮거나 기준저가 0이면 For jjj = 1 To 4 Begin baseVL[jjj] = VL[j,jjj]; // 기준저점의 내용을 갱신 End ; End ; End ; End Else If VL[1,1] > LL then Begin VL[1,1] = LL; VL[1,2] = BarNumber; VL[1,3] = Date; VL[1,4] = Time; TL_SetEnd(TL1,VL[1,3],VL[1,4],VL[1,1]); End ; lastVertex = "Valley"; End ; //========================================== &#8203;Array: fr[7,4](0); // 1:비율, 2:가격, 3:추세선 ID, 4:텍스트 ID // 피보나치 수열 값을 저장할 배열변수 선언 &#8203;If CurrentBar = 1 Then Begin &#8203;// 계산에 필요한 최대봉개수(Maximum Bars Back)를 설정하게 되는데 최대봉개수 이전의 봉에서는 계산 결과가 안 나오고 // 최대봉개수 이상의 봉이 생긴 이후에 계산 값이 나온다. // 그래서 Maximum Bars Back가 20으로 설정되어 있으면 21번째 봉부터 CurrentBar가 1이 된다. // 한번 설정해 놓으면 바뀔 일이 없으므로 CurrentBar가 1일 때만 아래 블럭안의 작업을 수행하도록 한다. 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; End ; If basePK[1] > 0 and baseVL[1] > 0 Then Begin // 기준고, 기준저 값이 있는 경우 If baseVL[2][1] <> baseVL[2] or basePK[2][1] <> basePK[2] Then Begin &#8203;// 기준저의 봉 번호가 바뀌었거나(기준저가 바뀜) 기준고의 봉 번호가 바뀌었다면(기준고 변동) If TL2 > 0 Then TL_Delete(TL2); &#8203;// TL2는 기준고와 기준저를 잇는 추세선이며, 0보다 크다면 이미 추세선이 있다는 의미이므로 삭제하고 새로 그린다. TL2 = TL_New(baseVL[3],baseVL[4],baseVL[1],basePK[3],basePK[4],basePK[1]); TL_SetSize(TL2,4); TL_SetColor(TL2,Magenta); // 색깔은 개인 취향에 맞게 수정 If baseVL[2] < basePK[2] Then Begin &#8203;// 기준저점의 봉번호보다 기준고점의 봉번호가 크다면 기준고점이 뒤에 나타난 것이므로 기준파동은 상승파동이 된다. for j = 1 to 7 Begin If fr[j,3] > 0 Then TL_Delete(fr[j,3]); // 3번째 열을 추세선ID로 사용하겠다고 했으니 값이 0보다 크면 기존 추세선을 삭제 fr[j,2] = basePK[1] - ((basePK[1] - baseVL[1]) * fr[j,1]); // 2번째 열은 피보나치 비율이 곱해진 가격&#8203; fr[j,3] = TL_New(baseVL[3],baseVL[4],fr[j,2],Date,Time,fr[j,2]); &#8203; // 다시 3번째 열에 추세선의 ID를 저장 If displPRC = 1 Then Begin If fr[j,4] > 0 Then Text_Delete(fr[j,4]); // 4번째열은 텍스트ID. &#8203; fr[j,4] = Text_New(baseVL[3],baseVL[4],fr[j,2],"(" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2)); Text_SetStyle(fr[j,4], 1, 2); Text_SetColor(fr[j,4],black); End ; End ; End Else If basePK[2] < baseVL[2] Then Begin for j = 1 to 7 Begin If fr[j,3] > 0 Then TL_Delete(fr[j,3]); fr[j,2] = baseVL[1] + ((basePK[1] - baseVL[1]) * fr[j,1]); fr[j,3] = TL_New(basePK[3],basePK[4],fr[j,2],Date,Time,fr[j,2]); If displPRC = 1 Then Begin If fr[j,4] > 0 Then Text_Delete(fr[j,4]); fr[j,4] = Text_New(basePK[3],basePK[4],fr[j,2],"(" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2)); Text_SetStyle(fr[j,4], 1, 2); Text_SetColor(fr[j,4],black); End ; End ; End ; End Else Begin &#8203;// 기준고와 기준저의 변동이 없다면 기준 파동선은 그대로 두고 피보나치 되돌림만 연장한다. for j = 1 to 7 Begin TL_SetEnd(fr[j,3],Date,Time,fr[j,2]); End ; End ; End ; ----------------------------------------------------------------------------------- input:Length(10); Var:sBar(0),subTL1(0); Var:subLastHi(0),subLastLo(0),subLastVertex(""),subProcBit(""); Var:subPK1(0),subPK2(0),subPK3(0),subPK4(0),subPK5(0),subPK6(0),subPK7(0),subPK8(0),subPK9(0),subPK10(0), subVL1(0),subVL2(0),subVL3(0),subVL4(0),subVL5(0),subVL6(0),subVL7(0),subVL8(0),subVL9(0),subVL10(0), subPkBN1(0),subPkBN2(0),subPkBN3(0),subPkBN4(0),subPkBN5(0), subPkBN6(0),subPkBN7(0),subPkBN8(0),subPkBN9(0),subPkBN10(0), subVlBN1(0),subVlBN2(0),subVlBN3(0),subVlBN4(0),subVlBN5(0), subVlBN6(0),subVlBN7(0),subVlBN8(0),subVlBN9(0),subVlBN10(0); Var: var0(0),var1(0),var2(0),var3(0); //========================================== value1 = RSI( C, Length ) ; {value1 = Stochastic( H, L, C, Length, 3, 3, 1, var0, var1, var2, var3 ) ;} plot1(value1); condition3 = Highest(Value1,length) = Value1 and subLastHi <> Value1; condition4 = Lowest (value1,length) = value1 and subLastLo <> value1; subProcBit = ""; If Condition3 and Condition4 Then Begin If subLastVertex = "Valley" Then Begin If subVL1 > value1 Then SubProcBit = "Valley" Else SubProcBit = "Peak"; End Else If subLastVertex = "Peak" Then Begin If subPK1 < value1 Then subProcBit = "Peak" Else subProcBit = "Valley"; End; End Else If Condition3 Then subProcBit = "Peak" Else If condition4 Then subProcBit = "Valley"; //========================================== If subProcBit = "Peak" Then Begin subLastHi = H; If subLastVertex = "Valley" Then Begin subPK9 = subPK8; subpkBN9 = subpkBN8; subPK8 = subPK7; subpkBN8 = subpkBN7; subPK7 = subPK6; subpkBN7 = subpkBN6; subPK6 = subPK5; subpkBN6 = subpkBN5; subPK5 = subPK4; subpkBN5 = subpkBN4; subPK4 = subPK3; subpkBN4 = subpkBN3; subPK3 = subPK2; subpkBN3 = subpkBN2; subPK2 = subPK1; subpkBN2 = subpkBN1; subPK1 = value1; subpkBN1 = BarNumber; sBar = BarNumber - subvlBN1; subTL1 = tl_new_self(Date[sBar],Time[sBar],subVL1,Date,Time,subPK1); TL_SetSize(subTL1,2); TL_SetColor(subTL1,RED); End Else If subPK1 < value1 Then Begin subPK1 = value1; subpkBN1 = BarNumber; TL_SetEnd(subTL1,Date,Time,subPK1); End ; sublastVertex = "Peak"; End ; //========================================== If subprocBit = "Valley" Then Begin sublastLo = value1; If sublastVertex = "Peak" then Begin subVL9 = subVL8; subvlBN9 = subvlBN8; subVL8 = subVL7; subvlBN8 = subvlBN7; subVL7 = subVL6; subvlBN7 = subvlBN6; subVL6 = subVL5; subvlBN6 = subvlBN5; subVL5 = subVL4; subvlBN5 = subvlBN4; subVL4 = subVL3; subvlBN4 = subvlBN3; subVL3 = subVL2; subvlBN3 = subvlBN2; subVL2 = subVL1; subvlBN2 = subvlBN1; subVL1 = value1; subvlBN1 = BarNumber; sBar = BarNumber - subpkBN1; subTL1 = tl_new_self(Date[sBar],Time[sBar],subPK1,Date,Time,subVL1); TL_SetSize(subTL1,2); TL_SetColor(subTL1,BLUE); End Else If subVL1 > value1 then Begin subVL1 = value1; subvlBN1 = BarNumber; TL_SetEnd(subTL1,Date,Time,subVL1); End ; sublastVertex = "Valley"; End ; ------------------------------------------------------------------------------------ Indicator Name : HiLoZZTrendLine_RSI Input:length(10); Var:lastHi(0),lastLo(0),lastVertex(""),procBit(""); Var:sBar(0),TL1(0); Var:PK1(0),PK2(0),PK3(0),PK4(0),PK5(0),PK6(0),PK7(0),PK8(0),PK9(0),PK10(0), VL1(0),VL2(0),VL3(0),VL4(0),VL5(0),VL6(0),VL7(0),VL8(0),VL9(0),VL10(0), pkBN1(0),pkBN2(0),pkBN3(0),pkBN4(0),pkBN5(0), pkBN6(0),pkBN7(0),pkBN8(0),pkBN9(0),pkBN10(0), vlBN1(0),vlBN2(0),vlBN3(0),vlBN4(0),vlBN5(0), vlBN6(0),vlBN7(0),vlBN8(0),vlBN9(0),vlBN10(0); //========================================== Condition1 = Highest(H,length) = H and lastHi <> H; Condition2 = Lowest (L,length) = L and lastLo <> L; procBit = ""; If Condition1 and Condition2 Then Begin If lastVertex = "Valley" Then Begin If VL1 > L Then procBit = "Valley" Else procBit = "Peak"; End Else If lastVertex = "Peak" Then Begin If PK1 < H Then procBit = "Peak" Else procBit = "Valley"; End; End Else If Condition1 Then procBit = "Peak" Else If Condition2 Then procBit = "Valley"; //========================================== If procBit = "Peak" Then Begin lastHi = H; If lastVertex = "Valley" Then Begin PK9 = PK8; pkBN9 = pkBN8; PK8 = PK7; pkBN8 = pkBN7; PK7 = PK6; pkBN7 = pkBN6; PK6 = PK5; pkBN6 = pkBN5; PK5 = PK4; pkBN5 = pkBN4; PK4 = PK3; pkBN4 = pkBN3; PK3 = PK2; pkBN3 = pkBN2; PK2 = PK1; pkBN2 = pkBN1; PK1 = H; pkBN1 = BarNumber; sBar = BarNumber - vlBN1; TL1 = TL_New(Date[sBar],Time[sBar],VL1,Date,Time,PK1); TL_SetSize(TL1,2); TL_SetColor(TL1,RED); End Else If PK1 < H Then Begin PK1 = H; pkBN1 = BarNumber; TL_SetEnd(TL1,Date,Time,PK1); End ; lastVertex = "Peak"; End ; //========================================== If procBit = "Valley" Then Begin lastLo = L; If lastVertex = "Peak" then Begin VL9 = VL8; vlBN9 = vlBN8; VL8 = VL7; vlBN8 = vlBN7; VL7 = VL6; vlBN7 = vlBN6; VL6 = VL5; vlBN6 = vlBN5; VL5 = VL4; vlBN5 = vlBN4; VL4 = VL3; vlBN4 = vlBN3; VL3 = VL2; vlBN3 = vlBN2; VL2 = VL1; vlBN2 = vlBN1; VL1 = L; vlBN1 = BarNumber; sBar = BarNumber - pkBN1; TL1 = TL_New(Date[sBar],Time[sBar],PK1,Date,Time,VL1); TL_SetSize(TL1,2); TL_SetColor(TL1,BLUE); End Else If VL1 > L then Begin VL1 = L; vlBN1 = BarNumber; TL_SetEnd(TL1,Date,Time,VL1); End ; lastVertex = "Valley"; End ; //========================================== Var:subTL1(0); Var:subLastHi(0),subLastLo(0),subLastVertex(""),subProcBit(""); Var:subPK1(0),subPK2(0),subPK3(0),subPK4(0),subPK5(0),subPK6(0),subPK7(0),subPK8(0),subPK9(0),subPK10(0), subVL1(0),subVL2(0),subVL3(0),subVL4(0),subVL5(0),subVL6(0),subVL7(0),subVL8(0),subVL9(0),subVL10(0), subPkBN1(0),subPkBN2(0),subPkBN3(0),subPkBN4(0),subPkBN5(0), subPkBN6(0),subPkBN7(0),subPkBN8(0),subPkBN9(0),subPkBN10(0), subVlBN1(0),subVlBN2(0),subVlBN3(0),subVlBN4(0),subVlBN5(0), subVlBN6(0),subVlBN7(0),subVlBN8(0),subVlBN9(0),subVlBN10(0); Var: var0(0),var1(0),var2(0),var3(0); //========================================== value1 = RSI( C, Length ) ; plot1(value1); condition3 = Highest(Value1,length) = Value1 and subLastHi <> Value1; condition4 = Lowest (value1,length) = value1 and subLastLo <> value1; subProcBit = ""; If Condition3 and Condition4 Then Begin If subLastVertex = "Valley" Then Begin If subVL1 > value1 Then SubProcBit = "Valley" Else SubProcBit = "Peak"; End Else If subLastVertex = "Peak" Then Begin If subPK1 < value1 Then subProcBit = "Peak" Else subProcBit = "Valley"; End; End Else If Condition3 Then subProcBit = "Peak" Else If condition4 Then subProcBit = "Valley"; //========================================== If subProcBit = "Peak" Then Begin subLastHi = H; If subLastVertex = "Valley" Then Begin subPK9 = subPK8; subpkBN9 = subpkBN8; subPK8 = subPK7; subpkBN8 = subpkBN7; subPK7 = subPK6; subpkBN7 = subpkBN6; subPK6 = subPK5; subpkBN6 = subpkBN5; subPK5 = subPK4; subpkBN5 = subpkBN4; subPK4 = subPK3; subpkBN4 = subpkBN3; subPK3 = subPK2; subpkBN3 = subpkBN2; subPK2 = subPK1; subpkBN2 = subpkBN1; subPK1 = value1; subpkBN1 = BarNumber; sBar = BarNumber - subvlBN1; subTL1 = tl_new_self(Date[sBar],Time[sBar],subVL1,Date,Time,subPK1); TL_SetSize(subTL1,2); TL_SetColor(subTL1,RED); End Else If subPK1 < value1 Then Begin subPK1 = value1; subpkBN1 = BarNumber; TL_SetEnd(subTL1,Date,Time,subPK1); End ; sublastVertex = "Peak"; End ; //========================================== If subprocBit = "Valley" Then Begin sublastLo = value1; If sublastVertex = "Peak" then Begin subVL9 = subVL8; subvlBN9 = subvlBN8; subVL8 = subVL7; subvlBN8 = subvlBN7; subVL7 = subVL6; subvlBN7 = subvlBN6; subVL6 = subVL5; subvlBN6 = subvlBN5; subVL5 = subVL4; subvlBN5 = subvlBN4; subVL4 = subVL3; subvlBN4 = subvlBN3; subVL3 = subVL2; subvlBN3 = subvlBN2; subVL2 = subVL1; subvlBN2 = subvlBN1; subVL1 = value1; subvlBN1 = BarNumber; sBar = BarNumber - subpkBN1; subTL1 = tl_new_self(Date[sBar],Time[sBar],subPK1,Date,Time,subVL1); TL_SetSize(subTL1,2); TL_SetColor(subTL1,BLUE); End Else If subVL1 > value1 then Begin subVL1 = value1; subvlBN1 = BarNumber; TL_SetEnd(subTL1,Date,Time,subVL1); End ; sublastVertex = "Valley"; End ; //========================================== var:TL2(0),subTL2(0); if VL2 > VL1 and subVL2 < subVL1 then begin TL2 = tl_new_bn(vlBN2,VL2,vlBN1,VL1); TL_SetSize(TL2,2); TL_SetColor(TL2,BLACK); subTL2 = tl_new_self_bn(subVlBN2,subVL2,subVlBN1,subVL1); TL_SetSize(subTL2,2); TL_SetColor(subTL2,BLACK); end; --------------------------------------------------------------------------------- Indicator Name : HiLoZZTrendLine_Stochastics Input:length(10); Var:lastHi(0),lastLo(0),lastVertex(""),procBit(""); Var:sBar(0),TL1(0); Var:PK1(0),PK2(0),PK3(0),PK4(0),PK5(0),PK6(0),PK7(0),PK8(0),PK9(0),PK10(0), VL1(0),VL2(0),VL3(0),VL4(0),VL5(0),VL6(0),VL7(0),VL8(0),VL9(0),VL10(0), pkBN1(0),pkBN2(0),pkBN3(0),pkBN4(0),pkBN5(0), pkBN6(0),pkBN7(0),pkBN8(0),pkBN9(0),pkBN10(0), vlBN1(0),vlBN2(0),vlBN3(0),vlBN4(0),vlBN5(0), vlBN6(0),vlBN7(0),vlBN8(0),vlBN9(0),vlBN10(0); //========================================== Condition1 = Highest(H,length) = H and lastHi <> H; Condition2 = Lowest (L,length) = L and lastLo <> L; procBit = ""; If Condition1 and Condition2 Then Begin If lastVertex = "Valley" Then Begin If VL1 > L Then procBit = "Valley" Else procBit = "Peak"; End Else If lastVertex = "Peak" Then Begin If PK1 < H Then procBit = "Peak" Else procBit = "Valley"; End; End Else If Condition1 Then procBit = "Peak" Else If Condition2 Then procBit = "Valley"; //========================================== If procBit = "Peak" Then Begin lastHi = H; If lastVertex = "Valley" Then Begin PK9 = PK8; pkBN9 = pkBN8; PK8 = PK7; pkBN8 = pkBN7; PK7 = PK6; pkBN7 = pkBN6; PK6 = PK5; pkBN6 = pkBN5; PK5 = PK4; pkBN5 = pkBN4; PK4 = PK3; pkBN4 = pkBN3; PK3 = PK2; pkBN3 = pkBN2; PK2 = PK1; pkBN2 = pkBN1; PK1 = H; pkBN1 = BarNumber; sBar = BarNumber - vlBN1; TL1 = TL_New(Date[sBar],Time[sBar],VL1,Date,Time,PK1); TL_SetSize(TL1,2); TL_SetColor(TL1,RED); End Else If PK1 < H Then Begin PK1 = H; pkBN1 = BarNumber; TL_SetEnd(TL1,Date,Time,PK1); End ; lastVertex = "Peak"; End ; //========================================== If procBit = "Valley" Then Begin lastLo = L; If lastVertex = "Peak" then Begin VL9 = VL8; vlBN9 = vlBN8; VL8 = VL7; vlBN8 = vlBN7; VL7 = VL6; vlBN7 = vlBN6; VL6 = VL5; vlBN6 = vlBN5; VL5 = VL4; vlBN5 = vlBN4; VL4 = VL3; vlBN4 = vlBN3; VL3 = VL2; vlBN3 = vlBN2; VL2 = VL1; vlBN2 = vlBN1; VL1 = L; vlBN1 = BarNumber; sBar = BarNumber - pkBN1; TL1 = TL_New(Date[sBar],Time[sBar],PK1,Date,Time,VL1); TL_SetSize(TL1,2); TL_SetColor(TL1,BLUE); End Else If VL1 > L then Begin VL1 = L; vlBN1 = BarNumber; TL_SetEnd(TL1,Date,Time,VL1); End ; lastVertex = "Valley"; End ; //========================================== Var:subTL1(0); Var:subLastHi(0),subLastLo(0),subLastVertex(""),subProcBit(""); Var:subPK1(0),subPK2(0),subPK3(0),subPK4(0),subPK5(0),subPK6(0),subPK7(0),subPK8(0),subPK9(0),subPK10(0), subVL1(0),subVL2(0),subVL3(0),subVL4(0),subVL5(0),subVL6(0),subVL7(0),subVL8(0),subVL9(0),subVL10(0), subPkBN1(0),subPkBN2(0),subPkBN3(0),subPkBN4(0),subPkBN5(0), subPkBN6(0),subPkBN7(0),subPkBN8(0),subPkBN9(0),subPkBN10(0), subVlBN1(0),subVlBN2(0),subVlBN3(0),subVlBN4(0),subVlBN5(0), subVlBN6(0),subVlBN7(0),subVlBN8(0),subVlBN9(0),subVlBN10(0); Var: var0(0),var1(0),var2(0),var3(0); //========================================== value2 = Stochastic( H, L, C, Length, 3, 3, 1, var0, var1, var2, var3 ) ; value1 = var2; plot1(value1); condition3 = Highest(Value1,length) = Value1 and subLastHi <> Value1; condition4 = Lowest (value1,length) = value1 and subLastLo <> value1; subProcBit = ""; If Condition3 and Condition4 Then Begin If subLastVertex = "Valley" Then Begin If subVL1 > value1 Then SubProcBit = "Valley" Else SubProcBit = "Peak"; End Else If subLastVertex = "Peak" Then Begin If subPK1 < value1 Then subProcBit = "Peak" Else subProcBit = "Valley"; End; End Else If Condition3 Then subProcBit = "Peak" Else If condition4 Then subProcBit = "Valley"; //========================================== If subProcBit = "Peak" Then Begin subLastHi = H; If subLastVertex = "Valley" Then Begin subPK9 = subPK8; subpkBN9 = subpkBN8; subPK8 = subPK7; subpkBN8 = subpkBN7; subPK7 = subPK6; subpkBN7 = subpkBN6; subPK6 = subPK5; subpkBN6 = subpkBN5; subPK5 = subPK4; subpkBN5 = subpkBN4; subPK4 = subPK3; subpkBN4 = subpkBN3; subPK3 = subPK2; subpkBN3 = subpkBN2; subPK2 = subPK1; subpkBN2 = subpkBN1; subPK1 = value1; subpkBN1 = BarNumber; sBar = BarNumber - subvlBN1; subTL1 = tl_new_self(Date[sBar],Time[sBar],subVL1,Date,Time,subPK1); TL_SetSize(subTL1,2); TL_SetColor(subTL1,RED); End Else If subPK1 < value1 Then Begin subPK1 = value1; subpkBN1 = BarNumber; TL_SetEnd(subTL1,Date,Time,subPK1); End ; sublastVertex = "Peak"; End ; //========================================== If subprocBit = "Valley" Then Begin sublastLo = value1; If sublastVertex = "Peak" then Begin subVL9 = subVL8; subvlBN9 = subvlBN8; subVL8 = subVL7; subvlBN8 = subvlBN7; subVL7 = subVL6; subvlBN7 = subvlBN6; subVL6 = subVL5; subvlBN6 = subvlBN5; subVL5 = subVL4; subvlBN5 = subvlBN4; subVL4 = subVL3; subvlBN4 = subvlBN3; subVL3 = subVL2; subvlBN3 = subvlBN2; subVL2 = subVL1; subvlBN2 = subvlBN1; subVL1 = value1; subvlBN1 = BarNumber; sBar = BarNumber - subpkBN1; subTL1 = tl_new_self(Date[sBar],Time[sBar],subPK1,Date,Time,subVL1); TL_SetSize(subTL1,2); TL_SetColor(subTL1,BLUE); End Else If subVL1 > value1 then Begin subVL1 = value1; subvlBN1 = BarNumber; TL_SetEnd(subTL1,Date,Time,subVL1); End ; sublastVertex = "Valley"; End ; //========================================== var:TL2(0),subTL2(0); if VL2 > VL1 and subVL2 < subVL1 then begin TL2 = tl_new_bn(vlBN2,VL2,vlBN1,VL1); TL_SetSize(TL2,2); TL_SetColor(TL2,BLACK); subTL2 = tl_new_self_bn(subVlBN2,subVL2,subVlBN1,subVL1); TL_SetSize(subTL2,2); TL_SetColor(subTL2,BLACK); end;