커뮤니티
이렇게 하면 될까요?
2013-10-25 21:13:56
173
글번호 68879
/*스크립트시작-----------------------------------------------------*/
var Vol;
var UNum; var LNum;
var CallCode; var CallPrice;
var PutCode; var PutPrice;
var CC; var PP;
var CallOrderCode; var PutOrderCode;
//선물지수 차트의 진입/청산 기준을 이용하여
//프리미엄 3.0 이하의 콜옵션과 풋옵션중에 3.0 에 가장 근접하는 콜/풋 종목을 찾고
//선물지수 차트의 기준에 따라 매매할려고 하는데,
//3.0 이하에서 가장 3.0 에 근접하는 종목이 찾아져서 매매에 적용되는지?
//또한 적용된 옵션의 진입/청산가격은 선물지수차트의 기준대로 실행되는지를
//검증하려고 다음과 같이 수식을 만들었습니다.
//테스트를 해 본 결과
//3.0 이하의 종목중 3.0 에 가장 근접하는 작업은 잘 이루어 지는 듯 한데
//그 진입종목과 진입가격 또는 청산종목과 청산가격이 제대로 출력이 안 되는 듯 합니다.
function Main_OnStart()
{
Main.MessageLog("시작");
}
if ( 콜옵션 신규진입조건~~~)
{ //옵션 3.0 이하 종목 중 3.0 에 가장 가까운 콜/풋 종목을 찾음
UNum = Option.uppersATM;
LNum = Option.lowersATM;
CallCode = new Array(UNum+LNum+1);
CallPrice = new Array(UNum+LNum+1);
PutCode = new Array(UNum+LNum+1);
PutPrice = new Array(UNum+LNum+1);
// 콜종목 찾기
for (var i = -LNum; i <= UNum; i++)
{
//값이 3.0 이하이면
if (Option.GetCurrent(0, i) <= 3.0)
{
CallPrice[i+LNum] = Option.GetCurrent(0, i);
CallCode[i+LNum] = Option.GetATMCallRecent(i);
}
else //값이 3.0 보다 크면
{
CallPrice[i+LNum] = -1;
CallCode[i+LNum] = -1;
}
}
var CC = -1;
var CallOrderCode = -1;
for (var iii = -LNum; iii <= UNum; iii++)
{
if (CallPrice[iii+LNum] > CC)
{
CC = CallPrice[iii+LNum];
CallOrderCode = CallCode[iii+LNum];
}
}
//콜매수(이때 디버깅창에서 진입옵션종목 과 그 진입가격을 확인하고자
//다음과 같이 "CallOrderCode" 와 Option.GetCurrentByCode(CallOderCode)를
//메세지리스트에 삽입하여 출력하는데 defined 나 NaN 이라는 에러메세지만
//뜹니다.)
if (CC > -1)
{
Main.MessageList("CALL옵션 매수신호 발생");
Account1.OrderBuy(CallOrderCode, Vol, Option.GetCurrentByCode(CallOrderCode), 0);
Main.MessageList("CALL옵션 신규매수 진입",CallOrderCode,Option.GetCurrentByCode(CallOrderCode),Vol);
}
}
if (콜옵션 매수청산 조건~~~)
//콜매수 청산 (이때 디버깅창에서 청산되는 옵션종목(진입했던)) 과 그 청산가격을 확인하고자
//다음과 같이 "CallOrderCode" 와 Option.GetCurrentByCode(CallOderCode)를
//메세지리스트에 삽입하여 출력하는데 defined 나 NaN 이라는 에러메세지만
//뜹니다.)
{
Main.MessageList("CALL옵션 매수청산신호 발생");
Account1.OrderSell(CallOrderCode, Vol, Option.GetCurrentByCode(CallOrderCode), 0);
Main.MessageList("CALL옵션 매수청산 실행",CallOrderCode,Option.GetCurrentByCode(CallOrderCode),Vol);
}
}
답변 1
예스스탁 예스스탁 답변
2013-10-28 11:05:41
안녕하세요
예스스탁입니다.
예스스팟 문의는 예스스팟 Q&A에만 올려주시기 바랍니다.
동일 내용을 예스스팟 Q&A에 올려주셨으므로
해당 게시판에서 순차적으로 답변드리겠습니다.
즐거운 하루되세요
> 마루아빠 님이 쓴 글입니다.
> 제목 : 이렇게 하면 될까요?
>
/*스크립트시작-----------------------------------------------------*/
var Vol;
var UNum; var LNum;
var CallCode; var CallPrice;
var PutCode; var PutPrice;
var CC; var PP;
var CallOrderCode; var PutOrderCode;
//선물지수 차트의 진입/청산 기준을 이용하여
//프리미엄 3.0 이하의 콜옵션과 풋옵션중에 3.0 에 가장 근접하는 콜/풋 종목을 찾고
//선물지수 차트의 기준에 따라 매매할려고 하는데,
//3.0 이하에서 가장 3.0 에 근접하는 종목이 찾아져서 매매에 적용되는지?
//또한 적용된 옵션의 진입/청산가격은 선물지수차트의 기준대로 실행되는지를
//검증하려고 다음과 같이 수식을 만들었습니다.
//테스트를 해 본 결과
//3.0 이하의 종목중 3.0 에 가장 근접하는 작업은 잘 이루어 지는 듯 한데
//그 진입종목과 진입가격 또는 청산종목과 청산가격이 제대로 출력이 안 되는 듯 합니다.
function Main_OnStart()
{
Main.MessageLog("시작");
}
if ( 콜옵션 신규진입조건~~~)
{ //옵션 3.0 이하 종목 중 3.0 에 가장 가까운 콜/풋 종목을 찾음
UNum = Option.uppersATM;
LNum = Option.lowersATM;
CallCode = new Array(UNum+LNum+1);
CallPrice = new Array(UNum+LNum+1);
PutCode = new Array(UNum+LNum+1);
PutPrice = new Array(UNum+LNum+1);
// 콜종목 찾기
for (var i = -LNum; i <= UNum; i++)
{
//값이 3.0 이하이면
if (Option.GetCurrent(0, i) <= 3.0)
{
CallPrice[i+LNum] = Option.GetCurrent(0, i);
CallCode[i+LNum] = Option.GetATMCallRecent(i);
}
else //값이 3.0 보다 크면
{
CallPrice[i+LNum] = -1;
CallCode[i+LNum] = -1;
}
}
var CC = -1;
var CallOrderCode = -1;
for (var iii = -LNum; iii <= UNum; iii++)
{
if (CallPrice[iii+LNum] > CC)
{
CC = CallPrice[iii+LNum];
CallOrderCode = CallCode[iii+LNum];
}
}
//콜매수(이때 디버깅창에서 진입옵션종목 과 그 진입가격을 확인하고자
//다음과 같이 "CallOrderCode" 와 Option.GetCurrentByCode(CallOderCode)를
//메세지리스트에 삽입하여 출력하는데 defined 나 NaN 이라는 에러메세지만
//뜹니다.)
if (CC > -1)
{
Main.MessageList("CALL옵션 매수신호 발생");
Account1.OrderBuy(CallOrderCode, Vol, Option.GetCurrentByCode(CallOrderCode), 0);
Main.MessageList("CALL옵션 신규매수 진입",CallOrderCode,Option.GetCurrentByCode(CallOrderCode),Vol);
}
}
if (콜옵션 매수청산 조건~~~)
//콜매수 청산 (이때 디버깅창에서 청산되는 옵션종목(진입했던)) 과 그 청산가격을 확인하고자
//다음과 같이 "CallOrderCode" 와 Option.GetCurrentByCode(CallOderCode)를
//메세지리스트에 삽입하여 출력하는데 defined 나 NaN 이라는 에러메세지만
//뜹니다.)
{
Main.MessageList("CALL옵션 매수청산신호 발생");
Account1.OrderSell(CallOrderCode, Vol, Option.GetCurrentByCode(CallOrderCode), 0);
Main.MessageList("CALL옵션 매수청산 실행",CallOrderCode,Option.GetCurrentByCode(CallOrderCode),Vol);
}
}