커뮤니티

수식 추가 문의 드립니다

프로필 이미지
yamu
2024-09-11 14:17:44
530
글번호 183379
답변완료
안녕하세요 예전에 추세선 관련해서 수식 작성해주셨는데요 TLH 와 TLL 선을 5개까지만 EXTRIGHT 하는 조건인데요 추세선을 더 추가 하는경우 수식을 단순화 하기 위해서 "배열 변수"로 처리 할 수 있을까요? 그리고 가장 최근 추세선만 SETSIZE 2로 하고 싶을땐 어떻게 작성을 하면 될까요 질문2) 그리고 마지막 문단에 크로스업 하는 조건들도 매 추세선 마다 나열을 했는데요 이 부분도 배열로 단순화 할 수 있을까요?? 감사합니다 if TL_GetValue(TLH,sDate,stime) > 0 then { value1 = TL_GetValue(TLH,sDate,stime); if CrossUp(O,Value1) Then plot11(high,"tlcross1",Yellow); 이하 반복~ 질문 3) HB 와 LB 사이의 봉갯수 간격 제한 하는 부분이 잘 적용이 안되는데 검토를 좀 해주실 수 있을까요? 가령 9개 이하만 표시하라고 했을때 9개 이상인것도 표현이 되고 있습니다. 수식 구조상에 문제가 있는건가요? #봉갯수 간격 제한 if (abs(hb-lb) <= 9) Then { TL_SetColor(tl,LightGreen); TL_SetStyle(tl,3); } 수식은 아래와 같습니다 input : n(20); var : cnt(0),hh(0),hb(0),ll(0),lb(0),TL(0),TXn(0),txper(0),TXpaa(0),nline(0),tl2(0); var : txx(0),TXper1(0); var : hd(0),ht(0),hd1(0),ht1(0),hv(0),hv1(0), LD(0), LT(0), LV (0), LD1(0), LT1(0),LV1(0); var: TLH(0),TLH1(0),TLH2(0),TLH3(0),TLH4(0),TLH5(0), TLL(0),TLL1(0),TLL2(0),TLL3(0),TLL4(0),TLL5(0); if CountIf(H >= L*1.08,n) >= 1 Then { hh = 0; hb = 0; ll = 0; lb = 0; For cnt = 0 to n-1 { if hh == 0 or (hh > 0 and h[cnt] > hh) Then { hh = h[cnt]; hb = cnt; } if ll == 0 or (ll > 0 and l[cnt] < ll) Then { ll = l[cnt]; lb = cnt; } } if (hB < lB AND ll *1.13 <HH and (hh != Var3 and ll != Var4) ) OR (hB > lB AND LL>HH*0.70 and (hh != Var3 and ll != Var4) ) Then { hd = sDate[hb]; ht = sTime[hb]; hv = hh; hd1 = hd[1]; ht1 = ht[1]; hv1 = hv[1]; if hv1 > 0 Then { TLH1 = TLH[1]; TLH2 = TLH1[1]; TLH3 = TLH2[1]; TLH4 = TLH3[1]; TLH5= TLH4[1]; TL_SetExtRight(TLH5,False); TLH = TL_new(hd1,ht1,hv1,hd,ht,hv); TL_SetExtRight(TLH,True); IF (HV > HV1*0.9 AND HV < HV1*1.09) OR (HV1 > HV*0.9 AND HV1 <HV*1.09) TheN TL_SetColoR(TLH,LightGreen); } LD = sDatE[LB]; LT = sTimE[LB]; LV = LL; LD1 = LD[1]; LT1 = LT[1]; LV1 = LV[1]; IF LV1 > 0 TheN { TLL1 = TLL[1]; TLL2 = TLL1[1]; TLL3 = TLL2[1]; TLL4 = TLL3[1]; TLL5= TLL4[1]; TL_SetExtRighT(TLL5,FalsE); TLL= TL_NEW(LD1,LT1,LV1,LD,LT,LV); TL_SetExtRighT(TLL,TRUE); TL_SetColoR(TLL,Yellow); } VAR3 = hh; VAR4 = ll; VAR1 = Index[lb]; VAR2 = VAR1[1]; if VAR2 > 0 Then { VAR5 = 0; For cnt = Index-var1 to Index-var2 { if Var5 == 0 or (Var5 > 0 and h[cnt] > Var5) Then Var5 = h[cnt]; } } if var1 >= Var2 Then { TL = TL_New(sDate[lb],sTime[lb],ll,sDate[hb],sTime[hb],hh); TL_SetDrawMode(tl,1); TL_SetColoR(TL,Cyan); TXper= text_new(sDate[lb],sTime[lb],ll,"★"); Text_SetStyle(txper,2,0); Text_SetSizE(TXPER,18); Text_SetColor(txper,MagentA); TXpaa= text_new(sDate[HB],sTime[HB],HH,"★"); Text_SetStyle(TXPAA,2,0); Text_SetSizE(TXPAA,15); Text_SetColor(tXPAA,LightGreen); } } } #우상향, 우하향 색상 구분 if lb > hb Then { TL_SetColor(TL,LIGHTReD); TL_SetStyle(tl,2); TL_SetDrawMode(tl,1); } Else { TL_SetColor(TL,LightBlue); TL_SetStyle(tl,2); } #봉갯수 간격 제한 if (abs(hb-lb) <= 9) Then { TL_SetColor(tl,LightGreen); TL_SetStyle(tl,3); } If VAR5 > 0 Then { PLOT35(VAR5,"INTER TL HH",Tomato); IF CrossUP(C,Var5) Then PLOT34(C,"CROSS구간고가",CyaN); } if TL_GetValue(TLH,sDate,stime) > 0 then { value1 = TL_GetValue(TLH,sDate,stime); if CrossUp(O,Value1) Then plot11(high,"tlcross1",Yellow); } if TL_GetValue(TLH1,sDate,stime) > 0 then { value2 = TL_GetValue(TLH,sDate,stime); if CrossUp(O,Value2) Then plot22(high,"tlcross2",Red); } if TL_GetValue(TLH2,sDate,stime) > 0 then { value3 = TL_GetValue(TLH,sDate,stime); if CrossUp(O,Value3) Then plot33(high,"tlcross3",LightGreen); } if TL_GetValue(TLH3,sDate,stime) > 0 then { value4 = TL_GetValue(TLH,sDate,stime); if CrossUp(O,Value4) Then plot44(high,"tlcross4",Cyan); }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-09-12 13:33:07

안녕하세요 예스스탁입니다. 봉갯수 간격제한은 abs(hb-lb) <= 9 조건에 따라 지정색으로 표시되고 있는 것 같습니다.어느 부분이 문제인지 모르겠습니다. input : n(20); var : cnt(0),hh(0),hb(0),ll(0),lb(0),TL(0),TXn(0),txper(0),TXpaa(0),nline(0),tl2(0); var : txx(0),TXper1(0); var : hd(0),ht(0),hd1(0),ht1(0),hv(0),hv1(0), LD(0), LT(0), LV (0), LD1(0), LT1(0),LV1(0); Array : TLH[20](0),TLL[20](0); if CountIf(H >= L*1.08,n) >= 1 Then { hh = 0; hb = 0; ll = 0; lb = 0; For cnt = 0 to n-1 { if hh == 0 or (hh > 0 and h[cnt] > hh) Then { hh = h[cnt]; hb = cnt; } if ll == 0 or (ll > 0 and l[cnt] < ll) Then { ll = l[cnt]; lb = cnt; } } if (hB < lB AND ll *1.13 <HH and (hh != Var3 and ll != Var4) ) OR (hB > lB AND LL>HH*0.70 and (hh != Var3 and ll != Var4) ) Then { hd = sDate[hb]; ht = sTime[hb]; hv = hh; hd1 = hd[1]; ht1 = ht[1]; hv1 = hv[1]; if hv1 > 0 Then { For cnt = 19 DownTo 1 { TLH[cnt] = TLH[cnt-1]; } TL_SetExtRight(TLH[5],False); TL_SetSize(TLH[0],0); TLH[0] = TL_new(hd1,ht1,hv1,hd,ht,hv); TL_SetExtRight(TLH[0],True); TL_SetSize(TLH[0],2); IF (HV > HV1*0.9 AND HV < HV1*1.09) OR (HV1 > HV*0.9 AND HV1 <HV*1.09) TheN TL_SetColoR(TLH[0],LightGreen); } LD = sDatE[LB]; LT = sTimE[LB]; LV = LL; LD1 = LD[1]; LT1 = LT[1]; LV1 = LV[1]; IF LV1 > 0 TheN { For cnt = 19 DownTo 1 { TLL[cnt] = TLL[cnt-1]; } TL_SetExtRighT(TLL[5],FalsE); TL_SetSize(TLL[0],0); TLL[0] = TL_NEW(LD1,LT1,LV1,LD,LT,LV); TL_SetExtRighT(TLL[0],TRUE); TL_SetColoR(TLL[0],Yellow); TL_SetSize(TLL[0],2); } VAR3 = hh; VAR4 = ll; VAR1 = Index[lb]; VAR2 = VAR1[1]; if VAR2 > 0 Then { VAR5 = 0; For cnt = Index-var1 to Index-var2 { if Var5 == 0 or (Var5 > 0 and h[cnt] > Var5) Then Var5 = h[cnt]; } } if var1 >= Var2 Then { TL = TL_New(sDate[lb],sTime[lb],ll,sDate[hb],sTime[hb],hh); TL_SetDrawMode(tl,1); TL_SetColoR(TL,Cyan); TXper= text_new(sDate[lb],sTime[lb],ll,"★"); Text_SetStyle(txper,2,0); Text_SetSizE(TXPER,18); Text_SetColor(txper,MagentA); TXpaa= text_new(sDate[HB],sTime[HB],HH,"★"); Text_SetStyle(TXPAA,2,0); Text_SetSizE(TXPAA,15); Text_SetColor(tXPAA,LightGreen); } } } #우상향, 우하향 색상 구분 if lb > hb Then { TL_SetColor(TL,LIGHTReD); TL_SetStyle(tl,2); TL_SetDrawMode(tl,1); } Else { TL_SetColor(TL,LightBlue); TL_SetStyle(tl,2); } #봉갯수 간격 제한 if (abs(hb-lb) <= 9) Then { TL_SetColor(tl,LightGreen); TL_SetStyle(tl,3); } If VAR5 > 0 Then { PLOT35(VAR5,"INTER TL HH",Tomato); IF CrossUP(C,Var5) Then PLOT34(C,"CROSS구간고가",CyaN); } Condition1 = False; For cnt = 0 to 3 { if TL_GetValue(TLH[cnt],sDate,stime) > 0 then { value1 = TL_GetValue(TLH[cnt],sDate,stime); value2 = TL_GetValue(TLH[cnt],sDate[1],stime[1]); if O > value1 and O[1] <= Value2 Then Condition1 = true; } } if Condition1 == true then plot11(high,"tlcross",Yellow); 풍성한 한가위 되시길 바랍니다. > yamu 님이 쓴 글입니다. > 제목 : 수식 추가 문의 드립니다 > 안녕하세요 예전에 추세선 관련해서 수식 작성해주셨는데요 TLH 와 TLL 선을 5개까지만 EXTRIGHT 하는 조건인데요 추세선을 더 추가 하는경우 수식을 단순화 하기 위해서 "배열 변수"로 처리 할 수 있을까요? 그리고 가장 최근 추세선만 SETSIZE 2로 하고 싶을땐 어떻게 작성을 하면 될까요 질문2) 그리고 마지막 문단에 크로스업 하는 조건들도 매 추세선 마다 나열을 했는데요 이 부분도 배열로 단순화 할 수 있을까요?? 감사합니다 if TL_GetValue(TLH,sDate,stime) > 0 then { value1 = TL_GetValue(TLH,sDate,stime); if CrossUp(O,Value1) Then plot11(high,"tlcross1",Yellow); 이하 반복~ 질문 3) HB 와 LB 사이의 봉갯수 간격 제한 하는 부분이 잘 적용이 안되는데 검토를 좀 해주실 수 있을까요? 가령 9개 이하만 표시하라고 했을때 9개 이상인것도 표현이 되고 있습니다. 수식 구조상에 문제가 있는건가요? #봉갯수 간격 제한 if (abs(hb-lb) <= 9) Then { TL_SetColor(tl,LightGreen); TL_SetStyle(tl,3); } 수식은 아래와 같습니다 input : n(20); var : cnt(0),hh(0),hb(0),ll(0),lb(0),TL(0),TXn(0),txper(0),TXpaa(0),nline(0),tl2(0); var : txx(0),TXper1(0); var : hd(0),ht(0),hd1(0),ht1(0),hv(0),hv1(0), LD(0), LT(0), LV (0), LD1(0), LT1(0),LV1(0); var: TLH(0),TLH1(0),TLH2(0),TLH3(0),TLH4(0),TLH5(0), TLL(0),TLL1(0),TLL2(0),TLL3(0),TLL4(0),TLL5(0); if CountIf(H >= L*1.08,n) >= 1 Then { hh = 0; hb = 0; ll = 0; lb = 0; For cnt = 0 to n-1 { if hh == 0 or (hh > 0 and h[cnt] > hh) Then { hh = h[cnt]; hb = cnt; } if ll == 0 or (ll > 0 and l[cnt] < ll) Then { ll = l[cnt]; lb = cnt; } } if (hB < lB AND ll *1.13 <HH and (hh != Var3 and ll != Var4) ) OR (hB > lB AND LL>HH*0.70 and (hh != Var3 and ll != Var4) ) Then { hd = sDate[hb]; ht = sTime[hb]; hv = hh; hd1 = hd[1]; ht1 = ht[1]; hv1 = hv[1]; if hv1 > 0 Then { TLH1 = TLH[1]; TLH2 = TLH1[1]; TLH3 = TLH2[1]; TLH4 = TLH3[1]; TLH5= TLH4[1]; TL_SetExtRight(TLH5,False); TLH = TL_new(hd1,ht1,hv1,hd,ht,hv); TL_SetExtRight(TLH,True); IF (HV > HV1*0.9 AND HV < HV1*1.09) OR (HV1 > HV*0.9 AND HV1 <HV*1.09) TheN TL_SetColoR(TLH,LightGreen); } LD = sDatE[LB]; LT = sTimE[LB]; LV = LL; LD1 = LD[1]; LT1 = LT[1]; LV1 = LV[1]; IF LV1 > 0 TheN { TLL1 = TLL[1]; TLL2 = TLL1[1]; TLL3 = TLL2[1]; TLL4 = TLL3[1]; TLL5= TLL4[1]; TL_SetExtRighT(TLL5,FalsE); TLL= TL_NEW(LD1,LT1,LV1,LD,LT,LV); TL_SetExtRighT(TLL,TRUE); TL_SetColoR(TLL,Yellow); } VAR3 = hh; VAR4 = ll; VAR1 = Index[lb]; VAR2 = VAR1[1]; if VAR2 > 0 Then { VAR5 = 0; For cnt = Index-var1 to Index-var2 { if Var5 == 0 or (Var5 > 0 and h[cnt] > Var5) Then Var5 = h[cnt]; } } if var1 >= Var2 Then { TL = TL_New(sDate[lb],sTime[lb],ll,sDate[hb],sTime[hb],hh); TL_SetDrawMode(tl,1); TL_SetColoR(TL,Cyan); TXper= text_new(sDate[lb],sTime[lb],ll,"★"); Text_SetStyle(txper,2,0); Text_SetSizE(TXPER,18); Text_SetColor(txper,MagentA); TXpaa= text_new(sDate[HB],sTime[HB],HH,"★"); Text_SetStyle(TXPAA,2,0); Text_SetSizE(TXPAA,15); Text_SetColor(tXPAA,LightGreen); } } } #우상향, 우하향 색상 구분 if lb > hb Then { TL_SetColor(TL,LIGHTReD); TL_SetStyle(tl,2); TL_SetDrawMode(tl,1); } Else { TL_SetColor(TL,LightBlue); TL_SetStyle(tl,2); } #봉갯수 간격 제한 if (abs(hb-lb) <= 9) Then { TL_SetColor(tl,LightGreen); TL_SetStyle(tl,3); } If VAR5 > 0 Then { PLOT35(VAR5,"INTER TL HH",Tomato); IF CrossUP(C,Var5) Then PLOT34(C,"CROSS구간고가",CyaN); } if TL_GetValue(TLH,sDate,stime) > 0 then { value1 = TL_GetValue(TLH,sDate,stime); if CrossUp(O,Value1) Then plot11(high,"tlcross1",Yellow); } if TL_GetValue(TLH1,sDate,stime) > 0 then { value2 = TL_GetValue(TLH,sDate,stime); if CrossUp(O,Value2) Then plot22(high,"tlcross2",Red); } if TL_GetValue(TLH2,sDate,stime) > 0 then { value3 = TL_GetValue(TLH,sDate,stime); if CrossUp(O,Value3) Then plot33(high,"tlcross3",LightGreen); } if TL_GetValue(TLH3,sDate,stime) > 0 then { value4 = TL_GetValue(TLH,sDate,stime); if CrossUp(O,Value4) Then plot44(high,"tlcross4",Cyan); }