커뮤니티

부탁 드립니다.

프로필 이미지
고운무지개
2014-01-03 16:22:30
163
글번호 71023
답변완료
34145 질문에 답변 감사합니다. 수식을 적용했는데 잘 안되는 부분이 있어서 추가로 문의 드립니다. 1. 우선 다른 조건 추가없이 수식 그대로 적용했습니다. 1분봉 3만개로 적용하니 8월 30일 부터 주문이 들어가는데 첫날은 매수, 매도가 같이 들어가네요. 그래서 아래 수식을 넣어봤습니다. if stime == TT and sdate == 130830 Then{ buy("매수a",AtMarket,1); } 그리고 다른 if 문에는 and sdate > 130830 조건을 추가했구요. 그래도 매수, 매도가 같이 주문이 나가네요. 날짜를 9월이나 10월로 바꿔도 8월 30일에 주문이 나가네요. 왜 그런건지. 머리 아프네요. 어떻게 처리를 해야 할지 모르겠습니다. 2. 그림1 매도 세번 손절하고 매수로 진입하는 건 맞는데, 1개부터 시작하네요. 이것도 직전 거래가 손실이니 두 배로 진입하게 나와야 합니다. 3. 그림2 9월6일 익절이 됐는데 9월9일 또 다계약으로 진입하네요. 4. 그리고 11월 6일 이후로 진입이 없습니다. 수능일 부터 진입이 없습니다. 살펴보시고 수정 부탁 드립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-01-03 15:36:38

안녕하세요 예스스탁입니다. 1. 차트상 첫진입이 매수와 매도가 동시에 나오는 것은 조건이 같이 때문입니다. 첫진입은 이전 거래가 없기 때문에 조건이 같습니다. TotalTrades == 0 이 차트상 첫진입이라는 의미입니다. 매수나 매도 쪽에 해당 조건을 삭제하시면 매수나 매도로 하나로 시작하게 하실수 있습니다. 아래식은 매도로 시작하게 작성했습니다. 수식에서 날짜표현은 8자리( YYYYMMDD)입니다. sdate > 20130830 2.3.4번 내용 수정했습니다. var : cnt(0),Bloss(0),Sloss(0),Bprofit(0),Sprofit(0),TT(0); var : Va1(0),va2(0),Va3(0); BLoss = 0; Sloss = 0; BProfit = 0; SProfit = 0; for cnt = 1 to 3{ #최근 3회거래에서 매수손실인 거래횟수 if PositionProfit(cnt) < 0 and MarketPosition(cnt) == 1 Then Bloss = Bloss+1; #최근 3회거래에서 매수수익인 거래횟수 if PositionProfit(cnt) > 0 and MarketPosition(cnt) == 1 Then BProfit = BProfit+1; #최근 3회거래에서 매도손실인 거래횟수 if PositionProfit(cnt) < 0 and MarketPosition(cnt) == -1 Then Sloss = Sloss+1; #최근 3회거래에서 매도수익 거래횟수 if PositionProfit(cnt) > 0 and MarketPosition(cnt) == -1 Then SProfit = SProfit+1; } va1 = int(date/100)-int(date/10000)*100; va2 = date - int(date/100)*100; va3 = DayOfWeek(date); if va1%3 == 0 and va2 >= 8 and va2 <= 14 and va3 == 4 then{#선물만기일 TT = 144900; #마지막봉시간 14시49분 SetStopEndofday(140000); #당일청산은 14시 } else if sdate == 20131107 or sdate == 20121108 Then{ #수능일 TT = 161500; #마지막봉시간 16시 15분 SetStopEndofday(160000); #당일청산은 16시 } Else{ #평일 TT = 151500;#마지막봉시간 15시 15분 SetStopEndofday(150000);#당일청산은 15시 } if stime == TT Then{ if stime == TT /*매수조건*/ then{ if (#TotalTrades == 0 or (TotalTrades >= 1 and (Sloss == 3 or SProfit == 3) and MarketPosition(1) == -1))Then buy("매수",AtMarket,def,iff(TotalTrades == 0,1,MaxContracts(1)*2)); if TotalTrades >= 1 and (Bprofit < 3) and PositionProfit(1) > 0 and MarketPosition(1) == 1 Then buy("매수1",AtMarket,def,1); if TotalTrades >= 1 and (Bloss < 3 ) and PositionProfit(1) < 0 and MarketPosition(1) == 1 Then buy("매수1.",AtMarket,def,MaxContracts(1)*2); } if stime == TT /*매도조건*/ then{ if (TotalTrades == 0 or (TotalTrades >= 1 and (Bloss == 3 or Bprofit == 3) and MarketPosition(1) == 1)) Then sell("매도",AtMarket,def,iff(TotalTrades == 0,1,MaxContracts(1)*2)); if TotalTrades >= 1 and ( SProfit < 3) and PositionProfit(1) > 0 and MarketPosition(1) == -1 Then sell("매도1",AtMarket,def,1); if TotalTrades >= 1 and (Sloss < 3 ) and PositionProfit(1) < 0 and MarketPosition(1) == -1 Then sell("매도1.",AtMarket,def,MaxContracts(1)*2); } } #30틱 수익시 청산 SetStopProfittarget(30*PriceScale,PointStop); #15틱 손실시 청산 SetStopLoss(15*PriceScale,PointStop); 즐거운 하루되세요 > 고운무지개 님이 쓴 글입니다. > 제목 : 부탁 드립니다. > 34145 질문에 답변 감사합니다. 수식을 적용했는데 잘 안되는 부분이 있어서 추가로 문의 드립니다. 1. 우선 다른 조건 추가없이 수식 그대로 적용했습니다. 1분봉 3만개로 적용하니 8월 30일 부터 주문이 들어가는데 첫날은 매수, 매도가 같이 들어가네요. 그래서 아래 수식을 넣어봤습니다. if stime == TT and sdate == 130830 Then{ buy("매수a",AtMarket,1); } 그리고 다른 if 문에는 and sdate > 130830 조건을 추가했구요. 그래도 매수, 매도가 같이 주문이 나가네요. 날짜를 9월이나 10월로 바꿔도 8월 30일에 주문이 나가네요. 왜 그런건지. 머리 아프네요. 어떻게 처리를 해야 할지 모르겠습니다. 2. 그림1 매도 세번 손절하고 매수로 진입하는 건 맞는데, 1개부터 시작하네요. 이것도 직전 거래가 손실이니 두 배로 진입하게 나와야 합니다. 3. 그림2 9월6일 익절이 됐는데 9월9일 또 다계약으로 진입하네요. 4. 그리고 11월 6일 이후로 진입이 없습니다. 수능일 부터 진입이 없습니다. 살펴보시고 수정 부탁 드립니다.