답변완료
오늘 날짜 저장...
안녕하세요.
종목 검색된 사항들을 별도의 파일에 저장을 하다가..
오늘 날짜와시간을 넣고 싶어서요.
var d = new Date();
var a1 = d.getFullYear();
var a2 = d.getMonth();
var a3 = d.getDate();
var a4 = d.getHours();
var a5 = d.getMinutes();
Main.PrintOnFile("load.txt", a1,a2,a3,a4,a5);
저장된 파일을보면...
2013 10 4 13 25
이렇게 나옵니다...
11월인데.. 왜 10월로 나오는걸까요???
2013-11-04
1212
글번호 222692
답변완료
문의
아래식은 1~2 가격옵션중 1에 근접한 옵션 진입식인데요.
좀 수정해서
가격기준을 1~2중 단순히 1.5 에 가장 가까운 옵션매수진입으로 수정 부탁드립니다
그리고 이게 체결될때 시장가로 체결되는지요?
감사합니다
//*************************************************
var Start;
var UNum; var LNum;
var CallCode; var CallPrice;
var PutCode; var PutPrice;
var CC; var PP;
var CallOrderCode; var PutOrderCode;
function Main_OnStart()
{
Start = 0;
}
function Chart1_OnRiseSignal(Signal)
{
UNum = Option.uppersATM;
LNum = Option.lowersATM;
CallCode = new Array(UNum+LNum+1);
PutCode = new Array(UNum+LNum+1);
CallPrice = new Array(UNum+LNum+1);
PutPrice = new Array(UNum+LNum+1);
for (var i = -LNum; i <= UNum; i++)
{
if (Option.GetCurrent(0, i) <= 2.0 && Option.GetCurrent(0, i) >= 1.0)
{
CallPrice[i+LNum] = Option.GetCurrent(0, i);
CallCode[i+LNum] = Option.GetATMCallRecent(i);
}
else
{
CallPrice[i+LNum] = 9999999;
CallCode[i+LNum] = 9999999;
}
}
for (var ii = -UNum; ii <= LNum; ii++)
{
if (Option.GetCurrent(1, ii) <= 2.0 && Option.GetCurrent(1, ii) >= 1.0)
{
PutPrice[ii+UNum] = Option.GetCurrent(1, ii);
PutCode[ii+UNum] = Option.GetATMPutRecent(ii);
}
else
{
PutPrice[ii+UNum] = 9999999;
PutCode[ii+UNum] = 9999999;
}
}
//buy신호 발생시
if (Signal.signalKind == 1)
{
Start = 1;
CC = 9999999;
CallOrderCode = 9999999;
for (var iii = -LNum; iii <= UNum; iii++)
{
if (CallPrice[iii+LNum] < CC)
{
CC = CallPrice[iii+LNum];
CallOrderCode = CallCode[iii+LNum]
}
}
if (CC < 9999999)
{
Account1.OrderBuy(CallOrderCode, 1, 0, 1);
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start);
}
else
{
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start);
}
}
// Exitlong신호 발생시
if (Start == 1 && Signal.signalKind == 2)
{
Start = 0;
if (CC > 0)
{
Account1.OrderSell(CallOrderCode, 1, 0, 1);
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start);
}
else
{
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start);
}
}
//sell신호 발생시
if (Signal.signalKind == 3)
{
Start = -1;
PP = 9999999;
PutOrderCode = 9999999;
for (var iiii = -UNum; iiii <= LNum; iiii++)
{
if (PutPrice[iiii+UNum] < PP)
{
PP = PutPrice[iiii+UNum];
PutOrderCode = PutCode[iiii+UNum];
}
}
if (PP < 9999999)
{
Account1.OrderBuy(PutOrderCode, 1, 0, 1);
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start);
}
else
{
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start);
}
}
//exitshort신호 발생시
if ( Start == -1 && Signal.signalKind == 4)
{
Start = 0;
if (PP > 0)
{
Account1.OrderSell(PutOrderCode, 1, 0, 1);
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start);
}
else
{
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start);
}
}
}
2013-11-01
1009
글번호 222687
답변완료
예상체결함수 문의드립니다.
항상수고 많으십니다.
먼저 예상체결함수 업데이트 해주셔서 감사드립니다.
다음은 8시 57분 옵션예상체결가를 바탕으로 당일의 등가격을 찾아서
동시호가에 시장가 매도하는 식인데요
문제는 예상체결가가 형성이 되지 않는 경우 오류가 발생합니다.
(예상체결가가 형성되지 않을 시 예상체결함수가 0을 리턴하는 듯합니다)
수식을 어떻게 손봐야 할지 부탁드립니다.
감사합니다
var Level ;
var ABS = new Array(20);
var ExpCall = new Array(20);
var ExpPut = new Array(20);
function Main_OnStart()
{
Main.MessageLog("------------------------------------------------------------------------------------------------------")
Main.SetTimer(1, 5000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMDD = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (nEventID == 1 && HHMMDD >= 085700 && C2.GetOpenContracts() < 0 )
{
Main.KillTimer(1);
for ( var a = -3 ; a <= 3 ; a++ ){
ExpCall[a] = Option.GetExpectedPrice( 0 , a ) ;
ExpPut[a] = Option.GetExpectedPrice( 1 , a ) ;
}
for ( var a = -3 ; a <= 3 ; a++ ){
ABS[a] = Math.abs( ExpCall[a] - ExpPut[-a] );
Main.MessageList( "(",a,")" , ABS[a] );
}
var minABS = Math.min(ABS[-3],ABS[-2],ABS[-1],ABS[0],ABS[1],ABS[2],ABS[3]);
Main.MessageList( minABS, "최소가" );
var Cnt = 0 ;
for ( var i = -3 ; i <= 3 ; i++ ){
if (ABS[i] == minABS && Cnt == 0 )
A1.OrderSell(Option.GetATMCallRecent(i),1,0,1);
Cnt = Cnt + 1 ;
}
}
}
2013-10-28
1068
글번호 222679
답변완료
선물지수로 옵션종목찾아서 진입,청산 하고 있는데..
/*스크립트시작-----------------------------------------------------*/
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);
}
}
2013-10-25
1187
글번호 222670