예스스탁
예스스탁 답변
2016-04-04 20:24:12
안녕하세요
예스스탁입니다.
4번의 경우에는 스팟에서 계산이 안됩니다.
해당 부분은 필요시 차트에서 지표로 계산해서 적용후에
스팟에서 지표값을 불러와 사용해야 합니다.
input : P(10);
var : ST(0),ET(0),Second(0),mav(0);
var1 = TimeToMinutes(stime)*60;
var2 = FracPortion(stime/100)*100;//시작시간 초
ST = var1+var2;
value1 = TimeToMinutes(time)*60;
value2 = FracPortion(time/100)*100;//긑시간 초
ET = value1+value2;
Second = ET-ST;
mav = ma(Second,P);
plot1(mav);
위식은 최근 10개봉의 평균완성시간을 리턴하는 지표입니다.
차트에 위 지표를 적용하고
스팟에서는 Chart1.GetIndicatorData(sIndicatorName, nPlotNum, nPlotIndex)함수로 값을 호출해 사용해야 합니다.
만약 지표이름이 "봉완성시간"이라면
Chart1.GetIndicatorData"봉완성시간",1,1)
과 같이 지정하시면 가장최근 완성봉 기준 값을 리턴받습니다.
1번,2번,3번,5번 내용은 아래식을 참고하시기 바랍니다.
현재 NH트레이더에는 정산금액이 없습니다
4월 중순경에 제공될 예정입니다.
예스스팟의 수식답변은 가이드식입니다.
참고하셔서 수정보완해 사용하시기 바랍니다.
스크립트 객체설정
옵션객체 추가 --> 속성에서 객체명은 Option, 주가지수옵션으로 지정
계좌객체 추가 --> 속성에서 객체명은 Account1, 계좌번호 지정
차트객체 추가 --> 속성에서 객체명은 Chart1, 차트와 동일아이디로 지정,
연결된 차트에는 외국인 순매수금액이 참조데이터(data2)로 추가되있어야 합니다.
var CallCode,CallPrice;
var PutCode,PutPrice;
var pst;
function Main_OnStart()
{
pst = 0;
Main.SetTimer(1, 30000); //30초 주
}
function Chart1_OnRiseSignal(Signal)
{
//매수신호 발생, 차트의 data2의 종가는 100이상
if (Signal.signalKind == 1 && Chart1.GetClose(2, 0) >= 100 )
{
var UNum = Option.uppersATM;
var LNum = Option.lowersATM;
var CC = [];
var CP = [];
for (var i = -LNum; i <= UNum; i++)
{
if (Option.GetCurrent(0, i) <= 1.5)
{
CP[i+LNum] = Option.GetCurrent(0, i);
CC[i+LNum] = Option.GetATMCallRecent(i);
}
else
{
CP[i+LNum] = -1;
CC[i+LNum] = -1;
}
}
CallPrice = -1;
CallCode = -1;
for (var i = -LNum; i <= UNum; i++)
{
if (CP[i+LNum] > CallPrice)
{
CallPrice = CP[i+LNum];
CallCode = CC[i+LNum]
}
}
if (CallPrice > 0)
{
pst = 1;
Account1.OrderBuy(CallCode, 1, Option1.GetAsk(CallCode, 5),0);
}
}
if (pst == 1 && Signal.signalKind == 2)
{
pst = 0;
Account1.OrderSell(CallCode, 1, Option1.GetBid(CallCode, 5), 0);
}
//매도신호 발생, 차트의 data2의 종가는 -100이하
if (Signal.signalKind == 3 && Chart1.GetClose(2, 0) <= -100 )
{
Start = -1
var UNum = Option.uppersATM;
var LNum = Option.lowersATM;
var PC = [];
var PP = [];
for (var i = -UNum; i <= LNum; i++)
{
if (Option.GetCurrent(0, i) <= 1.5)
{
PP[i+UNum] = Option.GetCurrent(1, i);
PC[i+UNum] = Option.GetATMPutRecent(i);
}
else//0.7~2.9 사이가 아니면
{
PP[i+UNum] = -1;
PC[i+UNum] = -1;
}
}
PutPrice = -1;
PutCode = -1;
for (var i = -UNum; i <= LNum; i++)
{
if (PP[i+LNum] > PutPrice)
{
PutPrice = PP[i+LNum];
PutCode = PC[i+LNum]
}
}
if (PutPrice > 0)
{
pst = -1;
Account1.OrderBuy(PutCode, 1, Option1.GetAsk(PutCode, 5),0);
}
}
if (pst == -1 && Signal.signalKind == 4)
{
pst = 0;
Account1.OrderSell(PutCode, 1, Option1.GetBid(PutCode, 5), 0);
}
}
//봉완성(다음봉시가수신)
function Chart1_OnBarAppended(nData)
{
//매수진입중이고 완성봉이 음봉이고 고가-저가가 0.35이상이면 청산
if (nData == 1 &&
pst == 1 &&
Chart1.GetClose(1, 1) < Chart1.GetOpen(1, 1) &&
Chart1.GetHigh(1, 1) >= Chart1.GetLow(1, 1)+0.35)
{
pst = 0;
Account1.OrderSell(CallCode, 1, Option1.GetBid(CallCode, 5), 0);
}
//매도진입중이고 완성봉이 양봉이고 고가-저가가 0.35이상이면 청산
if (nData == 1 &&
pst == -1 &&
Chart1.GetClose(1, 1) > Chart1.GetOpen(1, 1) &&
Chart1.GetHigh(1, 1) >= Chart1.GetLow(1, 1)+0.35)
{
pst = 0;
Account1.OrderSell(PutCode, 1, Option1.GetBid(PutCode, 5), 0);
}
}
function Main_OnTimer(nEventID)
{
//계좌 정산금액이 1천만 이하이면 계좌의 모든 종목 시장가로 청산
if (Account1.GetBalanceETCinfo(100) <= 10000000)
{
var num = Account1.GetTheNumberOfBalances();
for (i = 0; i < num; i++)
{
Account1.SetBalance(i);
if (Account1.Balance.count > 0 && Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count, 0,1);
}
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1);
}
}
}
}
즐거운 하루되세요
> 지나리 님이 쓴 글입니다.
> 제목 : 질문드립니다.
> 안녕하세요.
아래의 명령을 수식으로 전환부탁드릴게요.
감사합니다.
1. 계좌의 잔고가 1천만원 이하면 보유 종목(코스피선물, 옵션)을 시장가로 바로 청산한다.
2. 선물 챠트상 매수신호가 발생했고, 외국인 순매수금액(참조데이타 활용)이 100억원 이상일 때
=> 콜옵션 가격 1.5이하 종목 중 제일 큰 금액인 종목을 callcode로 정의한 후 동 콜 종목을 매수한다.
3. 선물 챠트상 매도신호가 발생했고, 외국인 순매수금액(참조데이타 활용)이 -100억원 이하일 때
=> 풋옵션 가격 1.5이하 종목 중 제일 큰 금액인 종목을 putcode로 정의한 후 동 풋 종목을 매수한다.
4. 선물 틱챠트에서 최근 틱봉 10개의 틱봉 평균완성시간을 알 수 있을까요?
5. 선물매수진입상태에서 직전 틱봉이 음봉이고, 고가 저가의 차이가 0.35이상이면 청산한다.