수고하십니다.
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);
}
}
}
}