Search
📝

예제23. 계좌손절/계좌익절

아래 예제는 계좌 평가금액(정산금액)이 일정값 이상 상승하거나(계좌익절) 일정값 이하 하락하면(계좌손절) 보유 종목 전체를 청산하는 식입니다.
1.
전략내용
정산금액이 스팟시작시점대비 20% 상승하거나 20%하락하면 보유 종목 일괄 청산
2.
스크립트 객체화면 설정
계좌객체를 추가한 후 속서에서 객체명은 A1으로 지정하고 계좌번호로 지정합니다.
3.
스팟수식
var 감시시작시간 = 90000; var 감시종료시간 = 153000; var 계좌수익률 = 20; var 계좌손실률 = -20; var StartMoney; function Main_OnStart() { Main.MessageList("시작") Main.SetTimer(1, 5000); //스팟 시작시점 정산금액(순자산총액) StartMoney = Account1.GetBalanceETCinfo(100); Main.MessageList("시작시점 정산금액(순자산총액):",StartMoney) } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1) { if (HHMMSS >= 감시시작시간 && HHMMSS < 감시종료시간) { //현재 정산금액(순자산총액) var CurrentMoney = Account1.GetBalanceETCinfo(100); var CurrentMoney = AA; //등락률 var R = (CurrentMoney-StartMoney)/StartMoney*100; //계좌보유 종목수 var num = Account1.GetTheNumberOfBalances(); Main.MessageList("현재:",CurrentMoney,"등락률:",R,"보유종목수:",num); if (R >= 계좌수익률 && num > 0) { Main.KillTimer(1); Main.MessageList("계좌 지정% 수익발생 -> 타이머 종료 -> 전종목 청산"); for(var i = 0; i < num; i++) { Account1.SetBalanceIndex(i); if (Account1.Balance.position == 1) Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1); if (Account1.Balance.position == 2) Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1); } } if (R <= 계좌손실률 && num > 0) { Main.KillTimer(1); Main.MessageList("계좌 지정% 손실발생 -> 타이머 종료-> 전종목 청산"); for(var i = 0; i < num; i++) { Account1.SetBalanceIndex(i); if (Account1.Balance.position == 1) Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1); if (Account1.Balance.position == 2) Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1); } } } if (HHMMSS >= 감시종료시간) { Main.MessageList("감시종료시간 -> 타이머 종료"); Main.KillTimer(1); } } }
JavaScript
복사