커뮤니티
예스스팟 Q&A
관리자에 의해 프로그램 사용법 QnA로 이동되었습니다
2013-11-27
13
글번호 222726
답변완료
수식 문의 드립니다
1. 아래는 저번에 선물차트 신호로 옵션진입하는 로직을 작성하여 주신 내용입니다. 이번에는 는 옵션차트의 신호를 보고 옵션에 주문을 넣는 주문을 부탁드립니다. 옵션차트신호가 매수신호일 때, 옵션차트종목보다 +2단계 위의 옵션종목을 매도합니다. 옵션차트신호가 매도신호일 때 옵션차트종목보다 -2단계 아래 옵션종목을 매수합니다.
2. 당일매매가 아니고 포지션전략이므로 예스스팟이 꺼졌다 다시 켜져도 위에서 진입했던 동일종목이 청산과 반전이 되도로 로직 부탁드립니다.
3. 데이타 매니저에 코스피 연결선물이나 월물별 코스피 선물 종목추가하는 방법 좀 안내 부탁드립니다.
안녕하세요
예스스탁입니다.
차트의 신호로 보고 옵션에 주문을 넣으시므로
시크립트 객체화면에 총 3개의 객체가 필요합니다.
옵션객체 추가 --> 속성에서 지정하실 부분이 없습니다
차트객체 추가 --> 속성에서 객체명은 Chart1, 차트아이디는 차트와 동일한 이름으로 지정
계좌객체 추가 --> 속성에서 객체명은 Account1, 계좌변호는 거래하고자 하는 선옵계좌를 지정
아래는 수식내용입니다.
var Start = 0;
var SelCallCode;
var SelCallPrice;
var SelCallVol;
var SellPutCode;
var SellPutPrice;
var SellPutVol;
function Main_OnStart()
{
Start = 0;
}
function Chart1_OnRiseSignal(Signal)
{
//차트에서 매수신호 발생하면 콜 매수
if (Signal.signalKind ==1)
{
Start = 1;
SellCallCode = Option.GetATMCallRecent(0);//주문종목 : ATM콜 종목코드
SellCallPrice = Option.GetBidByCode(SellCallCode, 2);//주문가격 매수2호가
SelCallVol = Signal.count;//주문수량 : 차트신호의 수량
Account1.OrderSell(SellCallCode,SelCallVol, SellCallPrice, 0);
Main.MessageList("등가콜매도 : "+SellCallCode);
}
//차트에서 매수청산신호 발생하면 콜매도 청산
if (Start == 1 && Signal.signalKind == 2)
{
//매도2호가로 청산
Account1.OrderBuy(SellCallCode, SelCallVol, Option.GetAskByCode(SellCallCode, 2), 0);
Main.MessageList("콜청산 : ",SellCallCode);
}
//선물차트에서 매도신호 발생하면 풋 매수
if (Signal.signalKind ==3)
{
Start =1;
SellPutCode = Option.GetATMPutRecent(0);//주문종목 : ATM풋 종목코드
SellPutPrice = Option.GetBidByCode(SellPutCode, 2);//주문가격 : 매수 2호가
SellPutVol = Signal.count; //수량 : 차트신호의 수량
Account1.OrderSell(SellPutCode, Signal.count, SellPutPrice, 0);
Main.MessageList("등가풋매도 : "+SellPutCode);
}
//차트에서 매도청산신호 발생하면 풋매도 청산
if (Start == 1 && Signal.signalKind == 4)
{
Account1.OrderBuy(SellPutCode, SellPutVol, Option.GetAskByCode(SellPutCode, 2), 0);
Main.MessageList("풋청산 : ",SellPutCode);
}
}
2013-11-28
1122
글번호 222725
마루아빠 님에 의해서 삭제되었습니다.
2013-11-22
4
글번호 222723
마루아빠 님에 의해서 삭제되었습니다.
2013-11-22
12
글번호 222722
관리자에 의해 프로그램 사용법 QnA로 이동되었습니다
2013-11-20
15
글번호 222718
답변완료
미체결 취소주문
주식 종목 오전에 매수 진입후 체결이 되지 않으면
13시 이후에 미체결된 주문들 모두 취소를 할려면 어떻게 해야되나요? ㅡㅡ;
이렇게 저렇게 해봤지만.. 맞는거 같지가 않네요. ㅠㅠ
function Main_OnStart()
{
Main.MessageLog("시작")
Main.SetTimer(1, 5000);//5초 간격으로 타이머 작동
}
//지정시간 계좌 내 모든 종목 청산
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.MessageList(HHMMSS);
if (nEventID == 1 && HHMMSS >= 130000)
{
Main.KillTimer(1);
Main.MessageLog("취소")
num = Account1.GetTheNumberOfUnfills();
for(var i = 0; i < num; i++)
{
Account1.SetBalanceIndex(i);
Account1.SetUnfillOrderNumber(i);
if (Account1.Unfill.count > 0)
{
Account1.OrderCancel(i);
}
}
}
}
2013-11-19
1054
글번호 222716
답변완료
사용자 모듈함수 문의 드립니다.
전략마다 지수가 플러스인지 마이너스인지 체크를 할려고 합니다.
사용자 모뮬함수를 이용하면 간단하게 전략마다 넣을 수 있을거 같아서
시도를 해보는데 어렵네요. ㅠㅠ
plus_minus(KP); 만들고
var chk = 0;
if KP.open <= KP.current {
chk = 1;}
else
{chk = -1;}
이렇게하면 될 줄 알았는데 에러만 나네요. ㅡ,.ㅡ
예제 부탁드립니다. 메뉴얼 예제를봐도 쉽지가 않네요. ㅜㅜ
2013-11-19
902
글번호 222715
답변완료
PrintOnFile 문의드립니다.
Main.PrintOnFile("C:₩APM_Setup₩htdocs₩load.txt", "1111");
이렇게 했지만... 해당 경로에 저장이 안되네요. ㅡㅡ;
경로를 빼고 load.txt 만 넣으면 export 폴더에 파일이 저장이 되구요. ^^;;;
왜 경로는 먹히질 않는걸까요? ㅡㅡ;
2013-11-18
979
글번호 222714
답변완료
수정문의
검증시 에러메세지가 뜨는데 확인부탁드립니다
감사합니다,
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) <= 3.0 && Option.GetCurrent(0, i) >= 1.5)/
{
CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-2.3);
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) <= 3.0 && Option.GetCurrent(1, ii) >= 1.5)
{
PutPrice[ii+UNum] = Math.abs(Option.GetCurrent(1, ii)-2.3);
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.OrderSell(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.OrderBuy(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.OrderSellPutOrderCode, 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.OrderBuy(PutOrderCode, 1, 0, 1);
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start);
}
else
{
Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start);
}
}
}
2013-11-18
833
글번호 222713
답변완료
OnTimer이벤트
수고 많으십니다. 꾸벅!
하이투자증권 하나의 ID로
복수계좌에 각각 복수전략을 운영하려하는데요
OnTimer이벤트가 계좌별, 전략별로 각각 발생하나요?
아니면 구분없이 다 발생하나요?
2013-11-16
766
글번호 222712