커뮤니티

주식 보유종목 손절

프로필 이미지
오토
2013-08-21 10:44:23
1163
글번호 222516
답변완료
안녕하세요. 주식 보유 종목중 5% 손실나면 손절을 시킬 수 있나요? 가능하다면 트레일링스탑 예제로 알려주시면 감사하겠습니다. ^^
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-08-21 20:31:58

안녕하세요 예스스탁입니다. 스팟식을 최초에 실행시키면 지정한 계좌의 모든 종목에 대해 내부적으로 종목객체를 생성하고 해당 종목들의 시세변화를 감시해 손절매(5%), 목표수익(10%), 트레일링스탑(평균단가대비 7%이상 상승후 5%선까지 하락하면 청산) 하게 작성했습니다. 스팟수식은 모두 실제 주문과 관계됨으로 저희쪽에서 완전히 테스트해 올려드릴 수는 없습니다. 아래식 참고하셔서 수정 보완해 사용하시기 바랍니다. 스팟수식안에 게시판의 금칙어가 있습니다. 영문 업데이트가 Up*date와 같이 중간에 *가 들어가 있습니다. *제거 하시고 사용하셔야 합니다. var Nth = 0; var ItemCode = []; var ItemObject = []; var ItemHigh = []; var Bnum; function Main_OnStart() { Nth = 0; Bnum = Account1.GetTheNumberOfBalances() Main.MessageList("잔고종목수",Bnum); if (Bnum > 0) { //계좌의 잔고리스트에서 첫번째 잔고 셋팅 Account1.SetBalanceIndex(Nth);//잔고는 순번이 0부터 시작 //셋팅된 잔고의 수량이 0이상이면 if (Account1.Balance.count > 0) { //1번째 종목객체 생성요청 Main.ReqMarketData(Account1.Balance.code, 0,0); //ItemCode의 [Nth]번째 방에 종목코드 저장 ItemCode[Nth] = Account1.Balance.code; Main.MessageList("종목객체요청",Account1.Balance.code); } } } //요청한 종목객체 수신되면 function Main_OnRcvMarketData(MarketData) { Main.MessageList("종목객체수신",MarketData.code); //수신받은 종목객체의 종목코드와 직전에 요청한 종목과 같은지 확인 후에 if (MarketData.code == ItemCode[Nth]) { ItemObject[Nth] = MarketData;//ItemObject의 [Nth]방에 수신받은 객체를 저장 ItemHigh[Nth] = 0; //ItemHigh의 [Nth]방의 값을 0으로 셋팅 (이후 최고값 계산해 저장할 변수) Main.MessageList(Nth,"번째","종목객체생성완료 : ",ItemObject[Nth].code); //순번은 1 증가 Nth = Nth+1; //종목객체 수신완료되면 다음 종목 종목객체 요청 if (Bnum > 0) { //계좌의 잔고리스트에서 다음 순번 잔고 셋팅 Account1.SetBalanceIndex(Nth); //셋팅된 잔고의 수량이 0이상이면 if (Account1.Balance.count > 0) { //Nth번째 종목객체 생성요청 Main.ReqMarketData(Account1.Balance.code, 0,0); //ItemCode의 [Nth]번째 방에 종목코드 저장 ItemCode[Nth] = Account1.Balance.code; Main.MessageList("종목객체요청",Account1.Balance.code); } } } } //종목객체 시세 업데이트 function Main_OnUp*dateMarket(sItemCode, lUp*dateID)// *제거 { //잔고 수 만큰 모두 종목이 생성이 된 후에 //시세 들어올때마다 각 종목 감시 if (Nth == Bnum-1) { //편입된 종목수 만&#53380;만 수행 for (var i = 0; i <= Nth; i++) { if (ItemObject[i].code == sItemCode && lUp*dateID == 20001)// *제거 { Main.MessageList("-----------------------------------------------"); Main.MessageList(ItemObject[i].code,"업데이트"); //잔고셋팅 Account1.SetBalanceItem(ItemObject[i].code,0); //종목편입 이후의 최고가 계산 if (ItemObject[i].current > ItemHigh[i]) { ItemHigh[i] = ItemObject[i].current; } //매수잔고 if (Account1.Balance.position == 2) { //현재가가 평균단가 대비 10%이상 상승하면 목표이익 매도 if (ItemObject[i].current >= Account1.Balance.avgUnitCost*1.10) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); Main.MessageList("수익청산 : ",ItemObject[i].code,"종목객체삭제"); } // 현재가가 평균단가 대비 5%이상 하락하면 손절매도 if (ItemObject[i].current <= Account1.Balance.avgUnitCost*0.95) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); Main.MessageList("손절청산 : ",ItemObject[i].code,"종목객체삭제"); } //현재가가 평균단가 대비 7% 이상 상승후 평균단가+5%까지 하락하면 매도주문 if (ItemHigh[i] >= Account1.Balance.avgUnitCost*1.07 && ItemObject[i].current <= Account1.Balance.avgUnitCost*1.05) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); Main.MessageList("TR청산 : ",ItemObject[i].code,"종목객체삭제"); } } Main.MessageList("-----------------------------------------------"); Main.MessageList("종 목 : ",ItemObject[i].code); Main.MessageList("평균단가 : ",Account1.Balance.avgUnitCost); Main.MessageList("현 재 가 : ",ItemObject[i].current); Main.MessageList("진입최고 : ",ItemHigh[i]); } } } } 즐거운 하루되세요 > 오토 님이 쓴 글입니다. > 제목 : 주식 보유종목 손절 > 안녕하세요. 주식 보유 종목중 5% 손실나면 손절을 시킬 수 있나요? 가능하다면 트레일링스탑 예제로 알려주시면 감사하겠습니다. ^^