커뮤니티
Marketposition 에 관한 오류 수정 요청
2012-07-18 22:24:15
308
글번호 53009
안녕하세요? 수고 많으십니다.
아래 식에 관해 질문 드립니다.
if stime >= 092100 and stime <= 당일강제청산시간 and
marketposition == 0 and
data2(C) <= data2(dayopen) and
value1 < value2 and
Trading_Cnt < 일일매매횟수 and
C > 진입가하한 and
BarsSinceExit(1) >= 7 and
( (Highest(C, 13) == C and C > O*1.04) or
(Highest(C,13) == C and C > O and C[1] > O[1] and C[2] >= O[2]) ) Then
{
Buy("MACD아래매수"); # 콜옵션을 매수하라
Trading_Cnt = Trading_Cnt + 1; # 매매횟수 누적
StopRate = 12;
DisDivergence = false;
}
if stime >= 092100 and stime <= 당일강제청산시간 and
MarketPosition == 0 and
Data2(C)+1 <= data2(DayOpen) and
value1 < value2 and
Trading_Cnt < 일일매매횟수 and
C > 진입가하한 and
cnt_of_UpDown <= 2 and
( Highest(C, 6) == C and C > DayOpen) and
( data4(Lowest(L,6)) == Data4(L) and data4(C)*1.07 < Data4(OpenD(0)) ) Then
{
Buy("MACD아래매수2");
Trading_Cnt = Trading_Cnt + 1;
StopRate = 12;
DisDivergence = false;
}
문제는 위의 첫번째 조건식이 만족이 되어서 buy 를 하면,
어떤 경우에는 두번째 조건식 중 Marketposition을 제외한 나머지 조건들도 만족되어 Trading_Cnt 가 한번 더 카운트가 된다는 것입니다.
첫번째 조건식이 만족되어 buy를 하면 marketposition 은 1 이 되는 것이 아닌가요?
따라서 두번째 조건식을 절대 만족할 수 없다고 생각하는데,
이상하게도 Trading_Cnt 는 한 번 더 카운트가 됩니다.
제가 원하는 것은,
첫번째 조건식이 만족되어 buy 상태에서는
두번째 조건식에 있는 조건들중 marketposition == 0 이 아니므로
그 밑에 있는 실행문들을 실행하지 않고 다음 명령어로 넘어가는 것입니다.
감사합니다.
답변 1
예스스탁 예스스탁 답변
2012-07-19 14:30:17
안녕하세요
예스스탁입니다.
if 조건문은 봉완성시 조건만족여부를 판단하고
봉완성시는 다음봉 시가수신시입니다.
onclose은 다음봉 시가수신시에 신호가 발생하는데
신호를 if문 만족봉에 표시를 하는 타입니다.
여러개의 if문이 한봉에 조건이 동시에 만족하게 되면
모두 실행문이 수행되므로 아래와 같이 작성해 주시면
하나의 봉에서 동시에 if조건이 만족하면
수식 기술상 가장 위에있는 if문만 적용되게 됩니다.
var : set(0);
set = 0;
if set == 0 and
stime >= 092100 and stime <= 당일강제청산시간 and
marketposition == 0 and
data2(C) <= data2(dayopen) and
value1 < value2 and
Trading_Cnt < 일일매매횟수 and
C > 진입가하한 and
BarsSinceExit(1) >= 7 and
( (Highest(C, 13) == C and C > O*1.04) or
(Highest(C,13) == C and C > O and C[1] > O[1] and C[2] >= O[2]) ) Then
{
Buy("MACD아래매수"); # 콜옵션을 매수하라
Trading_Cnt = Trading_Cnt + 1; # 매매횟수 누적
StopRate = 12;
DisDivergence = false;
set = 1;
}
if set == 0 and
stime >= 092100 and stime <= 당일강제청산시간 and
MarketPosition == 0 and
Data2(C)+1 <= data2(DayOpen) and
value1 < value2 and
Trading_Cnt < 일일매매횟수 and
C > 진입가하한 and
cnt_of_UpDown <= 2 and
( Highest(C, 6) == C and C > DayOpen) and
( data4(Lowest(L,6)) == Data4(L) and data4(C)*1.07 < Data4(OpenD(0)) ) Then
{
Buy("MACD아래매수2");
Trading_Cnt = Trading_Cnt + 1;
StopRate = 12;
DisDivergence = false;
set = 1;
}
즐거운 하루되세요
> 재민아빠 님이 쓴 글입니다.
> 제목 : Marketposition 에 관한 오류 수정 요청
>
안녕하세요? 수고 많으십니다.
아래 식에 관해 질문 드립니다.
if stime >= 092100 and stime <= 당일강제청산시간 and
marketposition == 0 and
data2(C) <= data2(dayopen) and
value1 < value2 and
Trading_Cnt < 일일매매횟수 and
C > 진입가하한 and
BarsSinceExit(1) >= 7 and
( (Highest(C, 13) == C and C > O*1.04) or
(Highest(C,13) == C and C > O and C[1] > O[1] and C[2] >= O[2]) ) Then
{
Buy("MACD아래매수"); # 콜옵션을 매수하라
Trading_Cnt = Trading_Cnt + 1; # 매매횟수 누적
StopRate = 12;
DisDivergence = false;
}
if stime >= 092100 and stime <= 당일강제청산시간 and
MarketPosition == 0 and
Data2(C)+1 <= data2(DayOpen) and
value1 < value2 and
Trading_Cnt < 일일매매횟수 and
C > 진입가하한 and
cnt_of_UpDown <= 2 and
( Highest(C, 6) == C and C > DayOpen) and
( data4(Lowest(L,6)) == Data4(L) and data4(C)*1.07 < Data4(OpenD(0)) ) Then
{
Buy("MACD아래매수2");
Trading_Cnt = Trading_Cnt + 1;
StopRate = 12;
DisDivergence = false;
}
문제는 위의 첫번째 조건식이 만족이 되어서 buy 를 하면,
어떤 경우에는 두번째 조건식 중 Marketposition을 제외한 나머지 조건들도 만족되어 Trading_Cnt 가 한번 더 카운트가 된다는 것입니다.
첫번째 조건식이 만족되어 buy를 하면 marketposition 은 1 이 되는 것이 아닌가요?
따라서 두번째 조건식을 절대 만족할 수 없다고 생각하는데,
이상하게도 Trading_Cnt 는 한 번 더 카운트가 됩니다.
제가 원하는 것은,
첫번째 조건식이 만족되어 buy 상태에서는
두번째 조건식에 있는 조건들중 marketposition == 0 이 아니므로
그 밑에 있는 실행문들을 실행하지 않고 다음 명령어로 넘어가는 것입니다.
감사합니다.
다음글
이전글