안녕하세요?
수동으로 매수 또는 매도시 계좌를 감시하다 강제로 일정 금액 이상 Loss 시
청산하는 기능이 될까요?
꼭 필요한 기능인데...
부탁드립니다.
답변 1
예스스탁
예스스탁 답변
2021-02-26 16:11:13
안녕하세요
예스스탁입니다.
1
문의하신 내용이 계좌의 현재 정산금액이 기준이시면 아래와 같습니다.
잔고에서 오늘 시초에 계좌평가금액은 알수 없으므로
스팟 시작할때의 값대비로 작성해 드립니다.
var 감소액 = 10000000;
var StartValue,curValue;
//스팟시작
function Main_OnStart()
{
//스팟시작시 정산금액
StartValue = Account1.GetBalanceETCinfo(100);
//1번 타이머 5초 셋팅
Main.SetTimer(1, 5000);
}
//타이머동작
function Main_OnTimer(nEventID)
{
//1번 타이머 동작
if (nEventID == 1)
{
//현재 정산긍맥
curValue = Account1.GetBalanceETCinfo(100);
//현재 정산금액이 스팟시작시정산금액대비-감소액 이하이면
if (curValue <= StartValue-감소액)
{
//타이머 종료
Main.KillTimer(1);
//잔고보유종목수
var num = Account1.GetTheNumberOfBalances();
//보유종목이 1개 이상이면
if (num >= 1)
{
//전종목 시장가로 청산
for (var i = 0; i < num; i++)
{
Account1.SetBalance(i);
if (Account1.Balance.position == 2 && Account1.Balance.count > 0)
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
}
if (Account1.Balance.position == 1 && Account1.Balance.count > 0)
{
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
}
}
}
}
}
}
2
문의하신 내용이 개별종목에 대한 losscut이면 아래와 같습니다.
5초간격으로 잔고체크해 10%이상 손실이면 청산하는 식입니다.
//스팟시작
function Main_OnStart()
{
//1번 타이머 5초 셋팅
Main.SetTimer(1, 5000);
}
//타이머동작
function Main_OnTimer(nEventID)
{
//1번 타이머 동작
if (nEventID == 1)
{
var num = Account1.GetTheNumberOfBalances();
//보유종목이 1개 이상이면
if (num >= 1)
{
//전종목 시장가로 청산
for (var i = 0; i < num; i++)
{
Account1.SetBalance(i);
if (Account1.Balance.position == 2 && Account1.Balance.count > 0 && Account1.Balance.current <= Account1.Balance.avgUnitCost*0.90)
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
}
if (Account1.Balance.position == 1 && Account1.Balance.count > 0 && Account1.Balance.current <= Account1.Balance.avgUnitCost*0.90)
{
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
}
}
}
}
}
즐거운 하루되세요
> 쌈팔광땡 님이 쓴 글입니다.
> 제목 : 계좌 감시 기능
> 안녕하세요?
수동으로 매수 또는 매도시 계좌를 감시하다 강제로 일정 금액 이상 Loss 시
청산하는 기능이 될까요?
꼭 필요한 기능인데...
부탁드립니다.