커뮤니티

분할매수 , 매수금액 최적화 시뮬레이션 오류.

프로필 이미지
하운드독
2020-04-30 23:15:04
1204
글번호 138534
답변완료

첨부 이미지

안녕하세요. 매수: 매수신호 발생시 1호가 단위로 나눠서 분할매수 로직+ 투자금 1천만원 표제건관려하여, 투입금액(분할매수 최대금액)이 어느 정도 이상 올라가니, 수익률이 0%이되는 현상이 발생하네요.테스트는 30분봉으로 했고요. 상식적으로 이해가 안되는 상황이라, 제 수식에 문제 가 있거나, HTS상의 문제가 있어보입니다. 첨부 사진 보시면 알겠지만, 투자금액이 어느정도 이상되면 수익금이 0가 됩니다. 혹시 투자금액 한도 같은 게 걸려있나요? -----인용------ Input : 금액(10000000), #할당 //value = 매매기준(Period); //매매기준 var1 = int(금액*(1/9)/C); // 1번째 주문수량,다이아몬드형 var2 = Int(금액*(2/9)/C); Var3 = Int(금액*(3/9)/C); Var4 = Int(금액*(2/9)/C); Var5 = Int(금액*(1/9)/C); # 매수/매도청산 if CrossUP(매매기준, 매수선)//무포시 1차매수 then buy("매수1",OnClose,def,Var1); //Buy("신호명", 신호타입, 가격조건, 수량) if MarketPosition == 1 && BarsSinceEntry< Entry봉시간제한 Then// 1차 매수후 나머지 4분할 매수 { if Lowest(L,BarsSinceEntry) < EntryPrice-PriceScale*1*buypriceunit Then //2틱하락시 buy("매수2",AtLimit,EntryPrice-PriceScale*1*buypriceunit,Var2); // 2차매수 if Lowest(L,BarsSinceEntry) < EntryPrice-PriceScale*2*buypriceunit Then buy("매수3",AtLimit,EntryPrice-PriceScale*2*buypriceunit,Var3); if Lowest(L,BarsSinceEntry) < EntryPrice-PriceScale*3*buypriceunit Then buy("매수4",AtLimit,EntryPrice-PriceScale*3*buypriceunit,Var4); if Lowest(L,BarsSinceEntry) < EntryPrice-PriceScale*4*buypriceunit Then buy("매수5",AtLimit,EntryPrice-PriceScale*4*buypriceunit,Var5); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-05-06 10:44:24

안녕하세요 예스스탁입니다. 시스템 트레이딩 설정창의 피라미딩 탭하단에서 진입설정을 크게 지정해 보시기 바랍니다. 한번 혹은 수량 누적시 일정이상의 수량이나 횟수를 넘어가면 신호발생이 되지 않게 하는 옵션입니다. 즐거운 하루되세요 > 하운드독 님이 쓴 글입니다. > 제목 : 분할매수 , 매수금액 최적화 시뮬레이션 오류. > 안녕하세요. 매수: 매수신호 발생시 1호가 단위로 나눠서 분할매수 로직+ 투자금 1천만원 표제건관려하여, 투입금액(분할매수 최대금액)이 어느 정도 이상 올라가니, 수익률이 0%이되는 현상이 발생하네요.테스트는 30분봉으로 했고요. 상식적으로 이해가 안되는 상황이라, 제 수식에 문제 가 있거나, HTS상의 문제가 있어보입니다. 첨부 사진 보시면 알겠지만, 투자금액이 어느정도 이상되면 수익금이 0가 됩니다. 혹시 투자금액 한도 같은 게 걸려있나요? -----인용------ Input : 금액(10000000), #할당 //value = 매매기준(Period); //매매기준 var1 = int(금액*(1/9)/C); // 1번째 주문수량,다이아몬드형 var2 = Int(금액*(2/9)/C); Var3 = Int(금액*(3/9)/C); Var4 = Int(금액*(2/9)/C); Var5 = Int(금액*(1/9)/C); # 매수/매도청산 if CrossUP(매매기준, 매수선)//무포시 1차매수 then buy("매수1",OnClose,def,Var1); //Buy("신호명", 신호타입, 가격조건, 수량) if MarketPosition == 1 && BarsSinceEntry< Entry봉시간제한 Then// 1차 매수후 나머지 4분할 매수 { if Lowest(L,BarsSinceEntry) < EntryPrice-PriceScale*1*buypriceunit Then //2틱하락시 buy("매수2",AtLimit,EntryPrice-PriceScale*1*buypriceunit,Var2); // 2차매수 if Lowest(L,BarsSinceEntry) < EntryPrice-PriceScale*2*buypriceunit Then buy("매수3",AtLimit,EntryPrice-PriceScale*2*buypriceunit,Var3); if Lowest(L,BarsSinceEntry) < EntryPrice-PriceScale*3*buypriceunit Then buy("매수4",AtLimit,EntryPrice-PriceScale*3*buypriceunit,Var4); if Lowest(L,BarsSinceEntry) < EntryPrice-PriceScale*4*buypriceunit Then buy("매수5",AtLimit,EntryPrice-PriceScale*4*buypriceunit,Var5); }