커뮤니티

수식 수정 부탁합니다

프로필 이미지
팡팡
2025-02-03 18:13:26.0
308
글번호 226198
답변완료
수고하십니다. 1. 옵션 종목을 매수하고 청산신호 발생시 아래(예시1)와 같이 잔고 모든종목을 청산하는데 2종목을 매수한 경우 해당 종목만 청산하는 수식 부탁합니다. 예를 들어 시스템1 325.0 매수, 시스템2 327.5 매수 일 경우 시스템1은 325.0 만 청산되는 수식, 시스템2는 327.5만 청산 각자 독립적 청산되는 수식 2. 양매수, 매수 경우 잔고 손익 일정금액 초과시 청산되는 수식으로 수정 부탁합니다. 작동 안됨(예시 2) 예시1)---------------------------- if (Signal.signalKind == 2 ) { Main.MessageList("매수청산신호발생"); { //잔고를 세팅 A1.SetBalance(CallOrderCode, 0); //보유종목수 var num = A1.GetTheNumberOfBalances(); if (num > 0) { for (var i = 0; i < num; i++) { A1.SetBalance(i); if (A1.Balance.count > 0) { if (A1.Balance.position == 2) { A1.OrderSell(A1.Balance.code,A1.Balance.count,0,1); } } } } } } 예시2)---------------------------- // 옵션매수포지션 전체 손익계산 var num = A1.GetTheNumberOfBalances(); var PLsum = 0; for(var i = 0; i < num; i++) { //잔고셋팅 A1.SetBalanceIndex(i); //매수포지션이고 옵션종목이고 if (A1.Balance.position == 2 && (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 >= 500000 || PLsum <= -500000) { for(var i = 0; i < num; i++) { //잔고셋팅 A1.SetBalanceIndex(i); //매수포지션이고 옵션종목이고 if (A1.Balance.position == 2 && (A1.Balance.code.substring(0,1) == "2" || A1.Balance.code.substring(0,1) == "3")) { A1.OrderSell(A1.Balance.code, A1.Balance.count, 0,1); } } } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-02-19 13:38:57.0

> 팡팡 님이 쓴 글입니다. > 제목 : 수식 수정 부탁합니다 > 수고하십니다. 1. 옵션 종목을 매수하고 청산신호 발생시 아래(예시1)와 같이 잔고 모든종목을 청산하는데 2종목을 매수한 경우 해당 종목만 청산하는 수식 부탁합니다. 예를 들어 시스템1 325.0 매수, 시스템2 327.5 매수 일 경우 시스템1은 325.0 만 청산되는 수식, 시스템2는 327.5만 청산 각자 독립적 청산되는 수식 2. 양매수, 매수 경우 잔고 손익 일정금액 초과시 청산되는 수식으로 수정 부탁합니다. 작동 안됨(예시 2) 예시1)---------------------------- if (Signal.signalKind == 2 ) { Main.MessageList("매수청산신호발생"); { //잔고를 세팅 A1.SetBalance(CallOrderCode, 0); //보유종목수 var num = A1.GetTheNumberOfBalances(); if (num > 0) { for (var i = 0; i < num; i++) { A1.SetBalance(i); if (A1.Balance.count > 0) { if (A1.Balance.position == 2) { A1.OrderSell(A1.Balance.code,A1.Balance.count,0,1); } } } } } } 예시2)---------------------------- // 옵션매수포지션 전체 손익계산 var num = A1.GetTheNumberOfBalances(); var PLsum = 0; for(var i = 0; i < num; i++) { //잔고셋팅 A1.SetBalanceIndex(i); //매수포지션이고 옵션종목이고 if (A1.Balance.position == 2 && (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 >= 500000 || PLsum <= -500000) { for(var i = 0; i < num; i++) { //잔고셋팅 A1.SetBalanceIndex(i); //매수포지션이고 옵션종목이고 if (A1.Balance.position == 2 && (A1.Balance.code.substring(0,1) == "2" || A1.Balance.code.substring(0,1) == "3")) { A1.OrderSell(A1.Balance.code, A1.Balance.count, 0,1); } } } }