커뮤니티

16216 재질문입니다.

프로필 이미지
nadogaja
2010-11-18 17:38:05
844
글번호 33730
답변완료
If 지지논리==true Then { -------------- -1번식 For G=1 to 50{ if 지위치 +g then{ if AccumN(iff(data1(c)<음봉값*0.98,1,0),g) ==0 Then{ 휩소=true; } } } for g1= 1 to 50{ if 지위치 +g1 then{ if AccumN(iff(data1(c)<음봉값*0.98,1,0),g1) > 0 Then{ 휩소=false; } } } } if 휩소==True Then{ --------------- 2번식 if CrossUp(data1(c),지지값) then{ plotPaintBar(o, c, "지지1",GREEN); }} 16216 번 수식중 위 구문은 장대음봉 발생후 1봉씩 지날때 마다 음봉 -2% 이하로 내려가는 봉이 있는지 파악하는 구문입니다. 여기서 for g=1 to 50 은 50봉 까지 만 비교 하라는 의미로 적은것입니다. 질문입니다. 1번, 위 for 구문이 잘못되었다면 무엇이 잘못되었는지 설명과 수정부탁드립니다. 2번,그리고 for 구문이 제대로 돌아 간다고 치면 무조건 50봉이 다 채워져야 하는것인지 아니면 중간에 2번식이 성립하면 crossup 표시가 되는지 알려주세요. 2.또한 수식 중 if 지위치 +g then if 지위치 +g1 then 같은 경우에는 조건식이 아닙니다. 위식은 if 45 then과 같이 의미없는 숫자가 조건문안에 들어있는 것과 같습니다. ---- 왜 조건식이 안되는지 3. 함수의 기간값은 for문에서 자동으로 증감시키면 에러가 나게 됩니다. ---- 왜 에러가 나는지 그리고 예스스탁 님이 적어 주신 위 2.3번 의 내용을 자세히 설명해 주세요
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2010-11-19 14:59:30

안녕하세요 예스스탁입니다. 2,3번으로 인해 for문에 문제가 발생하므로 2번3번 답변만 드립니다. 2번 For G=1 to 50{ if 지위치 +g then{ #1 if AccumN(iff(data1(c)<음봉값*0.98,1,0),g) ==0 Then{#2 휩소=true; } } for문에 각 2개의 if문이 존재합니다. #1 if문은 자체로서 어떤 구속력도 없는 조건식입니다. 가령 당일 10번째 봉에서라는 식을 작성하면 if (dayindex+1) == 10 then 과 같이 조건식을 만들게 됩니다. 하지만 작성하신 식 내용이라면 if 10 then과 같이 작성하신 것과 같습니다.즉 10을 비교할 값이 없습니다. 지위치라는 값에 만약 20이라는 값이 저장이 되어 있다면 지위치+g는 g의 증감에 따라 if 21 then if 22 then if 23 then ..if 70 then 이되므로 true값만 가지는 조건식일 뿐입니다. if dayindex == 지위치+g then{ 과 같이 작성하셔야 현재 인덱스값이 지위치+g와 같다라는 조건식이 만들어지게 됩니다. 3번. 함수의 기간값을 for문으로 증감시키면 에러가 발생하는 이유는 함수는 최초에 사용자분이 지정한 기간에 따라 메모리사이즈가 잡히게 됩니다. 이때 이 용량보다 큰 값이 들어오면 메모리가 깨지게 될 가능성이 많으므로 가변적인 기간값을 주는 내용은 가급적 풀어서 작성하시기를 권장해 드립니다. 4번 작성하신 내용은 for문을 이용하실 필요는 없는 내용같습니다. input:열시(1.5),전부(2); var:폭락(0),지지논리(false),음봉값(0),지지값(0), 지위치(0),지지1(0); var:g(0),gg(0),g1(0); #카운터 var:휩소(False),거래량(0); array:지지[10](0); var:위치(0),j(0); if dayindex == 0 Then 지지논리 = false; if dayindex>7 and time<=100000 then{ if data2(c) < data2(o) and data2(v)>ma(data2(v),5)[1]*열시 and data2(v) > Highest(data2(v),7)[1] then{ 지지논리=true; 음봉값=data2(c); 거래량=data2(v); 지지값=data2((h+c)/2); 지위치=DayIndex; PlotPaintBar(o,c,"지지1",white); } } Else if stime>=100000 and time<=150000 then{ if data2(c) < data2(o) and data2(v)>ma(data2(v),5)[1]*전부 and data2(v) > Highest(data2(v),5)[1] then{ 지지논리=true; 음봉값=data2(c); 거래량=data2(v); 지지값=data2((h+c)/2); 지위치=DayIndex; PlotPaintBar(o,c,"지지1",white); } } If 지지논리==true and dayindex <= 지위치+50 Then { if CrossUp(c,지지값) and countif(c<음봉값*0.98,dayindex-지위치) == 0 then{ plotPaintBar(o, c, "지지1",GREEN); } } 지지논리가 true이고 현재봉의 번호가 지위치보다 50봉 이상 크지 않고 종가가 지지값을 상향돌파하고 현재까지 음봉값의 2%아래로 내려간 봉이 없을경우 초록색으로 봉에 색을 칠하는 식입니다. 즐거운 하루되세요 > nadogaja 님이 쓴 글입니다. > 제목 : 16216 재질문입니다. > If 지지논리==true Then { -------------- -1번식 For G=1 to 50{ if 지위치 +g then{ if AccumN(iff(data1(c)<음봉값*0.98,1,0),g) ==0 Then{ 휩소=true; } } } for g1= 1 to 50{ if 지위치 +g1 then{ if AccumN(iff(data1(c)<음봉값*0.98,1,0),g1) > 0 Then{ 휩소=false; } } } } if 휩소==True Then{ --------------- 2번식 if CrossUp(data1(c),지지값) then{ plotPaintBar(o, c, "지지1",GREEN); }} 16216 번 수식중 위 구문은 장대음봉 발생후 1봉씩 지날때 마다 음봉 -2% 이하로 내려가는 봉이 있는지 파악하는 구문입니다. 여기서 for g=1 to 50 은 50봉 까지 만 비교 하라는 의미로 적은것입니다. 질문입니다. 1번, 위 for 구문이 잘못되었다면 무엇이 잘못되었는지 설명과 수정부탁드립니다. 2번,그리고 for 구문이 제대로 돌아 간다고 치면 무조건 50봉이 다 채워져야 하는것인지 아니면 중간에 2번식이 성립하면 crossup 표시가 되는지 알려주세요. 2.또한 수식 중 if 지위치 +g then if 지위치 +g1 then 같은 경우에는 조건식이 아닙니다. 위식은 if 45 then과 같이 의미없는 숫자가 조건문안에 들어있는 것과 같습니다. ---- 왜 조건식이 안되는지 3. 함수의 기간값은 for문에서 자동으로 증감시키면 에러가 나게 됩니다. ---- 왜 에러가 나는지 그리고 예스스탁 님이 적어 주신 위 2.3번 의 내용을 자세히 설명해 주세요