커뮤니티
16216 재질문입니다.
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번 의 내용을 자세히 설명해 주세요
다음글
이전글