커뮤니티

문의드립니다

프로필 이미지
alswoxod
2011-03-14 18:27:05
764
글번호 36549
답변완료
좋은 프로그램 항상 감사드립니다. 선물 분봉에서 다음과 같은 식을 사용할 때요 c1 = 0 ; for cnt = 0 to 10 { if sdate == EntryDate(cnt) Then{ if IsEntryName("매수1",cnt)==true or IsEntryName("매도1",cnt)==true or IsEntryName("매수2",cnt)==true or IsEntryName("매도2",cnt)==true or IsEntryName("매수3",cnt)==true or IsEntryName("매도3",cnt) == true Then{c1 = c1+1;} If c1 < 1 and dayindex > 0 Then { If 조건1 Then Buy("매수1"); If 조건2 Then Buy("매수2"); If 조건3 Then Sell("매도2"); if 조건4 then buy("매수3"); if 조건5 then sell("매도3");} SetStopEndofday(1445); 조건을 만족했을때 종가에 매수와 매도가 바로 들어가지 않고 종가보다 1포인트가 떨어지거나 올랐을때 atlimit으로 매수나 매도를 하고 싶&#49854;니다 그리고 만약 조건을 만족했더라도 하루가 끝나도록 atlimit주문이 안나가면 무효가 되게 하고 싶습니다. 위 식을 어떻게 변형시켜야 하나요, if 조건 then var1=c; buy("매수1",atlimit,var1-1); 이런 식으로 변형했더니 문제가 생기네요 하루에 한번만 주문이 나가길 원하는데 세번째 분봉에 주문이 무더기로 나오네요 도움 좀 부탁드리겠습니다.
시스템
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2011-03-14 18:59:35

안녕하세요 예스스탁입니다. 작성하신 내용에 큰 문제는 없어 보입니다. 다만 당일 진입횟수는 다른 이름의 진입이 없다면 아래와 같이 간단히 작성하셔도 됩니다. var : cnt(0),C1(0); c1 = 0 ; for cnt = 0 to 10 { if sdate == EntryDate(cnt) Then c1 = c1+1; } If c1 < 1 and dayindex > 0 Then { If 조건1 Then Buy("매수1"); If 조건2 Then Buy("매수2"); If 조건3 Then Sell("매도2"); if 조건4 then buy("매수3"); if 조건5 then sell("매도3"); } SetStopEndofday(1445); 위식으로 조건1~5를 각각 적용해서 테스트결과 하루에 한번만 진입신호가 발생합니다. 말씀하신 것처럼 하나의 봉에서 여러 신호가 발생한다면 설정한 각 조건이 하나의 봉에서 동시에 만족하기 때문입니다. 이는 매수조건과 매도조건이 겹쳐지는게 있는지 확인하실 필요가 있습니다. atlimit이나 atstop을 사용해도 해당 내용은 마찬가지 입니다. 두 타입모두 현재봉에서 조건만족하면 가격을 셋팅하여 다음봉의 시세를 감시하므로 해당 부분을 제어하시기 위해서는 따로 조건이 필요합니다. 아래와 같은 식을 이용해 보시기 바랍니다. var : cnt(0),C1(0),xx(0); c1 = 0 ; for cnt = 0 to 10 { if sdate == EntryDate(cnt) Then c1 = c1+1; } XX = 0; If c1 < 1 and dayindex > 0 and MarketPosition == 0 Then { If 조건1 and XX == 0 Then{ Buy("매수1",atlimit,c-1); XX = 1; } If 조건2 and XX == 0 Then{ Buy("매수2",atlimit,c-1); XX = 1; } If 조건3 and XX == 0 Then{ Sell("매도2",atlimit,c+1); XX = 1; } if 조건4 and XX == 0 then{ buy("매수3",atlimit,c-1); XX = 1; } if 조건5 and XX == 0 then{ sell("매도3",atlimit,c+1); XX = 1; } } SetStopEndofday(1445); 동일하게 조건이 만족할 경우 코딩상 제일 상단의 내용만 만족하게 됩니다. 즐거운 하루되세요 > alswoxod 님이 쓴 글입니다. > 제목 : 문의드립니다 > 좋은 프로그램 항상 감사드립니다. 선물 분봉에서 다음과 같은 식을 사용할 때요 c1 = 0 ; for cnt = 0 to 10 { if sdate == EntryDate(cnt) Then{ if IsEntryName("매수1",cnt)==true or IsEntryName("매도1",cnt)==true or IsEntryName("매수2",cnt)==true or IsEntryName("매도2",cnt)==true or IsEntryName("매수3",cnt)==true or IsEntryName("매도3",cnt) == true Then{c1 = c1+1;} If c1 < 1 and dayindex > 0 Then { If 조건1 Then Buy("매수1"); If 조건2 Then Buy("매수2"); If 조건3 Then Sell("매도2"); if 조건4 then buy("매수3"); if 조건5 then sell("매도3");} SetStopEndofday(1445); 조건을 만족했을때 종가에 매수와 매도가 바로 들어가지 않고 종가보다 1포인트가 떨어지거나 올랐을때 atlimit으로 매수나 매도를 하고 싶&#49854;니다 그리고 만약 조건을 만족했더라도 하루가 끝나도록 atlimit주문이 안나가면 무효가 되게 하고 싶습니다. 위 식을 어떻게 변형시켜야 하나요, if 조건 then var1=c; buy("매수1",atlimit,var1-1); 이런 식으로 변형했더니 문제가 생기네요 하루에 한번만 주문이 나가길 원하는데 세번째 분봉에 주문이 무더기로 나오네요 도움 좀 부탁드리겠습니다.
프로필 이미지

alswoxod

2011-03-14 20:19:06

alswoxod 님에 의해 삭제된 답변입니다.