예스스탁
예스스탁 답변
2016-03-14 17:10:51
안녕하세요
예스스탁입니다.
1
function Main_OnStart()
{
Main.SetTimer(1,5000);//5초마다 타이머 동작
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
var num =Account1.GetTheNumberOfBalances();
var CallPL = 0;
var PutPL = 0;
//잔고리스트 순번으로 잔고를 셋팅
//콜이고 매수포지션이면 손익률 합산
var cnt = 0;
Account1.SetBalance(Option1.GetCodeByExercisePrice(0, 242.0));
if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2)
{
cnt = cnt+1;
CallPL = CallPL+(Account1.Balance.current - Account1.Balance.avgUnitCost)/Account1.Balance.avgUnitCost;
}
//풋이고 매수포지션이면 손익률 합산
Account1.SetBalance(Option1.GetCodeByExercisePrice(1, 240.0));
if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2)
{
cnt = cnt+1;
PutPL = PutPL+(Account1.Balance.current - Account1.Balance.avgUnitCost)/Account1.Balance.avgUnitCost;
}
//콜풋 매수포지션 손익률이 10% 이상이면
if (CallPL+PutPL >= 0 && cnt == 2)
{
Account1.SetBalance(Option1.GetCodeByExercisePrice(0, 242.0));
if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
Account1.SetBalance(Option1.GetCodeByExercisePrice(1, 240.0));
if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
}
}
}
2-1
function Main_OnStart()
{
Main.SetTimer(1,5000);//5초마다 타이머 동작
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
var num =Account1.GetTheNumberOfBalances();
var CallPL = 0;
var PutPL = 0;
//계좌잔고에서 매수포지션인 콜과 풋의 손익률 합산
for (var i = 0; i < num; i++)
{
//잔고리스트 순번으로 잔고를 셋팅
Account1.SetBalance(i);
//콜이고 매수포지션이면 손익률 합산
if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2 && Account1.Balance.avgUnitCost >= 2.0 )
{
CallPL = CallPL+(Account1.Balance.current - Account1.Balance.avgUnitCost)/Account1.Balance.avgUnitCost;
}
//풋이고 매수포지션이면 손익률 합산
if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2 && Account1.Balance.avgUnitCost >= 2.0)
{
PutPL = PutPL+(Account1.Balance.current - Account1.Balance.avgUnitCost)/Account1.Balance.avgUnitCost;
}
}
//콜풋 매수포지션 손익률이 10% 이상이면
if (CallPL+PutPL >= 0)
{
//계좌 잔고의 콜/풋 매수포지션 모두 청산
for (var i = 0; i < num; i++)
{
//잔고리스트 순번으로 잔고를 셋팅
Account1.SetBalance(i);
//콜이고 매수포지션이면 청산
if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
//풋이고 매수포지션이면 청산
if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
}
}
}
}
2-2
function Main_OnStart()
{
Main.SetTimer(1,5000);//5초마다 타이머 동작
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
var num =Account1.GetTheNumberOfBalances();
var CallPL = 0;
var PutPL = 0;
//계좌잔고에서 매수포지션인 콜과 풋의 손익률 합산
for (var i = 0; i < num; i++)
{
//잔고리스트 순번으로 잔고를 셋팅
Account1.SetBalance(i);
//콜이고 매수포지션이면 손익률 합산
if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2 && Account1.Balance.current >= 2.0 )
{
CallPL = CallPL+(Account1.Balance.current - Account1.Balance.avgUnitCost)/Account1.Balance.avgUnitCost;
}
//풋이고 매수포지션이면 손익률 합산
if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2 && Account1.Balance.current >= 2.0)
{
PutPL = PutPL+(Account1.Balance.current - Account1.Balance.avgUnitCost)/Account1.Balance.avgUnitCost;
}
}
//콜풋 매수포지션 손익률이 10% 이상이면
if (CallPL+PutPL >= 0)
{
//계좌 잔고의 콜/풋 매수포지션 모두 청산
for (var i = 0; i < num; i++)
{
//잔고리스트 순번으로 잔고를 셋팅
Account1.SetBalance(i);
//콜이고 매수포지션이면 청산
if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
//풋이고 매수포지션이면 청산
if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
}
}
}
}
즐거운 하루되세요
> 초록이 님이 쓴 글입니다.
> 제목 : 이전글 추가문의
> 아래글에서 추가 문의합니다.
첫번째)
여기서 옵션종목을 특정하게 지정하려면 어떻게 변형합니까?
계좌내 전 종목(옵션 전종목)이 아니라,
특정옵션 종목만 지정하여 아래로직에 따라 청산하고 싶읍니다.
-> 가령, 옵션 4월물 콜종목 242.0 과 풋종목 240.0 만 선별하여
해당 종목의 매수포지션만 합산하여
아래와 같이 청산하고 싶읍니다.
두번째)
만약 특정가격(옵션 프리미엄) 이상의 옵션들만 청산한다면 어떻게 변형합니까?
예로, 매수가격이 2.00 이상인 콜,풋 매수포지션들만 조건충족시 청산하거나(case1),
현재가(조건충족시의 가격)가 2.00 이상인 것들만 청산한다면요(case2).
===========================================================
안녕하세요
예스스탁입니다.
문의하신 내용은 예스랭귀지로 구현하시기는 어렵습니다.
예스랭귀지는 차트에 적용되어 신호가 발생하는데
차트의 주종목에만 신호가 발생하고 주문이 가능하며
다른 차트의 신호상태나 손익은 알수가 없습니다.
해당 내용은 스팟에서 구현해 보셔야 합니다.
아래는 수식 가이드입니다.
아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다.
5초마다 잔고의 매수로 보유하고 있는 콜과 풋의
손익률을 합산해 10%이상이면
계좌의 매수포지션으로 보유중인 전체 콜과 풋을 모두 청산합니다.
function Main_OnStart()
{
Main.SetTimer(1,5000);//5초마다 타이머 동작
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
var num =Account1.GetTheNumberOfBalances();
var CallPL = 0;
var PutPL = 0;
//계좌잔고에서 매수포지션인 콜과 풋의 손익률 합산
for (var i = 0; i < num; i++)
{
//잔고리스트 순번으로 잔고를 셋팅
Account1.SetBalance(i);
//콜이고 매수포지션이면 손익률 합산
if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2)
{
CallPL = CallPL+(Account1.Balance.current - Account1.Balance.avgUnitCost)/Account1.Balance.avgUnitCost;
}
//풋이고 매수포지션이면 손익률 합산
if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2)
{
PutPL = PutPL+(Account1.Balance.current - Account1.Balance.avgUnitCost)/Account1.Balance.avgUnitCost;
}
}
//콜풋 매수포지션 손익률이 10% 이상이면
if (CallPL+PutPL >= 0)
{
//계좌 잔고의 콜/풋 매수포지션 모두 청산
for (var i = 0; i < num; i++)
{
//잔고리스트 순번으로 잔고를 셋팅
Account1.SetBalance(i);
//콜이고 매수포지션이면 청산
if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
//풋이고 매수포지션이면 청산
if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
}
}
}
}
즐거운 하루되세요
> 초록이 님이 쓴 글입니다.
> 제목 : 시스템 문의..
> 풋옵션과 콜옵션을 조합하여 하고 있읍니다.
합성법인 스트랭글, 스트래들 전략을 쓰고 있는데,
아래와 같이 문의합니다.
스트래들로 프리미엄이 비슷한 콜,풋옵션을
둘다 매수했을때,
양측의 손익을 합한 총 손익이 +10% 가 날때,
두 포지션 모두 청산하여 수익을 지키고 싶은데,
로직 가능합니까?
우리트레이더의 stoploss 기능은 한 포지션만 걸수 있어
콜, 풋 포지션을 따로 따로 걸어야 하기 때문에,
총 수익과 연동할수가 없읍니다.
(예컨대 콜이 +10% 수익나서 청산되도, 그때, 풋이 -10% 나면 수익 제로입니다)
콜과 풋의 손익을 합산해서 총손익이 +10% 날때
콜,풋을 모두 청산하여 수익을 지키고 싶읍니다)
가능합니까? 예스스팟까지 하여 검토 부탁합니다.