커뮤니티

이전글 문의

프로필 이미지
초록이
2016-03-16 15:24:09
53
글번호 96320
답변완료
아래글을 예스스팟에 적용해보니 조건충족과 상관없이 자동설정하면 바로 청산됩니다. 맨 아래 처음 수식(매수가 기준 청산)은 제대로 작동되는데, 재문의 글의 답변로직(바로 아래 로직, 시초가 기준 청산)은 옵션객체(option1)를 추가했는데도 자동 걸자마자 바로 청산됩니다. -> 스트립트 객체에서 option1 추가하고, 속성에서 주가지수옵션 지정했읍니다. 원래, 조건(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 - Option1.GetOpen(Account1.Balance.code))/Option1.GetOpen(Account1.Balance.code); } //풋이고 매수포지션이면 손익률 합산(시초가기준) if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2) { PutPL = PutPL+(Account1.Balance.current - Option1.GetOpen(Account1.Balance.code))/Option1.GetOpen(Account1.Balance.code); } } //콜풋 매수포지션 손익률이 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% 청산 하려면 어떻게 해야 합니까? ================================================================= 안녕하세요 예스스탁입니다. 문의하신 내용은 예스랭귀지로 구현하시기는 어렵습니다. 예스랭귀지는 차트에 적용되어 신호가 발생하는데 차트의 주종목에만 신호가 발생하고 주문이 가능하며 다른 차트의 신호상태나 손익은 알수가 없습니다. 해당 내용은 스팟에서 구현해 보셔야 합니다. 아래는 수식 가이드입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. 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% 날때 콜,풋을 모두 청산하여 수익을 지키고 싶읍니다) 가능합니까? 예스스팟까지 하여 검토 부탁합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-03-17 13:25:34

안녕하세요 예스스탁입니다. 0% 이상이면 청산되게 되어 있었습니다. 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 - Option1.GetOpen(Account1.Balance.code))/Option1.GetOpen(Account1.Balance.code); } //풋이고 매수포지션이면 손익률 합산(시초가기준) if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2) { PutPL = PutPL+(Account1.Balance.current - Option1.GetOpen(Account1.Balance.code))/Option1.GetOpen(Account1.Balance.code); } } //콜풋 매수포지션 손익률이 10% 이상이면 if (CallPL+PutPL >= 10) { //계좌 잔고의 콜/풋 매수포지션 모두 청산 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); } } } } } 즐거운 하루되세요 > 초록이 님이 쓴 글입니다. > 제목 : 이전글 문의 > 아래글을 예스스팟에 적용해보니 조건충족과 상관없이 자동설정하면 바로 청산됩니다. 맨 아래 처음 수식(매수가 기준 청산)은 제대로 작동되는데, 재문의 글의 답변로직(바로 아래 로직, 시초가 기준 청산)은 옵션객체(option1)를 추가했는데도 자동 걸자마자 바로 청산됩니다. -> 스트립트 객체에서 option1 추가하고, 속성에서 주가지수옵션 지정했읍니다. 원래, 조건(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 - Option1.GetOpen(Account1.Balance.code))/Option1.GetOpen(Account1.Balance.code); } //풋이고 매수포지션이면 손익률 합산(시초가기준) if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2) { PutPL = PutPL+(Account1.Balance.current - Option1.GetOpen(Account1.Balance.code))/Option1.GetOpen(Account1.Balance.code); } } //콜풋 매수포지션 손익률이 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% 청산 하려면 어떻게 해야 합니까? ================================================================= 안녕하세요 예스스탁입니다. 문의하신 내용은 예스랭귀지로 구현하시기는 어렵습니다. 예스랭귀지는 차트에 적용되어 신호가 발생하는데 차트의 주종목에만 신호가 발생하고 주문이 가능하며 다른 차트의 신호상태나 손익은 알수가 없습니다. 해당 내용은 스팟에서 구현해 보셔야 합니다. 아래는 수식 가이드입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. 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% 날때 콜,풋을 모두 청산하여 수익을 지키고 싶읍니다) 가능합니까? 예스스팟까지 하여 검토 부탁합니다.