예스스탁
예스스탁 답변
2018-08-28 14:32:05
안녕하세요
예스스탁입니다.
스팟은 식작성의 흐름에 대한 단순한 가이드입니다.
아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다.
1
스크립트 객체셜정
계좌객체 추가 --> 속성에서 객체명은 Account1, 주문낼 계좌번호 지정
옵션객체 추가 --> 속성에서 객체명은 Option1, 주가지수 옵션으로 지정
종목객체 추가 --> 속성에서 객체명은 MarketData1, 연결선물지수로 지정
function Main_OnStart()
{
Main.SetTimer(1, 5000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (nEventID == 1 && HHMMSS >= 150000)
{
Main.KillTimer(1);
var num = Account1.GetTheNumberOfBalances();
if (num > 0)
{
for (var i = 0; i < num; i++)
{
Account1.SetBalance(i);
if (Option1.GetCurrent(Account1.Balance.code) > 0)
{
if (Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, Option1.GetAsk(Account1.Balance.code,5),0);
}
if (Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, Option1.GetBid(Account1.Balance.code,5),0)
}
}
else
{
if (Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, MarketData1.Ask(5),0);
}
if (Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,MarketData1.Bid(5),0)
}
}
}
}
}
}
2
스크립트 객체셜정
계좌객체 추가 --> 속성에서 객체명은 Account1, 주문낼 계좌번호 지정
옵션객체 추가 --> 속성에서 객체명은 Option1, 주가지수 옵션으로 지정
function Main_OnStart()
{
Main.SetTimer(1, 5000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (nEventID == 1 && HHMMSS >= 150000)
{
Main.KillTimer(1);
var num = Account1.GetTheNumberOfBalances();
if (num > 0)
{
for (var i = 0; i < num; i++)
{
Account1.SetBalance(i);
if (Option1.GetCurrent(Account1.Balance.code) > 0)
{
if (Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, Option1.GetAsk(Account1.Balance.code,5),0);
}
if (Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, Option1.GetBid(Account1.Balance.code,5),0)
}
}
}
}
}
}
3-1
스크립트 객체셜정
계좌객체 추가 --> 속성에서 객체명은 Account1, 주문낼 계좌번호 지정
옵션객체 추가 --> 속성에서 객체명은 Option1, 주가지수 옵션으로 지정
종목객체 추가 --> 속성에서 객체명은 MarketData1, 연결선물지수로 지정
function Main_OnStart()
{
Main.SetTimer(1, 5000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (nEventID == 1 && HHMMSS >= 150000)
{
Main.KillTimer(1);
var num = Account1.GetTheNumberOfBalances();
if (num > 0)
{
sum = 0;
for (var i = 0; i < num; i++)
{
Account1.SetBalance(i);
if (Account1.Balance.position == 1)
{
sum = sum + (Account1.Balance.avgUnitCost-Account1.Balance.current)*Account1.Balance.count;
}
if (Account1.Balance.position == 2)
{
sum = sum + (Account1.Balance.current-Account1.Balance.avgUnitCost)*Account1.Balance.count;
}
}
if (sum*250000 >= 1000000)
{
if (Option1.GetCurrent(Account1.Balance.code) > 0)
{
if (Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, Option1.GetAsk(Account1.Balance.code,5),0);
}
if (Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, Option1.GetBid(Account1.Balance.code,5),0)
}
}
else
{
if (Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, MarketData1.Ask(5),0);
}
if (Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,MarketData1.Bid(5),0)
}
}
}
}
}
}
3-2
스크립트 객체셜정
계좌객체 추가 --> 속성에서 객체명은 Account1, 주문낼 계좌번호 지정
옵션객체 추가 --> 속성에서 객체명은 Option1, 주가지수 옵션으로 지정
종목객체 추가 --> 속성에서 객체명은 MarketData1, 연결선물지수로 지정
function Main_OnStart()
{
Main.SetTimer(1, 5000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (nEventID == 1 && HHMMSS >= 150000)
{
Main.KillTimer(1);
var num = Account1.GetTheNumberOfBalances();
if (num > 0)
{
sum = 0;
for (var i = 0; i < num; i++)
{
Account1.SetBalance(i);
if (Account1.Balance.position == 1)
{
sum = sum + (Account1.Balance.avgUnitCost-Account1.Balance.current)/Account1.Balance.avgUnitCost * 100;
}
if (Account1.Balance.position == 2)
{
sum = sum + (Account1.Balance.current-Account1.Balance.avgUnitCost)*Account1.Balance.avgUnitCost * 100;
}
}
if (sum >= 30)
{
if (Option1.GetCurrent(Account1.Balance.code) > 0)
{
if (Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, Option1.GetAsk(Account1.Balance.code,5),0);
}
if (Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, Option1.GetBid(Account1.Balance.code,5),0)
}
}
else
{
if (Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, MarketData1.Ask(5),0);
}
if (Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,MarketData1.Bid(5),0)
}
}
}
}
}
}
4
스크립트 객체셜정
계좌객체 추가 --> 속성에서 객체명은 Account1, 주문낼 계좌번호 지정
옵션객체 추가 --> 속성에서 객체명은 Option1, 주가지수 옵션으로 지정
function Main_OnStart()
{
Main.SetTimer(1, 5000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (nEventID == 1 && HHMMSS >= 150000)
{
Main.KillTimer(1);
var num = Account1.GetTheNumberOfBalances();
if (num > 0)
{
var CC = "";
var CD = 9999999999;
var CV = 0;
var PP = "";
var PD = 9999999999;
var PV = 0;
for (var i = 0; i < num; i++)
{
Account1.SetBalance(i);
if (Option1.GetCurrent(Account1.Balance.code) > 0 && Account1.Balance.position == 1)
{
var Call = false;
for (var z = Option1.lowersATM; z <= Option1.uppersATM; z++)
{
if (Account1.Balance.code == Option1.GetATMCallRecent(z, 0))
{
Call = true;
}
}
if (Call == true)
{
if (Math.abs(Option1.GetCurrent(Account1.Balance.code)-0.3) < CD)
{
CD = Math.abs(Option1.GetCurrent(Account1.Balance.code)-0.3);
CC = Account1.Balance.code;
CV = Account1.Balance.count;
}
}
else
{
if (Math.abs(Option1.GetCurrent(Account1.Balance.code)-0.3) < PD)
{
PD = Math.abs(Option1.GetCurrent(Account1.Balance.code)-0.3);
PP = Account1.Balance.code;
PV = Account1.Balance.count;
}
}
}
}
if (CV > 0)
{
Account1.OrderBuy(CC, CV,Option1.GetAsk(CC,5),0);
}
if (PV < 0)
{
Account1.OrderBuy(PP, PV,Option1.GetAsk(PP,5),0);
}
}
}
}
즐거운 하루되세요
> 탄젠트80 님이 쓴 글입니다.
> 제목 : 청산전용 수식 부탁드립니다.
> 안녕하세요
답변주신 내용 활용하여 잘 매매하고 있는 투자자입니다.
청산전용에 관한 스팟수식 몇가지 초보임을 감안하여 답변부탁드립니다.
1. 동일 계좌안에 파생상품으로만(선물, 옵션, 미니선물, 미니옵션 등 매수 또는 매도포지션)을 다양하게 가진 상태에서 15시에 모든 종목을 일괄 5호가로 전부 청산하는 청산전용 스팟수식 부탁드립니다.
2. 동일 계좌안에 있는 여러 파생상품 중 옵션 종목(또는 미니옵션)만 골라서 15시에 콜풋 매수/매도 포지션 모두 5호가로 청산하는 청산전용 스팟수식
3.-1 동일 선물옵션 계좌의 평가손익이 100만원 이상일 때 1번 문의사항과 같이 보유종목 전체를 5호가로 청산하는 스팟전용 수식
3.-2 동일 선물옵션 계좌의 매입총액 대비 평가손익인 평가수익율이 30% 이상일 때 1번 문의사항과 같이 파생상품 전체를 5호가로 청산하는 스팟전용 수식
4. 15시에 계좌의 포지션을 파악하여 보유하고 있는 옵션 종목중 0.3P 가장 가까운 콜, 풋옵션 매도포션을 종목 5호가로 매도청산(매수)하는 스팟전용 수식
질문사항이 좀 많은데 꼭 필요한 수식이니 답변 정중히 부탁드리며 미리 감사드립니다.
수고하세요