많은 도움 받고 있습니다.
종목에 관계 없이 매수, 매도한 잔고를 5초마다 합산해서 -50만원에 손절, 50만원에 익절 하는식 원합니다.
예시는 매도포지션 일때 청산식인데 매도와 매수한 가격을 합산하여 청산하는 식 원합니다.
예시) 옵션매도포지션 전체 손익계산
var num = A1.GetTheNumberOfBalances();
var PLsum = 0;
for(var i = 0; i < num; i++)
{
//잔고셋팅
A1.SetBalanceIndex(i);
//매도포지션이고 옵션종목이고
if (A1.Balance.position == 1 && (A1.Balance.code.substring(0,1) == "2" || A1.Balance.code.substring(0,1) == "3"))
{
//각 옵션매도종목의 (평균단가-현재가)*수량*50만원을 누적
PLsum = PLsum + ((A1.Balance.avgUnitCost - A1.Balance.current)*A1.Balance.count)*250000;
}
}
//손익이 +50만원이상이거나 -50만원 이하이면
if (PLsum >= 100000 || PLsum <= -100000)
{
for(var i = 0; i < num; i++)
{
//잔고셋팅
A1.SetBalanceIndex(i);
//매도포지션이고 옵션종목이고
if (A1.Balance.position == 1 && (A1.Balance.code.substring(0,1) == "2" || A1.Balance.code.substring(0,1) == "3"))
{
A1.OrderBuy(A1.Balance.code, A1.Balance.count, 0,1);
}
}
}
답변 1
예스스탁
예스스탁 답변
2021-12-15 15:58:41.0
안녕하세요
예스스탁입니다.
문의하신 내용은 계좌의 손익이므로
계좌의 자산총액을 가져와 이용하시면 됩니다.
아래 내용 참고하시기 바랍니다.
영문 업데이트가 게시판 금칙어이므로
수식에 Up*date와 같이 *이 추가되어 있습니다.
삭제하고 사용하셔야 합니다.
var Initial, Exit;
//스팟시작
function Main_OnStart()
{
//시작시점 자산총액 저장
Initial = Account1.GetBalanceETCinfo(100);
Exit = false;
//타이머 동작 5초
Main.SetTimer(1, 5000);
}
//타이머 동작
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
//계좌 재조회
Account1.Refresh();
RF = true;
}
}
//계좌변동
function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID)//*삭제
{
//RF는 true이고 Exit은 false이고 계좌변동아이디는 계좌재조회(2000)
if (RF == true && Exit == false && lUp*dateID == 20000)//*삭제
{
//false
RF = false;
//현재 자산총액이 시작시 자산총액대비 50만원이상 증가했거나 감소했으면
if (Account1.GetBalanceETCinfo(100) >= initial+500000 ||
Account1.GetBalanceETCinfo(100) <= initial-500000)
{
//Exit변수 true
Exit = true;
//계좌 전종목 청산
var num = Account1.GetTheNumberOfBalances();
if (num > 0)
{
for(var i = 0; i < num; i++)
{
Account1.SetBalance(i);
if (Account1.Balance.count > 0 && Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,Account1.Balance.current,0);
}
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
{
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,Account1.Balance.current,0);
}
}
}
}
}
}
즐거운 하루되세요
> 팡팡 님이 쓴 글입니다.
> 제목 : 수식 문의합니다
> 많은 도움 받고 있습니다.
종목에 관계 없이 매수, 매도한 잔고를 5초마다 합산해서 -50만원에 손절, 50만원에 익절 하는식 원합니다.
예시는 매도포지션 일때 청산식인데 매도와 매수한 가격을 합산하여 청산하는 식 원합니다.
예시) 옵션매도포지션 전체 손익계산
var num = A1.GetTheNumberOfBalances();
var PLsum = 0;
for(var i = 0; i < num; i++)
{
//잔고셋팅
A1.SetBalanceIndex(i);
//매도포지션이고 옵션종목이고
if (A1.Balance.position == 1 && (A1.Balance.code.substring(0,1) == "2" || A1.Balance.code.substring(0,1) == "3"))
{
//각 옵션매도종목의 (평균단가-현재가)*수량*50만원을 누적
PLsum = PLsum + ((A1.Balance.avgUnitCost - A1.Balance.current)*A1.Balance.count)*250000;
}
}
//손익이 +50만원이상이거나 -50만원 이하이면
if (PLsum >= 100000 || PLsum <= -100000)
{
for(var i = 0; i < num; i++)
{
//잔고셋팅
A1.SetBalanceIndex(i);
//매도포지션이고 옵션종목이고
if (A1.Balance.position == 1 && (A1.Balance.code.substring(0,1) == "2" || A1.Balance.code.substring(0,1) == "3"))
{
A1.OrderBuy(A1.Balance.code, A1.Balance.count, 0,1);
}
}
}