커뮤니티

[글번호 1034] 관련 추가 질문

프로필 이미지
원초로
2024-02-24 20:52:18.0
527
글번호 225955
답변완료
안녕하세요? 1034에서 요청하신 아래 내용으로 ----------------------------------------------------- 2. 당일 매매를 원칙으로 작성을 하려고 합니다. A. 매도 조건은 (Timer는 어떤 단위가 좋을 것 같은지요?) 손절은 -3% - 보유수량 30%, -5% - 보유수량 40%, -7% - 보유수량 전량 수익은 3% - 보유수량 30%, 5% - 보유수량 40%, 7% - 보유수량 전량 Trailing Stop 매도: 당일 고점 대비 -3% (보유수량 50%) - 스팟으로 가능 할까요? 전일 종가 이하 : 매수가 전일 종가 이상 이면 보유수량 50% 손절 - 스팟으로 가능 할까요? B. 장종료 동시호가 전량 매도(수익,손해 나더라도) C. 상한가 전량매도(수익에 상관없이) ------------------------------------------------------------------------- 수식을 변경 요청 드립니다. 윗글의 경우는 종목이 검색되면 function Main_OnRcvMarketData(MarketData) 함수 내에서 매수를 실행하는 경우에 대해서 작성이 되었는데, 저는 파워검색으로 검색된 종목에 확장차트 시스템식을 적용해서 나오는 매수/매도 시그날을 이용해서 매매하게 코드가 되어 있습니다. 위의 예제를 참고해서 변경해 보려고 시도해 보고 있는데, 아직 실력이 미천하여 잘 안 되고 있습니다. 변경 부탁 드립니다. 아래는 제가 사용하고 있는 코드의 function Main_OnRiseSignal(ChartEx, Signal) 부분입니다. ---------------------------------------------------------------------------------- function Main_OnRiseSignal(ChartEx, Signal) { var d = new Date(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //신호발생 종목에 대해 잔고셋팅 종목코드 = Main.GetOrderCode(Signal.code) Account1.SetBalance(종목코드 ,0); var buyable = 1; // 매수가능 종목으로 설정, 당일 매수 리스트에 있으면 아래 구문에서 0으로 설정 if (BuyList.length > 0) { for (var i = 0; i < Buylist.length; i++) { if (BuyList[i] == 종목코드) { buyable = 0; // 당일 매수했던 종목 재매수 금지 } } } //매수신호이고 잔고가 없고, 당일 매수한 적이 없을 때 매수한다. if (Signal.signalKind == 1 && Account1.Balance.count == 0 && buyable == 1) { //Account1.OrderBuy(Main.GetOrderCode(ChartEx.GetCode(1)),1,0,1); // Account1.OrderBuy(Main.GetOrderCode(Signal.code),1,0,1); // Account1.OrderBuy(Main.GetOrderCode(Signal.code),Math.floor(100000/ChartEx.GetClose(1,0)),0,1); Account1.OrderBuy(종목코드, 1, 0,1); //단주 매수 1: 시장가 BuyList.push(종목코드); // 종목코드를 저장한다. Main.MessageList(HHMMSS,"매수주문s1 : ",종목코드); // Main.MessageLog("매수주문"); //1주종목 0현재봉 0주문가격 1시장가 } if (Signal.signalKind == 2) { //전체미체결주문 갯수 var num = Account1.GetTheNumberOfUnfills(); //전체 미체결수 만큼 루프를 돌면서 for (var i = 0; i < num; i++) { //미체결을 하나씩 셋팅하고 Account1.SetUnfill(i); //미체결종목이 신호종목과 같고 미체결수량이 있으면 if (Account1.Unfill.code == Main.GetOrderCode(Signal.code) && Account1.Unfill.count > 0) { Account1.OrderCancel(Account1.Unfill.orderNum); } } //잔고수량만큼만 매도 if (Account1.Balance.count > 0) { //Account1.OrderSell(Main.GetOrderCode(ChartEx.GetCode(1)),1,0,1); // Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,0,1); Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,0,1); // 1: 시장가 Main.MessageList(HHMMSS, "매도주문s2 : ",Main.GetOrderCode(Signal.code),Account1.Balance.count); } } } --------------------------------------------------------------------------------- 바쁘시겠지만, 수정 부탁 드립니다.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-04-15 17:45:43.0

> 원초로 님이 쓴 글입니다. > 제목 : [글번호 1034] 관련 추가 질문 > 안녕하세요? 1034에서 요청하신 아래 내용으로 ----------------------------------------------------- 2. 당일 매매를 원칙으로 작성을 하려고 합니다. A. 매도 조건은 (Timer는 어떤 단위가 좋을 것 같은지요?) 손절은 -3% - 보유수량 30%, -5% - 보유수량 40%, -7% - 보유수량 전량 수익은 3% - 보유수량 30%, 5% - 보유수량 40%, 7% - 보유수량 전량 Trailing Stop 매도: 당일 고점 대비 -3% (보유수량 50%) - 스팟으로 가능 할까요? 전일 종가 이하 : 매수가 전일 종가 이상 이면 보유수량 50% 손절 - 스팟으로 가능 할까요? B. 장종료 동시호가 전량 매도(수익,손해 나더라도) C. 상한가 전량매도(수익에 상관없이) ------------------------------------------------------------------------- 수식을 변경 요청 드립니다. 윗글의 경우는 종목이 검색되면 function Main_OnRcvMarketData(MarketData) 함수 내에서 매수를 실행하는 경우에 대해서 작성이 되었는데, 저는 파워검색으로 검색된 종목에 확장차트 시스템식을 적용해서 나오는 매수/매도 시그날을 이용해서 매매하게 코드가 되어 있습니다. 위의 예제를 참고해서 변경해 보려고 시도해 보고 있는데, 아직 실력이 미천하여 잘 안 되고 있습니다. 변경 부탁 드립니다. 아래는 제가 사용하고 있는 코드의 function Main_OnRiseSignal(ChartEx, Signal) 부분입니다. ---------------------------------------------------------------------------------- function Main_OnRiseSignal(ChartEx, Signal) { var d = new Date(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //신호발생 종목에 대해 잔고셋팅 종목코드 = Main.GetOrderCode(Signal.code) Account1.SetBalance(종목코드 ,0); var buyable = 1; // 매수가능 종목으로 설정, 당일 매수 리스트에 있으면 아래 구문에서 0으로 설정 if (BuyList.length > 0) { for (var i = 0; i < Buylist.length; i++) { if (BuyList[i] == 종목코드) { buyable = 0; // 당일 매수했던 종목 재매수 금지 } } } //매수신호이고 잔고가 없고, 당일 매수한 적이 없을 때 매수한다. if (Signal.signalKind == 1 && Account1.Balance.count == 0 && buyable == 1) { //Account1.OrderBuy(Main.GetOrderCode(ChartEx.GetCode(1)),1,0,1); // Account1.OrderBuy(Main.GetOrderCode(Signal.code),1,0,1); // Account1.OrderBuy(Main.GetOrderCode(Signal.code),Math.floor(100000/ChartEx.GetClose(1,0)),0,1); Account1.OrderBuy(종목코드, 1, 0,1); //단주 매수 1: 시장가 BuyList.push(종목코드); // 종목코드를 저장한다. Main.MessageList(HHMMSS,"매수주문s1 : ",종목코드); // Main.MessageLog("매수주문"); //1주종목 0현재봉 0주문가격 1시장가 } if (Signal.signalKind == 2) { //전체미체결주문 갯수 var num = Account1.GetTheNumberOfUnfills(); //전체 미체결수 만큼 루프를 돌면서 for (var i = 0; i < num; i++) { //미체결을 하나씩 셋팅하고 Account1.SetUnfill(i); //미체결종목이 신호종목과 같고 미체결수량이 있으면 if (Account1.Unfill.code == Main.GetOrderCode(Signal.code) && Account1.Unfill.count > 0) { Account1.OrderCancel(Account1.Unfill.orderNum); } } //잔고수량만큼만 매도 if (Account1.Balance.count > 0) { //Account1.OrderSell(Main.GetOrderCode(ChartEx.GetCode(1)),1,0,1); // Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,0,1); Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,0,1); // 1: 시장가 Main.MessageList(HHMMSS, "매도주문s2 : ",Main.GetOrderCode(Signal.code),Account1.Balance.count); } } } --------------------------------------------------------------------------------- 바쁘시겠지만, 수정 부탁 드립니다.