커뮤니티

추가 문의드립니다

프로필 이미지
yamu
2024-09-03 15:36:30
703
글번호 183132
답변완료
먼저 지난 문의 답변을 해주셔서 감사드립니다 알려주신 수식을 검색으로 적용을 해보고 싶은데요 FIND(1) 을 IF 문마다 여러번 작성하면 AND 관계로 검색이 되는건지 궁금합니다, if TL_GetValue(TLH,sDate,stime) > 0 then { value1 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value1) Then CONDITION1= TRUE; } 하나로 묶어서 하려고 이런식으로 논리형 변수로 TRUE 를 주고 마지막에 IF CONDITION1=TRUE AND CONDITION2=TRUE ... AND CONDITION4=TRUE THEN FIND (1) ; 으로 하니까 에러가 나오네요 그리고 검색식에 적용을 하면 당일에 해당되는것만 나오게 되는건가요??? 검색할때 봉은 500개로 적용했습니다. 예를들어 이평선 CROSSUP 한 조건을 검색하면 오늘 현재만 나오게 되고 COUNTIF 조건으로 5회 이상 이라고 하면 차트 전체를 대상으로 찾게 되나요?? 일단 아래처럼 해봤습니다 조금 더 나은 방법이 있는지 궁금합니다 if TL_GetValue(TLH,sDate,stime) > 0 then { value1 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value1) Then Find(1); } if TL_GetValue(TLH1,sDate,stime) > 0 then { value2 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value2) Then Find(1); } if TL_GetValue(TLH2,sDate,stime) > 0 then { value3 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value3) Then Find(1); } if TL_GetValue(TLH3,sDate,stime) > 0 then { value4 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value4) Then Find(1); } 아래는 수식 전체입니다 input : n(10); 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), TLL(0); var: TLH(0),TLH1(0),TLH2(0),TLH3(0),TLH4(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.4 >H 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]; //이전 출력된 추세선 중 이전 4번째는 연장선 해제 TL_SetExtRight(TLH4,False); TLH = TL_new(hd1,ht1,hv1,hd,ht,hv); //추세선 연장선 적용 TL_SetExtRight(TLH,True); TL_SetStylE(TLH,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,LightGreen); } LD = sDatE[LB]; LT = sTimE[LB]; LV = LL; LD1 = LD[1]; LT1 = LT[1]; LV1 = LV[1]; IF LV1 > 0 TheN { TL_SetExtRighT(TLL,FalsE); TLL= TL_NEW(LD1,LT1,LV1,LD,LT,LV); TL_SetExtRighT(TLL,TRUE); TL_SetStylE(TLL,3); # TL_SetColoR(TLL,LightReD); } VAR3 = hh; VAR4 = ll; VAR1 = Index[lb]; VAR2 = VAR1[1]; #PLOT22(HH,"고가HH라인",YelloW); 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 { 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 VAR5 > 0 Then { #plot35(VAR5,"INTER TL HH",Tomato); # IF CrossUP(C,Var5) Then PLOT34(C,"CROSS구간고가",CyaN); } #PLOT11(VAR1,"IndeX",LightGreeN); #PLOT12(IndeX,"IndeXHB",OrangE); if TL_GetValue(TLH,sDate,stime) > 0 then { value1 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value1) Then FinD(1); } if TL_GetValue(TLH1,sDate,stime) > 0 then { value2 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value2) Then FinD(1); } if TL_GetValue(TLH2,sDate,stime) > 0 then { value3 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value3) Then Find(1); } if TL_GetValue(TLH3,sDate,stime) > 0 then { value4 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value4) Then Find(1); }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-09-03 16:00:44

안녕하세요 예스스탁입니다. 1 현재봉에서 각 라인을 동시돌파하는 내용이면 아래와 같이 작성하시면 됩니다. if TL_GetValue(TLH,sDate,stime) > 0 and TL_GetValue(TLH1,sDate,stime) > 0 and TL_GetValue(TLH2,sDate,stime) > 0 and TL_GetValue(TLH3,sDate,stime) > 0 Then { value1 = TL_GetValue(TLH,sDate,stime); value2 = TL_GetValue(TLH,sDate,stime); value3 = TL_GetValue(TLH,sDate,stime); value4 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value1) Then Condition1 = true; Else Condition1 = False; if CrossUp(c,Value2) Then Condition2 = true; Else Condition2 = False; if CrossUp(c,Value3) Then Condition3 = true; Else Condition3 = False; if CrossUp(c,Value4) Then Condition4 = true; Else Condition4 = False; if Condition1 == true and Condition2 == true and Condition3 ==true and Condition4 == true Then Find(1); } 2 COUNTIF은 봉수를 지정해 최근 n개봉 동안 만족한 횟수를 리턴합니다. 예를들어 동시돌파가 최근 5개봉 이내에 1회이상 발생한것을 찾으시면 countif함수로 아래와 같이 처리하시면 됩니다. if CountIf(Condition1 == true and Condition2 == true and Condition3 ==true and Condition4 == true,5) >= 1 Then Find(1); 3 동시돌파가 아닌 각라인을 상향돌파해서 최종적으로 모든 라인보다 커진 상태를 찾으시면 아래와 같습니다. if TL_GetValue(TLH,sDate,stime) > 0 and TL_GetValue(TLH1,sDate,stime) > 0 and TL_GetValue(TLH2,sDate,stime) > 0 and TL_GetValue(TLH3,sDate,stime) > 0 Then { value1 = TL_GetValue(TLH,sDate,stime); value2 = TL_GetValue(TLH,sDate,stime); value3 = TL_GetValue(TLH,sDate,stime); value4 = TL_GetValue(TLH,sDate,stime); Condition1 = C > max(value1,Value2,Value3,Value4); if Condition1 == true and Condition1[1] == False Then Find(1); } 즐거운 하루되세요 > yamu 님이 쓴 글입니다. > 제목 : 추가 문의드립니다 > 먼저 지난 문의 답변을 해주셔서 감사드립니다 알려주신 수식을 검색으로 적용을 해보고 싶은데요 FIND(1) 을 IF 문마다 여러번 작성하면 AND 관계로 검색이 되는건지 궁금합니다, if TL_GetValue(TLH,sDate,stime) > 0 then { value1 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value1) Then CONDITION1= TRUE; } 하나로 묶어서 하려고 이런식으로 논리형 변수로 TRUE 를 주고 마지막에 IF CONDITION1=TRUE AND CONDITION2=TRUE ... AND CONDITION4=TRUE THEN FIND (1) ; 으로 하니까 에러가 나오네요 그리고 검색식에 적용을 하면 당일에 해당되는것만 나오게 되는건가요??? 검색할때 봉은 500개로 적용했습니다. 예를들어 이평선 CROSSUP 한 조건을 검색하면 오늘 현재만 나오게 되고 COUNTIF 조건으로 5회 이상 이라고 하면 차트 전체를 대상으로 찾게 되나요?? 일단 아래처럼 해봤습니다 조금 더 나은 방법이 있는지 궁금합니다 if TL_GetValue(TLH,sDate,stime) > 0 then { value1 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value1) Then Find(1); } if TL_GetValue(TLH1,sDate,stime) > 0 then { value2 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value2) Then Find(1); } if TL_GetValue(TLH2,sDate,stime) > 0 then { value3 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value3) Then Find(1); } if TL_GetValue(TLH3,sDate,stime) > 0 then { value4 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value4) Then Find(1); } 아래는 수식 전체입니다 input : n(10); 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), TLL(0); var: TLH(0),TLH1(0),TLH2(0),TLH3(0),TLH4(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.4 >H 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]; //이전 출력된 추세선 중 이전 4번째는 연장선 해제 TL_SetExtRight(TLH4,False); TLH = TL_new(hd1,ht1,hv1,hd,ht,hv); //추세선 연장선 적용 TL_SetExtRight(TLH,True); TL_SetStylE(TLH,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,LightGreen); } LD = sDatE[LB]; LT = sTimE[LB]; LV = LL; LD1 = LD[1]; LT1 = LT[1]; LV1 = LV[1]; IF LV1 > 0 TheN { TL_SetExtRighT(TLL,FalsE); TLL= TL_NEW(LD1,LT1,LV1,LD,LT,LV); TL_SetExtRighT(TLL,TRUE); TL_SetStylE(TLL,3); # TL_SetColoR(TLL,LightReD); } VAR3 = hh; VAR4 = ll; VAR1 = Index[lb]; VAR2 = VAR1[1]; #PLOT22(HH,"고가HH라인",YelloW); 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 { 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 VAR5 > 0 Then { #plot35(VAR5,"INTER TL HH",Tomato); # IF CrossUP(C,Var5) Then PLOT34(C,"CROSS구간고가",CyaN); } #PLOT11(VAR1,"IndeX",LightGreeN); #PLOT12(IndeX,"IndeXHB",OrangE); if TL_GetValue(TLH,sDate,stime) > 0 then { value1 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value1) Then FinD(1); } if TL_GetValue(TLH1,sDate,stime) > 0 then { value2 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value2) Then FinD(1); } if TL_GetValue(TLH2,sDate,stime) > 0 then { value3 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value3) Then Find(1); } if TL_GetValue(TLH3,sDate,stime) > 0 then { value4 = TL_GetValue(TLH,sDate,stime); if CrossUp(c,Value4) Then Find(1); }