커뮤니티
예스스팟 Q&A
답변완료
OnOrderResponse 질문 드립니다.
한국투자증권 eFriendGlobal 사용하고 있습니다.
예전에 잘 사용하던 전략이 어느 순간 잘 안되는 것 같아서 문의드립니다.
정상적으로 주문이 이루어지면
메시지가 보여야 정상이잖아요? 어떤 경우라도...
function Main_OnOrderResponse(OrderResponse)
{
Main.MessageList("ID = " + OrderResponse.orderID);
if (OrderResponse.orderID == BID)
{
BXnum = OrderResponse.orderNum;
}
}
그런데 어느 순간 메시지가 보이지 않습니다.
마치 이 부분을 호출하지 않는 것처럼 말입니다.
이 부분이 해결이 안되면 큰 문제가 되어서 질문드립니다.
빠른 답변 부탁드리겠습니다.
2016-10-13
1500
글번호 224013
답변완료
수식 문의 합니다~~
안녕 하세요~~
비슷한 질문이 있나하고 열심히 질문란을 찾아 보고 적용도 해보았으나
해결이 되지 않아 문의 드립니다
예스챠트로 포지션매매를 하고 있습니다 다른건 다 문제가 없는데
마감동시호가에 발생하는 예비신호에 진입을 할수 없다는 겁니다
스팟으로는 진입이 가능하다고 알고 있습니다
그럼 다음의 기준으로 예스신호를 스팟신호로 가능하게 수식 부탁드립니다
1.예스의 신호는 리버스신호이고 가끔 목표치 청산이 되는 Onclose타입의 신호입니다
예스에서는 진입신호,모든신호등의 구분이 있어서 다음날 진입시에 별 문제가 없었는데
스팟에서도 전날의 포지션보유에 연관되게 구분하여 주시기 바랍니다
2.예스의 신호가 리버스신호라서 포시션청산과 신규진입시에 증거금이 두배로 잡히는 문제
가 있습니다. 예스에서는 시간지연등으로 해결이 가능했는데 스팟에서도 같은 방법으로
해 주시기 바랍니다. 즉 포지션이 없을시는 바로 신규진입 포지션 보유시는 먼저 청산후
신규진입하는 식으로 증거금이 두배로 잡히지 않게 부탁합니다
3.장마감 동시호가에 발생하는 예비신호에 진입할수 있도록 부탁합니다
이 때도 역시 리버스신호라서 시간지연 이런게 필요할거 같은데 동시호가라서 문제가
있어 보이긴 합니다만...
참고로 예스챠트는 60분봉으로 보고 있습니다
항상 빠른 답변 미리 감사 드립니다
수고 하세요~~
2016-10-13
1746
글번호 224012
답변완료
문의드립니다
1.예스트레이더 오른쪽상단에 1,2,3,4,5,6이
있는데 1에 있는 것들을 2에 모두 복사하고 싶은데 방법이 없나요?
2.메인메뉴창(메인툴바?)을 맨앞으로 보이게 하는방법 좀 부탁드립니다
차트를 크게 띄우면 메인메뉴창이 가려져서요
2016-10-06
1763
글번호 224011
답변완료
재문의드립니다
저번 답변 감사합니다.
예스트레이더에서 주문신호가 나왔을때 그 신호를 받아서 4분 50초동안 1초간격으로 계속 반복적으로 주문을 발생시키는 수식이 필요합니다.
예를 들어서 말씀드리면 예스트레이더에서 매수 신호가 나왔으면 그 신호를 받아서 예스스팟에서 주문이 들어가는데요. 매수 주문이 한번 주문이 되는게 아니고 그 뒤로 1초간격으로 4분50초간 계속 매수주문을을 발생시키는 것입니다.
타이머나 이런걸로 해보려고 하는데 잘 못하겠습니다. 도움 부탁드려요.
2016-10-06
1748
글번호 224010
답변완료
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
1918
글번호 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
1804
글번호 224004
답변완료
시간 주문
안녕하세요.
예스스팟에서 A라는 조건을 만족하면 정해진 시간대에
주문을 발생시키려고 합니다.
다음 수식을 예로 부탁드립니다.
-------------------------------------
연결선물지수 일봉을 사용하여
1) 15시35분 즉 장마감 단일가이전 기준으로
이전봉의 고가 < 이전봉의 파라볼릭 and 현재봉의 저가 > 현재봉의 파라볼릭이면
15시40분에 매도1계약 청산주문 --> 종가체결
2) 1)의 다음봉에서 장마감 단일가이전 기준으로
이전봉의 저가 > 이전봉의 파라볼릭 and 현재봉의 저가 > 현재봉의 파라볼릭이면
15시40분에 매수1계약 진입주문 --> 종가체결
3) 15시35분 즉 장마감 단일가이전 기준으로
이전봉의 저가 > 이전봉의 파라볼릭 and 현재봉의 고가 < 현재봉의 파라볼릭이면
15시40분에 매수1계약 청산주문 --> 종가체결
4) 3)의 다음봉에서 장마감 단일가이전 기준으로
이전봉의 고가 < 이전봉의 파라볼릭 and 현재봉의 고가 < 현재봉의 파라볼릭이면
15시40분에 매도1계약 진입주문 --> 종가체결
위의 내용과 같이
현재봉은 15시35분을 기준으로 하여
조건만족시 위의 진입청산이 단일가에 주문이 발생되고
종가에 체결이 이루어지도록 하고 싶습니다.
------------------------------------
이상입니다.
감사합니다 !!!
2016-10-12
1762
글번호 224003
답변완료
수식관련해서 질문 드립니다
주문이 일부 체결된 경우 나머지 미체결주문만 취소하고자 수식을 짰는데 뭐가 문젠지
전략실행차트에서 실행했을때 "시작"만 뜨고 그이후로 주문은 계속 나가는데 아무 메세지가 뜨질 않습니다...뭐가 잘못된건지 모르겠네요... 밑에식은 수식입니다. 감사합니다
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
1728
글번호 224001
답변완료
YesTrader 메모리 오류인지
스팟에서 확장 차트를 최대 얼마까지 띄울 수 있을지 테스트 하고 있던 중 YesTrader가 다운되는 현상이 발생합니다.
확장차트 288번째 생성 중 다운되면 첨부와 같은 오류가 발생합니다.
메모리 문제인 것 같습니다만, 시스템 메모리가 부족해서 그런건 아니므로 Yes에서 관리하는 메모리 쪽에 확인 부탁드립니다. 메모리 관리가 안되서 더 이상 실행할 수 없다면 다운시키지 않고 경고 메시지를 줄 수는 없을까요?
2016-09-23
1825
글번호 223998
답변완료
시가 진입 종가 청산
여러모로 검색해보니, 예스랭귀지에서는 시가 진입과 종가 청산이 안된다고 하네요.
이 게시판에서도 종가의 경우 예스 스팟을 써야 된다고 나오고요~
근데, 예스 스팟 이용하면, 시가 진입도 가능하게 할 수 있나요?
일단, 이게 되는지 알아야 더 분석을 할지 말지 결정할 수 잇을 것 같아서요.
답변 부탁드립니다.
감사합니다.
아 그리고
제가 참고한 글은 아래의 글입니다.
------------------------------------------
안녕하세요? 예스스탁입니다.
기존 YesLanguage를 이용한 방법으로는 3시 15분 종가 청산은 가능하지 않습니다.
새로 제공되는 기능은 스팟트레이딩(YesSpot)기능을 이용하시면 동시호가 시간에 잔고를 체크하여 청산 주문을 내는 것이 가능하지만, 자바스크립트를 별도로 배우셔야 사용 가능합니다.
감사합니다.
2016-09-09
1870
글번호 223995