답변완료
문의드립니다.
안녕하세요~
YesSpot 메뉴얼중에서 예제3.시간정정주문 에서 확장된 질문드립니다.
1. 예를 들어 매수 1호가에 100계약을 매수주문합니다.
그리고 OnTimer를 1분으로 지정한 후, 1분후에도 미체결 상태라면 매도 2호가로 매수정정주문이 발생합니다.
이런 상태에서 100계약 중 50계약이 남고 50계약이 미체결 상태로 1분이 지나면, 남은 계약에서 기존에 걸어두었던 OnTimer 때문에 한번 더 매도 2호가로 다시 정정주문이 나갈 때....
매도 2호가의 가격이 이전 매도 2호가의 가격과 동일 할때, 모의투자에서는 가격이 같기 때문에 정정주문에서 오류가 납니다. (오류후에도 기존에 매도2호가로 체결은 계속됨)
즉, 정정주문시에는 동일한 가격으로 정정주문이 나가지는 않는건가요??? 이 현상이 모의투자에서만 그런 것인지, 실제매매에서 그런지 확인하고 싶습니다.
2. 잔고내역을 확인할 때...
var temp = Account1.GetTheNumberOfBalances();
if(temp > 0)
{
for (var i = 0; i < temp; i++)
{
Account1.SetBalanceIndex(i);
Main.MessageList("잔고종목코드[", Account1.Balance.code, "] 잔고수량[",Account1.Balance.count, "]");
}
}
이런식으로 확인할 때... SetBalanceIndex() 와 SetBalance()의 차이를 알고 싶습니다.
객체 정보의 데이터에서는 똑같은 설명으로 나와있어서...스크린 샷으로 올리고,,,
설명 부탁드리겠습니다^^
2016-01-20
2049
글번호 223782
답변완료
이벤트 발생 후 실행순서 문의드립니다.
안녕하세요.
이벤트 발생 후 실행순서 문의 드립니다.
간단한 예를 들어서 질문 드리겠습니다.
0.5초 타이머로 발생하는 Event A와 B가 있다고 가정하고
SetUserValue와 GetUserValue 로 값을 저장하는 변수 K가 있습니다.
A, B 두 타이머를 동시에 시작한다고 했을때
A와 B 이벤트는 거의 동시에 발생하면서 순서가 다른 경우도 생길텐데요
여기서 K라는 변수가 0 이면 1로 바꾸고, 1이면 0으로 바꾸는 로직이
A와 B 로직에 들어있다면,
0.5초 마다 초기값 0 이었던 변수 K가 1로 갔다가 다시 0으로 바뀌는걸 보장 할 수 있을까요?
그러니까, 거의 동시에 발생한 이벤트의 로직이 순차실행 보장이 되는지 궁금합니다.
차트 봉 추가 이벤트나 타이머에 의해서 거의 동시에 발생하는 이벤트 들이 있을텐데요
이벤트 A,B,C 들이 거의 동시에 발생 했을 때
내부적으로 큐와 비슷하게 가지고 있다가
A이벤트의 로직이 처음부터 끝까지 실행되고 난 후에 B로직이 처음부터 끝까지 실행되고 다음
C의 로직이 처음부터 끝까지 되는건지
아니면
A로직이 실행되고 있는 중간에 B로직이 실행되는 구조인지 궁금합니다.
이벤트에서 중복실행을 방지하기 위해
그러니까 A,B,C 이벤트에서 한 곳에서만 주문이 발생하게 하려고 하는데요
(A메서 주문이 발생하면 B,C 에서는 주문안함)
이 방법으로 SetUserValue와 GetUserValue 를 이용해서 변수 하나에 값을 저장하게 하면
가능할지가 제가 최종적으로 드리고 싶은 질문이었는데
의도가 잘 전달되게 최대한 풀어서 질문 드립니다.
답변 부탁드립니다.
감사합니다.
2016-01-17
1702
글번호 223776
답변완료
문의드립니다.
안녕하세요.
스팟 시작할 때 파워종목검색 활용하는 경우에도 확장차트 객체 추가를 해야 하는지요?
확장차트 객체 추가를 해야 한다면 종목검색을 통해 몇개의 종목이 검색될지 모르는 상황인데 확장차트 추가를 몇개나 해야할런지요? 그리고 어떤 종목이 검색될 지 모르는 데 종목명을 어떻게 지정해야 할지요?
현재 나타나는 문제를 구체적으로 설명드리자면...
스크립트 객체에 ChartEx를 여러개 추가한 후, 개별 확장 차트에서 종목명 지정을 하지 않으면 스팟 전략 저장시 YesSpotMaker 창이 뜨고 "연결된 차트가 없습니다"라고 출력됩니다.
또한 예스스팟 전략을 적용 시키면 종목검색된 수량만큼의 Chart창이 뜨고 "undefined을(를) 찾을 수 없습니다."라는 메시지가 출력됩니다.
하기는 제가 적용했던 예스스팟 코드입니다. 무엇이 잘못되었는지 고견 부탁드리겠습니다.
-----------------------------------------------------------------------------------
//종목검색 완료(aItemList : 종목리스트), (nCount : 종목수)
function Main_OnRcvItemList(aItemList, nCount)
{
// 확장챠트의 생성과 적용될 시스템의 세부 설정
var TradeSet = new SystemTradeInfo(
TRADE_FIXCAPITAL,
1,1000000,1,
0,0,CALCMETHOD_PERCENT,
0,0,CALCMETHOD_PERCENT,
PYRAMIDING_NONE,
100000,2
);
Main.MessageList("확장챠트 생성 & 시스템 세부설정");
//확장 챠트는 최대 100개까지만 가능
for (var i = 0; i < Math.min(nCount,100); i++)
{
//생성할 차트 셋팅
var ChartSet = new ReqChartItem(aItemList[i], 10, CHART_PERIOD_SECOND, 5000,CHART_REQCOUNT_BAR, true, false);
//차트에 적용할 시스템명 및 설정
var SystemSet = new SystemInfo(YesSpot1,YL_TYPE_NORMAL,null,TradeSet,null);
Main.ReqChartEx(ChartSet,SystemSet);
Main.MessageList("확장챠트 생성 : "+(i+1));
}
}
2016-01-19
1781
글번호 223774
답변완료
수식문의드림니다
수식문의 드림니다
아래의 스팟수식에
동시호가시간(15시06분정도)에 잔고에 종목을 모두청산하는
당일계좌정리 수팟수식을 첨가 부탁드림니다
/////////////////////////////////////////////////////////////////////////////
function Main_OnStart()
{
//[ 3번시스템 : 3S ]
Main.MessageList("스팟_시작");
}
function Chart1_OnRiseSignal(Signal)
{
//투입수량 변수지정
//
ORDER_VOL = 1; // 신호발생수량 X N 배수로 주문실행
//매수신호 발생
if (Signal.signalKind == 1)
{
Main.MessageList("Buy_Signal");
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, MarketData1.Ask(5), 0);
}
//매수청산신호 발생
if (Signal.signalKind == 2)
{
Main.MessageList("ExitLong_Signal");
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, MarketData1.Bid(5), 0);
}
//매도신호 발생
if (Signal.signalKind == 3)
{
Main.MessageList("Sell_Signal");
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, MarketData1.Bid(5), 0);
}
//매도청산신호 발생
if (Signal.signalKind == 4)
{
Main.MessageList("ExitShort_Signal");
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, MarketData1.Ask(5), 0);
}
}
2016-01-14
1665
글번호 223773
답변완료
사용자정의 모듈과 전역변수 사용법 문의 드립니다
스팟 프로그램이 길어져 관리상 가독성 좋게 사용자함수를 사용해서 정리하려 합니다.
예를 들어
var 전역변수1,전역변수2,전역변수3;
function Main_OnStart()
전역변수1=0;
전역변수2=0;
전역변수3=0;
function Main_On*pdateMarket(sItemCode, l*pdateID)
if condition1 then
사용자함수1();
else if condition2 then
사용자함수2();
else if condition3 then
사용자함수3();
function 사용자함수1()
if 전역변수1 == condition4 then
.
.
.
이런식으로 코딩이 가능할까요?
2016-01-12
1780
글번호 223772
답변완료
무슨 문제인가요?
아래수식을 모의거래에 적용을 해보았는데,
"시작" 메세지 이후 아무런 시스템 작동이 안되네요!!
어디에 문제점이 있나요?
참조 1. 차트객체명 : C1
2. 종목객체명 : SP -------> E-mini S&P 500 ( 2016.3)
3. 계좌객체명 : A1
/* 스크립트시작------------------------------ */
var Position;
var OrderCode;
var BID;
var SID;
var SNum;
var BNum;
var BuyFill;
var SellFill;
function Main_OnStart()
{
Main.MessageLog("시작");
Position = 0;
OrderCode = Main.GetOrderCode(SP.Code);
}
function C1_OnRiseSingal(Singal)
{
Main.MessageLog("신호완성/"+Singal.SinalKind);
if (Sinal.SinalKind == 1)
{
Position = 1;
BID = A1.OrderBuy(SP.Code, 1, SP.Ask(2),0);
Main.MessageLog("매수진입");
BuyFill = 0;
}
if (Position == 1 && Sinal.SingKind == 2)
{
if (BuyFill == 1)
{
A1.OrderSell(SP.Code, 1, SP.Bid(2),0);
Main.MessageLog("매수청산실행");
}
if (BuyFill == 0)
{
A1.OrderCancel(Bnum);
Main.MessageLog("매수청산취소");
}
}
if (Sinal.sinalKind == 3)
{
Position = -1;
SellFill = 0;
SID = A1.OrderSell(SP.Code, 1, SP.Bid(2), 0);
Main.MessageLog("매도진입");
}
if (Position == -1 && Singal.singalKind == 4)
{
if (SellFill == 1)
{
A1.OrderBuy(SP.Code, 1, Ask(2), 0);
Main.MessageLog("매도청산");
}
if (SellFill == 0)
{
A1.OrderCancel(SNum);
Main.MessageLog("매도청산취소");
}
}
}
function Main_OnOrderResponse(OrderResponse)
{
if (Position == 1 && OrderResponse.orderID == BID)
{
BNum = OrderResponse.orderNum;
}
if (Position == -1 && OrderResponse.orderID == SID)
{
SNum = OrderResponse.ordNum;
}
}
function Main_OnNotifyFill(NotifyFill)
{
if (Position == 1 && NotifyFill.orderNum == BNum)
{
BuyFill = 1;
}
if (Position == -1 && NotifyFill.orderNum == SNum)
{
SellFill = 1;
}
}
/* 스크립트 끝-----------------------------*/
2016-01-12
1790
글번호 223771
답변완료
수식 문의합니다.
당일 아침 9:05분에, 1.0에 가장 가까운 행사가의 콜옵션을
10 계약, 아침 9:05분에 자동매수 하는 수식 부탁합니다.
반대 수식도 부탁드립니다.
(풋옵션 9:05분 1.0 근접, 9:05분 10계약 매수)
(또한, 상기 콜/풋 식들을 시초가 1.0 근접, 시초가 매수도 함께 부탁합니다.)
그리고, 위와 같이 매수한 옵션을 그 다음날 아침 9:05분에 절반 매도,
또 그 다음날 아침 9:05분에 나머지 절반 매도하고 싶은데,
청산수식도 같이 부탁합니다.
(혹시, 위 매수/청산 수식을 한가지로 묶을수 있나요?
가령 수 아침에 매수하고, 목아침 절반매도, 금아침 나머지 절반매도
하는 식으로 말입니다)
한가지만 더 부탁합니다.
위 수식에서 본인이 직접 옵션 행사가를 지정해서 할수는 없읍니까?
가령, 수식에 행사가를 직접 입력하게 하거나, 다른 방법이 가능한지
부탁합니다.
수고하십시요.
2016-01-12
1770
글번호 223770