커뮤니티
data2,3,4 등을 이용한 수식인데 수식점검부탁드립니다
2015-03-18 14:11:47
145
글번호 84174
적정한 등가격 ATM을 찾기 위해서
아래와 같은경우에 신호가 발생하도록 수식을 작성하였는데
시뮬레이션 차트를 적용해본결과 신호가 발생하지 않습니다.
if문을 써서 변수에 숫자를 입력하는 기능은 안되는 것인지
then 뒤에 바로 주문조건을 걸면 되는데
앞단의 if문에서 변수에 숫자를 대입하고
그걸 토대로 이후에 if문을 써서 진입을 지정하면 주문이 안되는데요
다음수식에서 신호가 발생하지 않는 이유를 알려주시면 감사하겠습니다.
수고하세요
================================================================================
input : 상한(0.15), 하한(0.15), 횟수(1);
var :cnt(0),count(0),oo(0),add(0);
#진입횟수
count = 0;
for cnt = 0 to 20{
if sdate ==EntryDate(cnt) Then
count = count+1;
}
if data2(dayopen) > data3(dayopen) && data2(dayopen) - data3(dayopen) > data3(dayopen) - data4(dayopen) then oo == data3(dayopen)+data4(dayopen);
if data2(dayopen) > data3(dayopen) && data2(dayopen) - data3(dayopen) > data3(dayopen) - data4(dayopen) then add == data3(c) + data4(c);
if data2(dayopen) > data3(dayopen) && data2(dayopen) - data3(dayopen) < data3(dayopen) - data4(dayopen) then oo == data2(dayopen)+data3(dayopen);
if data2(dayopen) > data3(dayopen) && data2(dayopen) - data3(dayopen) < data3(dayopen) - data4(dayopen) then add == data2(c) + data3(c);
if data2(dayopen) < data3(dayopen) && data3(dayopen) - data2(dayopen) > data5(dayopen) - data2(dayopen) then oo == data2(dayopen)+data5(dayopen);
if data2(dayopen) < data3(dayopen) && data3(dayopen) - data2(dayopen) > data5(dayopen) - data2(dayopen) then add == data2(c) + data5(c);
if data2(dayopen) < data3(dayopen) && data3(dayopen) - data2(dayopen) < data5(dayopen) - data2(dayopen) then oo == data2(dayopen)+data3(dayopen);
if data2(dayopen) < data3(dayopen) && data3(dayopen) - data2(dayopen) < data5(dayopen) - data2(dayopen) then add == data2(c) + data3(c);
#매도진입
if crossup(add ,oo+상한) && MarketPosition==0 && count < 횟수 then Sell("매도");
#매수진입
if crossdown(add,oo-하한) && MarketPosition==0 && count < 횟수 then Buy("매수");
답변 1
예스스탁 예스스탁 답변
2015-03-19 15:45:39
안녕하세요
예스스탁입니다.
현재 수식상에 문제가 있는 부분이 2가지가 있습니다.
1
변수에 값의 저장은 = 입니다. ==이 아닙니다.
==은 좌측값과 우측값이 같다는 의미입니다.
현재 수식에서 oo와 add에 값저장이 =이 아닌 == 로 되어 있습니다.
2.
dayopen함수는 주종목의 시초가만을 리턴합니다.
data2(dayopen)은 주종목의 시가를 가져와 data2함수에 넣은 상태입니다.
즉 data2(250.50)과 같이 특정 숫자를 참조데이터의 함수에 넣은 것과 같습니다.
참조데이터에서는 OpenD(0)을 이용하셔야 합니다.
3 수정한 식입니다.
input : 상한(0.15), 하한(0.15), 횟수(1);
var :cnt(0),count(0),oo(0),add(0);
#진입횟수
count = 0;
for cnt = 0 to 20{
if sdate ==EntryDate(cnt) Then
count = count+1;
}
if data2(OpenD(0)) > data3(OpenD(0)) && data2(OpenD(0)) - data3(OpenD(0)) > data3(OpenD(0)) - data4(OpenD(0)) then
oo = data3(OpenD(0))+data4(OpenD(0));
if data2(OpenD(0)) > data3(OpenD(0)) && data2(OpenD(0)) - data3(OpenD(0)) > data3(OpenD(0)) - data4(OpenD(0)) then
add = data3(c) + data4(c);
if data2(OpenD(0)) > data3(OpenD(0)) && data2(OpenD(0)) - data3(OpenD(0)) < data3(OpenD(0)) - data4(OpenD(0)) then
oo = data2(OpenD(0))+data3(OpenD(0));
if data2(OpenD(0)) > data3(OpenD(0)) && data2(OpenD(0)) - data3(OpenD(0)) < data3(OpenD(0)) - data4(OpenD(0)) then
add = data2(c) + data3(c);
if data2(OpenD(0)) < data3(OpenD(0)) && data3(OpenD(0)) - data2(OpenD(0)) > data5(OpenD(0)) - data2(OpenD(0)) then
oo = data2(OpenD(0))+data5(OpenD(0));
if data2(OpenD(0)) < data3(OpenD(0)) && data3(OpenD(0)) - data2(OpenD(0)) > data5(OpenD(0)) - data2(OpenD(0)) then
add = data2(c) + data5(c);
if data2(OpenD(0)) < data3(OpenD(0)) && data3(OpenD(0)) - data2(OpenD(0)) < data5(OpenD(0)) - data2(OpenD(0)) then
oo = data2(OpenD(0))+data3(OpenD(0));
if data2(OpenD(0)) < data3(OpenD(0)) && data3(OpenD(0)) - data2(OpenD(0)) < data5(OpenD(0)) - data2(OpenD(0)) then
add = data2(c) + data3(c);
#매도진입
if crossup(add ,oo+상한) && MarketPosition==0 && count < 횟수 then Sell("매도");
#매수진입
if crossdown(add,oo-하한) && MarketPosition==0 && count < 횟수 then Buy("매수");
즐거운 하루되세요
> 쿠리 님이 쓴 글입니다.
> 제목 : data2,3,4 등을 이용한 수식인데 수식점검부탁드립니다
> 적정한 등가격 ATM을 찾기 위해서
아래와 같은경우에 신호가 발생하도록 수식을 작성하였는데
시뮬레이션 차트를 적용해본결과 신호가 발생하지 않습니다.
if문을 써서 변수에 숫자를 입력하는 기능은 안되는 것인지
then 뒤에 바로 주문조건을 걸면 되는데
앞단의 if문에서 변수에 숫자를 대입하고
그걸 토대로 이후에 if문을 써서 진입을 지정하면 주문이 안되는데요
다음수식에서 신호가 발생하지 않는 이유를 알려주시면 감사하겠습니다.
수고하세요
================================================================================
input : 상한(0.15), 하한(0.15), 횟수(1);
var :cnt(0),count(0),oo(0),add(0);
#진입횟수
count = 0;
for cnt = 0 to 20{
if sdate ==EntryDate(cnt) Then
count = count+1;
}
if data2(dayopen) > data3(dayopen) && data2(dayopen) - data3(dayopen) > data3(dayopen) - data4(dayopen) then oo == data3(dayopen)+data4(dayopen);
if data2(dayopen) > data3(dayopen) && data2(dayopen) - data3(dayopen) > data3(dayopen) - data4(dayopen) then add == data3(c) + data4(c);
if data2(dayopen) > data3(dayopen) && data2(dayopen) - data3(dayopen) < data3(dayopen) - data4(dayopen) then oo == data2(dayopen)+data3(dayopen);
if data2(dayopen) > data3(dayopen) && data2(dayopen) - data3(dayopen) < data3(dayopen) - data4(dayopen) then add == data2(c) + data3(c);
if data2(dayopen) < data3(dayopen) && data3(dayopen) - data2(dayopen) > data5(dayopen) - data2(dayopen) then oo == data2(dayopen)+data5(dayopen);
if data2(dayopen) < data3(dayopen) && data3(dayopen) - data2(dayopen) > data5(dayopen) - data2(dayopen) then add == data2(c) + data5(c);
if data2(dayopen) < data3(dayopen) && data3(dayopen) - data2(dayopen) < data5(dayopen) - data2(dayopen) then oo == data2(dayopen)+data3(dayopen);
if data2(dayopen) < data3(dayopen) && data3(dayopen) - data2(dayopen) < data5(dayopen) - data2(dayopen) then add == data2(c) + data3(c);
#매도진입
if crossup(add ,oo+상한) && MarketPosition==0 && count < 횟수 then Sell("매도");
#매수진입
if crossdown(add,oo-하한) && MarketPosition==0 && count < 횟수 then Buy("매수");
다음글
이전글