커뮤니티

질문 드립니다.!

프로필 이미지
sdfadfe
2009-11-09 19:57:12
615
글번호 26040
답변완료
var : intro(0); for intro = 1 to 5{ if (L[intro] or C[intro]) == Lowest(C,10)[intro] Then{ Var2 =Index; condition1 == True; } } if ( var1 == C[currentbar-var2]) Then plotPaintbar(High,low,open,close,"웅",Yellow); Else NoPlot(1); 라고 하면 안됬던게.. var : intro(0); for intro = 0 to 10 { if L[intro] == Lowest(C,10)[intro] or C[intro]== Lowest(C,10)[intro] Then { var1=c; Var2 =Index; condition1 == True; } } if ( var1 == C) Then plotPaintbar(High,low,open,close,"웅",Yellow); Else NoPlot(1); 와 같이하면 잘 되네요... 도대체... if (L[intro] or C[intro]) == Lowest(C,10)[intro] 이문장과 if L[intro] == Lowest(C,10)[intro] or C[intro]== Lowest(C,10)[intro] 이문장의 차이는 무엇인가요?? 둘다 똑같은거아닌가요?? 에휴..ㅠㅠ 너무어렵네요.. 이와같이 유의해야할점과.. 저런실수를 안할려면 어떻게해야할지 알려주세요..
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2009-11-10 10:13:05

안녕하세요 예스스탁입니다. or는 조건과 조건의 결합여부를 결정합니다. 즉 조건 or 조건입니다. (L[1] or C[1]) == Lowest(C,10)[1] 작성하신 내용은 수치 or 조건으로 앞에 아무조건이 없으므로 무조건 만족하게 됩니다. and와 or는 조건식을 결합하실때만 사용하셔야 합니다. 아래는 카페에 드린 답변입니다. for intro = 0 to 10{ if (L[intro] or c[intro]) == Lowest(C,pe)[intro] then{ var1 = intro; var2 = C; var3 = index; Condition1 == true; } } 위와 같이 작성하시면 var1에 intro값을 저장하실 수 있습니다. 다만 var1는 11번의 루프중 최종 만족했을때의 intro값만이 저장됩니다. 즉 11개 봉 중 2번을 만족했다면 현재를 기준으로 더 먼봉의 값이 저장됩니다. 역으로 downto를 사용하시면 저장된 값이 가까운 봉의 값이 저장됩니다. for intro = 10 downto 0{ if (L[intro] or c[intro]) == Lowest(C,pe)[intro] then{ var1 = intro; var2 = C; var3 = index; Condition1 == true; } } 작성하신 식은 최근 11개봉 중에 종가나 저가가 최근 10개봉의 최저가와 같으면 현재봉에 색을 칠하라는 식이므로 현재봉이 만족하지 않더라도 전봉이나 전전봉등이 만족하면 현재봉에 색을 칠하게 됩니다. 또한 var1에 저장한 값도 if문이 만족하면 현재봉종가를 저장하라는 식이고 if var1 == C 이므로 조건이 만족하게 됩니다. 의도하신 부분이 현재봉의 저가나 종가가 최근10개봉중 최저가와 같으면 봉에 색을 칠하시려고 하시는 의도시라면 for문은 필요가 없으므로 아래와 같이 작성하시면 됩니다. if L == Lowest(C,10) or c == Lowest(C,10) Then PlotPaintBar(H,L,O,C,"웅",YELLOW); Else NoPlot(1); 같은 봉이 현재봉으로만 재한하시려면 위식에 countif함수를 이용해서 최근 10개봉 중 조건에 만족한 횟수가 1번이다라는 내용을 추가해 주시면 됩니다. if (L == Lowest(C,10) or c == Lowest(C,10)) and countif((L == Lowest(C,10) or c == Lowest(C,10)),10) == 1 Then PlotPaintBar(H,L,O,C,"웅",YELLOW); Else NoPlot(1); for문으로 작성하면 아래와 같습니다. var : intro(0); var2 = 0; for intro = 10 downto 0{ if (L[intro] == Lowest(C,10)[intro]) or (c[intro] == Lowest(C,10)[intro]) then{ var1 = intro; var2 = var2+1; } } if VAR1 == 0 and var2 == 1 Then PlotPaintBar(H,L,O,C,"웅",YELLOW); Else NoPlot(1); 즐거운 하루되세요 > sdfadfe 님이 쓴 글입니다. > 제목 : 질문 드립니다.! > var : intro(0); for intro = 1 to 5{ if (L[intro] or C[intro]) == Lowest(C,10)[intro] Then{ Var2 =Index; condition1 == True; } } if ( var1 == C[currentbar-var2]) Then plotPaintbar(High,low,open,close,"웅",Yellow); Else NoPlot(1); 라고 하면 안됬던게.. var : intro(0); for intro = 0 to 10 { if L[intro] == Lowest(C,10)[intro] or C[intro]== Lowest(C,10)[intro] Then { var1=c; Var2 =Index; condition1 == True; } } if ( var1 == C) Then plotPaintbar(High,low,open,close,"웅",Yellow); Else NoPlot(1); 와 같이하면 잘 되네요... 도대체... if (L[intro] or C[intro]) == Lowest(C,10)[intro] 이문장과 if L[intro] == Lowest(C,10)[intro] or C[intro]== Lowest(C,10)[intro] 이문장의 차이는 무엇인가요?? 둘다 똑같은거아닌가요?? 에휴..ㅠㅠ 너무어렵네요.. 이와같이 유의해야할점과.. 저런실수를 안할려면 어떻게해야할지 알려주세요..