안녕하세요?
하기 사항 구현할 수 있는 수식 문의 드립니다.
1. 계좌 잔고에서 총 보유자산이 20% 감소시
(즉,장 시작전 잔고 대비 현 보유 잔고가 20% 이상 손실시)
모든 미체결 주문(수동 주문 포함) 취소후 모든 보유 잔고를 시장가 청산
2. 1번 상황 발생하면 이후에는 모든 신규 주문 거절(매매 금지)
답변 1
예스스탁
예스스탁 답변
2014-02-12 16:58:56
안녕하세요
예스스탁입니다.
아래 내용 참고하시기 바랍니다.
var i1;
var X;
//스팟 시작시
function Main_OnStart()
{
//i1에 예수금/예탁총액 저장
i1 = Account1.GetBalanceETCinfo(0);
X = 0;
Main.SetTimer(1, 5000);//5초 타이머 셋팅
}
function Main_OnTimer(nEventID)
{
//현재 예수금/예탁총액이 스팟시작시값보다 20% 이상 감소했으면
if (nEventID == 1 && Account1.GetBalanceETCinfo(0) <= i1*0.8)
{
//미체결주문 전체 취소
var num1 = Account1.GetTheNumberOfUnfills();
for(i = 0; i < num1; i++)
{
Account1.SetUnfillIndex(i)
Account1.OrderCancel(Account1.Unfill.orderNum);
}
//잔고 전체 종목 청산
var num2 = Account1.GetTheNumberOfBalances();
for(i = 0; i < num2; i++)
{
Account1.SetBalanceIndex(i);
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
if (Account1.Balance.count > 0 && Account1.Balance.position == 1)
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
}
X = 1;
}
}
신규주문을 막는것은 해당 주문식의 if문에 조건을 추가해야 합니다.
스팟 실행시 보다 20% 값소하면 X변수의 값이 1로 변경이 됩니다.
해당 값으로 다른 주문식에 X == 0일때만 주문이 되고 조건 추가하셔야 합니다.
즐거운 하루되세요
> lucky93 님이 쓴 글입니다.
> 제목 : 잔고 손실 관리 및 매매 금지
> 안녕하세요?
하기 사항 구현할 수 있는 수식 문의 드립니다.
1. 계좌 잔고에서 총 보유자산이 20% 감소시
(즉,장 시작전 잔고 대비 현 보유 잔고가 20% 이상 손실시)
모든 미체결 주문(수동 주문 포함) 취소후 모든 보유 잔고를 시장가 청산
2. 1번 상황 발생하면 이후에는 모든 신규 주문 거절(매매 금지)