커뮤니티

스팟수식문의

프로필 이미지
gt
2017-01-05 15:16:06
1893
글번호 224083
답변완료

첨부 이미지

1. 종목검색을 통해 검색된 종목을 확장차트를 이용해 매매 테스트중입니다. 종목당 총 예수금의 5%이내에서만 진입하게 하려는데 피라미딩 설정에서 다른진입신호로 해줄경우는 문제가 없는데 모든진입신호로 하니 총 예수금의 주문가능금액까지 진입이 됩니다. 아래는 코드 일부입니다. gTotalMoney, gEntryMoney는 전역변수선언되었음 gTotalMoney = Math.floor(CAC.GetBalanceETCinfo(0)); // 계좌 총 예수금 조회 gEntryMoney = gTotalMoney * (5 / 100); // 종목당 총 예수금의 5%내에서 매수진입 function Main_OnRiseSignal(ChartEx, Signal) { for (var i = 0; i < gRcvCount; i++) { if (ChartEx.GetCode(1) == gEntryItemObject[i].code) { if (Signal.signalKind == SIG_BUY) { Main.MessageList(GetTicketTime() + ": 매수주문[" + Signal.code + "]"); gEntryItemBuyVolume[i] = 0; // 매수가능금액으로 총 주문가능수량 산출 gEntryItemBuyVolume[i] = Math.floor(gEntryMoney / gEntryItemObject[i].Ask(5)); CAC.OrderBuy(Signal.code, gEntryItemBuyVolume[i] /3, gEntryItemObject[i].Ask(1), 0); // 매도1호가 주문 CAC.OrderBuy(Signal.code, gEntryItemBuyVolume[i] /3, gEntryItemObject[i].Bid(2), 0); // 매수3호가 주문 CAC.OrderBuy(Signal.code, gEntryItemBuyVolume[i] /3, gEntryItemObject[i].Bid(5), 0); // 매수5호가 주문 gUnfillCode[i] = Signal.code; Main.SetTimer(10, 60000); // 10번 타이머 N분 } } ~~~~ } 2. 첨부그림 1과 같이 메시지가 뜨는 원인은 무엇인지요? 3. 총 예수금이 1천만원이라고 치면 종목당 최대 10% 금액인 100만원 내에서만 진입을 하고자 합니다. 매수를 2 ~ 3일에 걸쳐 진입하는데 최대 10% 금액을 넘어서면 안됩니다. 위 수식 개선 좀 부탁드리겠습니다. 4. 60분봉으로 종목검색후 1분봉으로 진입하는데 60분봉 검색된 종목에 한해서 1분봉 확장차트 생성 이후부터 시스템 신호를 발생시킬 수는 없는지요? 1분봉 시스템식에서 조건이 만족하면 이미 신호가 발생된 상태가 많아 60분봉 검색된 종목이 실제적으로 진입을 하지 못하는 문제가 있습니다. 따로 논다고 할까요~~ 목적은 확장차트 생성 이후부터 시스템 신호가 발생되게 하고, 오버나잇하여 잔고가 있는 상태라면 시스템 신호가 이전에 발생된 것을 유지하게 했으면 합니다. 어떤 해결책이 있는지 궁금합니다. 힌트라도 주시면 감사하겠습니다. 확장차트 생성이후부터 시스템식을 적용할 것인지, 아닌지를 구분할 수 있는 옵션을 추가했으면 합니다. 감사합니다.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-01-18 14:58:19

> gt 님이 쓴 글입니다. > 제목 : 스팟수식문의 > 1. 종목검색을 통해 검색된 종목을 확장차트를 이용해 매매 테스트중입니다. 종목당 총 예수금의 5%이내에서만 진입하게 하려는데 피라미딩 설정에서 다른진입신호로 해줄경우는 문제가 없는데 모든진입신호로 하니 총 예수금의 주문가능금액까지 진입이 됩니다. 아래는 코드 일부입니다. gTotalMoney, gEntryMoney는 전역변수선언되었음 gTotalMoney = Math.floor(CAC.GetBalanceETCinfo(0)); // 계좌 총 예수금 조회 gEntryMoney = gTotalMoney * (5 / 100); // 종목당 총 예수금의 5%내에서 매수진입 function Main_OnRiseSignal(ChartEx, Signal) { for (var i = 0; i < gRcvCount; i++) { if (ChartEx.GetCode(1) == gEntryItemObject[i].code) { if (Signal.signalKind == SIG_BUY) { Main.MessageList(GetTicketTime() + ": 매수주문[" + Signal.code + "]"); gEntryItemBuyVolume[i] = 0; // 매수가능금액으로 총 주문가능수량 산출 gEntryItemBuyVolume[i] = Math.floor(gEntryMoney / gEntryItemObject[i].Ask(5)); CAC.OrderBuy(Signal.code, gEntryItemBuyVolume[i] /3, gEntryItemObject[i].Ask(1), 0); // 매도1호가 주문 CAC.OrderBuy(Signal.code, gEntryItemBuyVolume[i] /3, gEntryItemObject[i].Bid(2), 0); // 매수3호가 주문 CAC.OrderBuy(Signal.code, gEntryItemBuyVolume[i] /3, gEntryItemObject[i].Bid(5), 0); // 매수5호가 주문 gUnfillCode[i] = Signal.code; Main.SetTimer(10, 60000); // 10번 타이머 N분 } } ~~~~ } 2. 첨부그림 1과 같이 메시지가 뜨는 원인은 무엇인지요? 3. 총 예수금이 1천만원이라고 치면 종목당 최대 10% 금액인 100만원 내에서만 진입을 하고자 합니다. 매수를 2 ~ 3일에 걸쳐 진입하는데 최대 10% 금액을 넘어서면 안됩니다. 위 수식 개선 좀 부탁드리겠습니다. 4. 60분봉으로 종목검색후 1분봉으로 진입하는데 60분봉 검색된 종목에 한해서 1분봉 확장차트 생성 이후부터 시스템 신호를 발생시킬 수는 없는지요? 1분봉 시스템식에서 조건이 만족하면 이미 신호가 발생된 상태가 많아 60분봉 검색된 종목이 실제적으로 진입을 하지 못하는 문제가 있습니다. 따로 논다고 할까요~~ 목적은 확장차트 생성 이후부터 시스템 신호가 발생되게 하고, 오버나잇하여 잔고가 있는 상태라면 시스템 신호가 이전에 발생된 것을 유지하게 했으면 합니다. 어떤 해결책이 있는지 궁금합니다. 힌트라도 주시면 감사하겠습니다. 확장차트 생성이후부터 시스템식을 적용할 것인지, 아닌지를 구분할 수 있는 옵션을 추가했으면 합니다. 감사합니다.