커뮤니티

부탁 드립니다.

프로필 이미지
고운무지개
2014-01-06 09:07:49
144
글번호 71081
답변완료
안녕하세요. 34174 질문에 답변 고맙습니다. 추가로 부탁 드릴 게 있습니다. 1. 수정된 수식으로 1분봉 5만개에 적용하면 11월 25일까지만 진입하고 그 이후는 진입이 없습니다. 그래서 손절, 익절 틱수와 cnt를 6으로 바꾸고 1부터 6까지 변경해봤더니, 진입 횟수가 달라집니다. 현재 진입 조건을 추가하지 않은 상태라서 시가에 진입하고 익절이나 손절, 또는 종가에 청산이니까. 봉 갯수가 같으면 진입 횟수가 항상 같아야 하는데 왜 달라지는지 이해를 못하겠네요. <익절, 손절틱을 바꿔본 경우> 5만봉 25, 17로 바꾸면 1월3일까지 정상적으로 진입 30, 17변경은 11월25일까지만 진입 15, 18변경은 4일만 진입. 21, 15변경은 4일만 진입 25, 15병경은 정상적으로 진입. 24, 27변경은 11월 25일 까지만 진입. cnt를 6으로 늘리고 1부터 6까지 바꾸면 그것도 진입 횟수가 달라집니다. 이유가 뭘까요? 살펴보시고 수정 부탁 드립니다. 2. 그리고 익절이 아니고 종가에 끝났는데 수익인 경우에도 진입 계약이 1개부터 시작하네요. 익절이 아닌 경우 수익으로 끝났어도 두 배로 진입하는 수식을 추가로 부탁 드립니다. 3. 익절이 계약수 * 틱수 이상으로 끝난 경우엔 1개부터 시작. 틱수는 변수로 작성해서 변경가능하게 부탁 드립니다. 익절, 손절 틱수와, cnt를 마음대로 변경해도 진입 횟수가 일정한 수식으로 수정. 익절틱으로 익절이 나가지 않은 수익인 경우에도 두 배로 진입하는 수식 추가. 익절이 계약수 * 몇틱 이상이면 1개부터 진입하는 수식 추가. 세 가지 수식을 요청합니다. 요청이 많아서 정말 죄송합니다. 지금 뼈대 중 일부를 만들어보고 있는데 어렵네요. 항상 감사 드립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-01-06 15:43:10

안녕하세요 예스스탁입니다. 수정한 식입니다. for문의 횟수를 변경하시면 하단의 if문에서도 변경하셔야 합니다. 또한 시스템은 최대진입가능 수량이 시스템 트레이딩 설정창의 파리미딩탭 하단에 지정이 되어 있습니다. 해당 수량이상 진입하지 않으므로 2배한 수량이 해당 수량이상이면 더이상 진입이 발동하지 않으므로 진입횟수에 차이가 발생할수 있습니다. 아래식은 N값과 수익,손절틱수를 외부변수로 처리했습니다. 목표수익청산만 익절로 판단하게 처리했습니다. 목표수익청산이 아니면 모두 2배수로 진입합니다. 익절이 계약수 * 몇틱 이상이면 1개부터 진입하는 수식 추가. 위 내용은 정확한 내용을 모르겠습니다. 아래식에 수정보완해 사용하시기 바랍니다. input : N(3),손절틱수(15),익절틱수(30); var : cnt(0),Bloss(0),Sloss(0),Bprofit(0),Sprofit(0),TT(0); var : Va1(0),va2(0),Va3(0),vol(0); BLoss = 0; Sloss = 0; BProfit = 0; SProfit = 0; for cnt = 1 to N{ #최근 3회거래에서 매수손실인 거래횟수 if IsExitName("StopProfittarget",cnt) == false and MarketPosition(cnt) == 1 Then Bloss = Bloss+1; #최근 3회거래에서 매수수익인 거래횟수 if IsExitName("StopProfittarget",cnt) == true and MarketPosition(cnt) == 1 Then BProfit = BProfit+1; #최근 3회거래에서 매도손실인 거래횟수 if IsExitName("StopProfittarget",cnt) == false and MarketPosition(cnt) == -1 Then Sloss = Sloss+1; #최근 3회거래에서 매도수익 거래횟수 if IsExitName("StopProfittarget",cnt) == true 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 and MarketPosition == 0 Then{ if stime == TT /*매수조건*/ then{ if TotalTrades >= 1 and Sloss == N and MarketPosition(1) == -1 and IsExitName("StopProfittarget",1) == false Then{ Vol = Vol*2; buy("매수1",AtMarket,def,Vol); } if TotalTrades >= 1 and SProfit == N and MarketPosition(1) == -1 and IsExitName("StopProfittarget",1) == true Then{ Vol = 1; buy("매수2",AtMarket,def,Vol); } if TotalTrades >= 1 and (Bprofit < N and Bloss < N) and IsExitName("StopProfittarget",1) == true and MarketPosition(1) == 1 Then{ Vol = 1; buy("매수3",AtMarket,def,Vol); } if TotalTrades >= 1 and (Bloss < N and Bprofit < N) and IsExitName("StopProfittarget",1) == false and MarketPosition(1) == 1 Then{ Vol = Vol*2; buy("매수4",AtMarket,def,vol); } } if stime == TT /*매도조건*/ then{ if (TotalTrades == 0) Then{ Vol = 1; sell("매도#1",AtMarket,def,vol); } if TotalTrades >= 1 and Bloss == N and MarketPosition(1) == 1 and IsExitName("StopProfittarget",1) == false Then{ Vol = Vol*2; sell("매도1",AtMarket,def,Vol); } if TotalTrades >= 1 and Bprofit == N and MarketPosition(1) == 1 and IsExitName("StopProfittarget",1) == true Then{ Vol = 1; sell("매도2",AtMarket,def,Vol); } if TotalTrades >= 1 and (SProfit < N and Sloss < N) and IsExitName("StopProfittarget",1) == true and MarketPosition(1) == -1 Then{ Vol = 1; sell("매도3",AtMarket,def,1); } if TotalTrades >= 1 and (Sloss < N and SProfit < N) and IsExitName("StopProfittarget",1) == false and MarketPosition(1) == -1 Then{ Vol = Vol*2; sell("매도4",AtMarket,def,Vol); } } } #30틱 수익시 청산 SetStopProfittarget(익절틱수*PriceScale,PointStop); #15틱 손실시 청산 SetStopLoss(손절틱수*PriceScale,PointStop); 즐거운 하루되세요 > 고운무지개 님이 쓴 글입니다. > 제목 : 부탁 드립니다. > 안녕하세요. 34174 질문에 답변 고맙습니다. 추가로 부탁 드릴 게 있습니다. 1. 수정된 수식으로 1분봉 5만개에 적용하면 11월 25일까지만 진입하고 그 이후는 진입이 없습니다. 그래서 손절, 익절 틱수와 cnt를 6으로 바꾸고 1부터 6까지 변경해봤더니, 진입 횟수가 달라집니다. 현재 진입 조건을 추가하지 않은 상태라서 시가에 진입하고 익절이나 손절, 또는 종가에 청산이니까. 봉 갯수가 같으면 진입 횟수가 항상 같아야 하는데 왜 달라지는지 이해를 못하겠네요. <익절, 손절틱을 바꿔본 경우> 5만봉 25, 17로 바꾸면 1월3일까지 정상적으로 진입 30, 17변경은 11월25일까지만 진입 15, 18변경은 4일만 진입. 21, 15변경은 4일만 진입 25, 15병경은 정상적으로 진입. 24, 27변경은 11월 25일 까지만 진입. cnt를 6으로 늘리고 1부터 6까지 바꾸면 그것도 진입 횟수가 달라집니다. 이유가 뭘까요? 살펴보시고 수정 부탁 드립니다. 2. 그리고 익절이 아니고 종가에 끝났는데 수익인 경우에도 진입 계약이 1개부터 시작하네요. 익절이 아닌 경우 수익으로 끝났어도 두 배로 진입하는 수식을 추가로 부탁 드립니다. 3. 익절이 계약수 * 틱수 이상으로 끝난 경우엔 1개부터 시작. 틱수는 변수로 작성해서 변경가능하게 부탁 드립니다. 익절, 손절 틱수와, cnt를 마음대로 변경해도 진입 횟수가 일정한 수식으로 수정. 익절틱으로 익절이 나가지 않은 수익인 경우에도 두 배로 진입하는 수식 추가. 익절이 계약수 * 몇틱 이상이면 1개부터 진입하는 수식 추가. 세 가지 수식을 요청합니다. 요청이 많아서 정말 죄송합니다. 지금 뼈대 중 일부를 만들어보고 있는데 어렵네요. 항상 감사 드립니다.