답변완료
1454번 데이터베이스 다시 질문드립니다
1454번 답변 감사드립니다.
예스스팟 편집기( Yesspot studio )가 실행되고 있을 때에만 제대로 된 값을 리턴하고 있어,
제가 뭔가 잘못 알고 있는 건지 확인 부탁드립니다.
예스스팟 편집기( Yesspot studio )가 실행되지 않고 있을 때에는 스크립트 메세지 상에 아무런 값도 리턴하지 않습니다.
위에 주신 참고수식을 아래처럼 바꿔서,
var cond = false;
var arr = [];
function Main_OnStart()
{
//정상실행되면 실행결과창에 코드라는 이름으로 탭생성하고 cond가 false
var cond = DB.Selec*t(" code FROM [dbo].[ENTRY] WHERE EntryDay = 20160807 ", "코드" );
if (cond == true){
//첫번째 레코드로 이동
DB.MoveFirst();
//마지막 레코드가 아니면
while (DB.IsEOF() == false){
//arr배열변수에 값추가
arr.push(DB.GetFieldValue(0));
//다음 레코드로 이동
DB.MoveNext();
}
}
}
8월 5일 진입한 코드를 보면
스팟편집기가 실행중일때는
Main.MessageList(arr);
를 통해보면 스크립트 메세지에 제대로 된 배열값을 리턴함을 확인하였습니다.
스팟편집기가 종료된 상태에서는
Main.MessageList(arr);
는 아무런 값도 리턴하지 못합니다. (이건 실행결과창이 없기 때문인듯합니다)
2016-10-05
1869
글번호 224009
답변완료
모의투자 주문가능수량 오류 원인을 알고 싶습니다
자꾸 주문가능 수량 오류가 납니다ㅠㅠ
현제 메뉴얼의 예제 7번 진행중입니다.
먼저 수식이며
var Skind;
var Scode;
var Scount;
var Start;
function Main_OnStart()
{
Main.MessageLog("시작");
Start = 0;
}
function C1_OnRiseSignal(Signal)
{
Skind = Signal.signalKind; //완성신호종류
Scode = Signal.code; //완성신호 종목코드
Scount = Signal.count; //완성신호 주문수량
Main.ReqMarketData(Signal.code, 0);
}
function Main_OnRcvMarketData(MarketData)
{
var SSEobject = MarketData;
var dayma1 = C2.GetIndicatorData("이동평균 5_20_60", 1, 0);
var dayma2 = C2.GetIndicatorData("이동평균 5_20_60", 2, 0);
var dayma3 = C2.GetIndicatorData("이동평균 5_20_60", 3, 0);
var predayma1= C2.GetIndicatorData("이동평균 5_20_60", 1, 1);
var slowK = C2.GetIndicatorData("Stochastics", 1, 0);
if (Skind == 1
&& dayma1 > dayma2 && dayma2 > dayma3
&& dayma1 > predayma1 //5일 이평값이 바로 전 봉보다 크고
&& slowK <= 100)
{
SID = A1.OrderSell(Scode,Scount,SSEobject.Bid(2),0);
Main.MessageList(atTime()
," 매도진입(종목) : "
, Scode
," 신호명 : "
, Scount
, " 주문식별번호 : "
, SID
, " 현재가 : "
, SSEobject.current
);
Start = 1;
}
if (Start ==1 && Skind ==2)
{
SID = A1.OrderSell(Scode,Scount,SSEobject.Bid(2),0);
Main.MessageList(atTime()
," 매도진입(종목) : "
, Scode
," 신호명 : "
, Scount
, " 주문식별번호 : "
, SID
, " 현재가 : "
, SSEobject.current
);
}
//SSEobject 종목객체 삭제
Main.RemoveMarketData(SSEobject);
}
사진 첨부합니다.
2016-10-05
1762
글번호 224004
답변완료
수식관련해서 질문 드립니다
주문이 일부 체결된 경우 나머지 미체결주문만 취소하고자 수식을 짰는데 뭐가 문젠지
전략실행차트에서 실행했을때 "시작"만 뜨고 그이후로 주문은 계속 나가는데 아무 메세지가 뜨질 않습니다...뭐가 잘못된건지 모르겠네요... 밑에식은 수식입니다. 감사합니다
var Position;
var OrdCode;
var BID;
var ASK;
var BuyFill;
var SellFill;
var BNum;
var SNum;
var CumOrdFill;
var PreOrdPrcA, PreOrdPrcB;
var Time;
function Main_OnStart()
{
Main.MessageList("시작");
Position = 0;
OrdCode = Main.GetOrderCode(F1.code);
}
function C1_OnRiseSignal(Signal)
{
Main.MessageList("신호발생" + Signal.signalKind);
Main.MessageList(Signal);
if(Signal.signalKind == 1) //매수신호
{
Position = 1;
BuyFill = 0;
Time = getHHMMSS();
BID = A1.OrderBuy(OrdCode, Vol, F1.current, 0);
Main.MessageList(Time , "매수주문진입" , "종목코드명:" + F1.code, "매수주문식별번호:"+ BID);
}
if(Position == 1 && Signal.signalKind == 2) //매수청산신호
{
if(BuyFill == 1)
{
Time = getHHMMSS();
A1.OrderSell(OrdCode, Vol, F1.Bid(2), 0);
Main.MessageList(Time, "매수청산실행");
}
else if(BuyFill == 0)
{
PreOrdPrcB = NotifyFill.fillCount
Main.SetTimer(1,10000);
}
}
if(Signal.signalKind == 3) //매도신호
{
Position = -1;
SellFill = 0;
Time = getHHMMSS();
ASK = A1.OrderSell(OrdCode, Vol, F1.current, 0);
Main.MessageList(Time , "매도주문진입" , "종목코드명:" + F1.code, "매수주문식별번호:"+ ASK);
}
if(Position = -1 && Signal.signalKind == 4) //매도청산신호
{
if(SellFill == 1)
{
Time = getHHMMSS();
A1.OrderBuy(OrdCode, Vol, F1.Ask(2), 0);
Main.MessageList(Time, "매도청산실행");
}
else if(SellFill == 0)
{
PreOrdPrcA = NotifyFill.fillCount
Main.SetTimer(2,10000);
}
}
}
function Main_OnOrderResponse(OrderResponse) //주문응답신호
{
if(Position == 1 && OrderResponse.orderID == BID)
{
BNum = OrderResponse.orderNum;
Time = getHHMMSS();
Main.MessageList(Time,"OrderResponse","종목코드명:"+F1.code , "주문번호:"+ BNum);
}
else if(Position == -1 && OrderResponse.orderID == ASK)
{
SNum = OrderResponse.orderNum;
Time = getHHMMSS();
Main.MessageList(Time,"OrderResponse","종목코드명:"+F1.code , "주문번호:"+ SNum);
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
if(PreOrdPrcB != Vol)
{
A1.SetUnfillOrderNumber(BNum);
if (A1.Unfill.count > 0)
{
Time = getHHMMSS();
A1.OrderCancel(A1.Unfill.orderNum);
Main.MessageList(Time,"매수취소주문" + "매수취소주문수량"+A1.Unfill.count);
}
}
}
if (nEventID == 2)
{
if(PreOrdPrcA != Vol)
{
A1.SetUnfillOrderNumber(SNum);
if (A1.Unfill.count > 0)
{
Time = getHHMMSS();
A1.OrderCancel(A1.Unfill.orderNum);
Main.MessageList( Time ,"매도취소주문" +"매도취소주문수량"+A1.Unfill.count);
}
}
}
}
function Main_OnNotifyFill(NotifyFill)
{
if(Position == 1 && NotifyFill.orderNum == BNum)
{
BuyFill = 1;
Main.KillTimer(1);
}
else if(Position == -1 && NotifyFill.orderNum == SNum)
{
SellFill = 1;
Main.KillTimer(2);
}
}
2016-09-28
1687
글번호 224001
답변완료
시가 진입 종가 청산
여러모로 검색해보니, 예스랭귀지에서는 시가 진입과 종가 청산이 안된다고 하네요.
이 게시판에서도 종가의 경우 예스 스팟을 써야 된다고 나오고요~
근데, 예스 스팟 이용하면, 시가 진입도 가능하게 할 수 있나요?
일단, 이게 되는지 알아야 더 분석을 할지 말지 결정할 수 잇을 것 같아서요.
답변 부탁드립니다.
감사합니다.
아 그리고
제가 참고한 글은 아래의 글입니다.
------------------------------------------
안녕하세요? 예스스탁입니다.
기존 YesLanguage를 이용한 방법으로는 3시 15분 종가 청산은 가능하지 않습니다.
새로 제공되는 기능은 스팟트레이딩(YesSpot)기능을 이용하시면 동시호가 시간에 잔고를 체크하여 청산 주문을 내는 것이 가능하지만, 자바스크립트를 별도로 배우셔야 사용 가능합니다.
감사합니다.
2016-09-09
1830
글번호 223995
답변완료
스팟수식과 모의테스트방법 문의
예스랭위지로 시스템식을 "시험"으로 작동시키고 해당 차트에 아이디를 부여하여 스팟 차트객체에 연결시켜 놓은 상태입니다.
[1]예스랭위지로 단순히 신호조건이 되면 buy(), sell(), exitlong(), exitshort()만 하도록 수식을 썼는데요.
스팟수식 "Account1.OrderBuy(MarketData1.code, Signal.count, MarketData1.Ask(1), 2);"에서
[1-1]MarketData1.code는 종목객체 속성창에 보니 종목명, 종목코드, 단축코드가 등록이 되어 있어서 참조가 될것같고,
[1-2]Signal.count는 랭위지수식에서 주문수량을 달리 정하지 않았기 때문에 그냥 1개로 되는지 아니면 예스랭위지 주문함수에서 주문수량을 설정하거나 Signal.count를 지우고 1로 써야하는지요?
[1-3]MarketData1.Ask(1)는 모든 매매를 시장가로 하려고 하니 0 또는 공백 으로 쓰는지요?
[1-4]시장가로 할려고 하므로 2 를 1 로 써야 하는지요?
[2]실제 실행하기 앞서 테스트를 할려면 어떻게 테스트를 해야하는지 모의테스트하는 방법 설명 부탁드립니다.
2016-09-09
1944
글번호 223990