커뮤니티
답변해 주신 수식에 대한 질문 입니다..
2003-11-05 09:04:11
3374
글번호 1212
input: period(20), losspoint(2.0);
var: cnt(0), scnt(0);
If date[1] != date Then
scnt = 0;
if crossup(C, ma(C, period)) and scnt < 1 then
buy();
if C - entryprice(0) <= - losspoint then
{
exitlong();
scnt = scnt + 1;
}
else if crossdown(C, ma(C, period)) then
exitlong();
여기 보면 마지막에 else if 를 사용 하셨는데..
그냥 한번 더 if 를 쓰는것과 else if 를 쓰는것은 무슨 차이가 있나요?
위의 경우에는 거래정지주문이 아니면 일반청산주문이 나가라는 뜻 같은데..
어짜피 거래정지주문의 조건을 만족하지 못하면 그냥 if를 쓴 수식중에 조건에
맞는 수식이 자동으로 들어 가지 않나요? else if를 쓰지 않고 그냥 if를 쓰면
안되는지..
제 수식의 경우에는 else if를 한번도 안쓰고 여러게의 청산식이 들어 가 있거든요..
그리고
If date[1] != date Then
scnt = 0;
이건 어제와 오늘의 날자가 다르면 scnt = 0 이라 한다 라는 뜻인가요?
매수식 매도식의 If 구문 안에 scnt < 1 을 넣어 두고 buy 이후에
scnt = 1 이라고 분명히 했는데도 조건만 맞으면 반대매매가 나가네요..
청산이 나가야 하는데..-_- 여기에 대해서도 자세히좀 설명 해 주세요..
답변 1
예스스탁 예스스탁 답변
2003-11-05 11:48:15
안녕하세요? 예스스탁입니다...
다음과 같은 식이 있다고 가정하겠습니다..
(1)
if c>o then
var1 = 1;
if c<o[1] then
var1 = 2;
plot1(var1);
(2)
if c>o then
var1 = 1;
else if c<o[1] then
var1 = 2;
plot1(var1);
위 식에서 (1)번과 (2)번의 차이점을 본다면 만약 (1)번의 경우 c<o[1]의 조건이 만족되어지면 1값을 리턴하며 이후 c<o[1]의 조건이 만족되기 전까지 계속 1값을 저장하다가 c<o[1]의 조건이 만족되게 되면 리턴값이 2로 바뀌게 됩니다.
또한, 만약 c>o와 c<o[1]이 동시에 만족을 할 경우 뒤(나중)의 연산에 의해서 지표값 2를 선택하게 되며 이후 c>o의 조건이 나타낼 때 까지 계속 2값을 저장하게 됩니다.
하지만, (2)번의 경우 c>o의 경우에 해당될 때에는 1값을 리턴하며 c<o[1]의 조건을 만날때 까지 계속 1값을 저장하며 c<o[1]의 조건이 나타타게 되면 비로소 2값을 리턴하게 되고 이후 c>o의 조건이 만족할 때 까지 계속해서 2값을 저장하게 됩니다.
(2)번에서는 동시만족이 있지 않으며 c>o이면서 c<o[1]과 같이 하나의 봉에서 동시에 만족하는 경우가 생길 경우 c>o에 의해서 1값이 리턴되게 됩니다...
따라서, 답변드린 식을 살펴보면 청산식에서 만약 첫번째 청산에서 -2포인트만큼 손실이 남과 동시에 데드크로스가 발생하게 되면 결과적으로 데드크로스에 의해서 청산되는것을 막기 위해서 "else if"문을 이용한 것입니다.
두번째로, 다음의 구문은 분봉차트에서 청산횟수를 카운트하기 위해서 만든 것이며 날이 바뀔때 마다 청산횟수를 0으로 리셋시켜준 것입니다.
If date[1] != date Then
scnt = 0;
즐거운 하루 되세요....
> pp8184 님이 쓴 글입니다.
> 제목 : 답변해 주신 수식에 대한 질문 입니다..
> input: period(20), losspoint(2.0);
var: cnt(0), scnt(0);
If date[1] != date Then
scnt = 0;
if crossup(C, ma(C, period)) and scnt < 1 then
buy();
if C - entryprice(0) <= - losspoint then
{
exitlong();
scnt = scnt + 1;
}
else if crossdown(C, ma(C, period)) then
exitlong();
여기 보면 마지막에 else if 를 사용 하셨는데..
그냥 한번 더 if 를 쓰는것과 else if 를 쓰는것은 무슨 차이가 있나요?
위의 경우에는 거래정지주문이 아니면 일반청산주문이 나가라는 뜻 같은데..
어짜피 거래정지주문의 조건을 만족하지 못하면 그냥 if를 쓴 수식중에 조건에
맞는 수식이 자동으로 들어 가지 않나요? else if를 쓰지 않고 그냥 if를 쓰면
안되는지..
제 수식의 경우에는 else if를 한번도 안쓰고 여러게의 청산식이 들어 가 있거든요..
그리고
If date[1] != date Then
scnt = 0;
이건 어제와 오늘의 날자가 다르면 scnt = 0 이라 한다 라는 뜻인가요?
매수식 매도식의 If 구문 안에 scnt < 1 을 넣어 두고 buy 이후에
scnt = 1 이라고 분명히 했는데도 조건만 맞으면 반대매매가 나가네요..
청산이 나가야 하는데..-_- 여기에 대해서도 자세히좀 설명 해 주세요..