답변완료
수식을 만들었는데 에러가 납니다.
제가 만들어봤는데 에러가 나고 주문이 안됩니다.
1. 매수(도)신호가 나오면 신호가로 매수(도) 주문이 1계약 들어가고 그 뒤로 5분간 1초에 한번씩 매수(도)주문이 반복해서 들어감(1계약 -> 1계약 -> 1계약 계속적으로 5분간 반복 주문)
2. 동시호가에 잔고가 있으면 시장가 청산
현재 신호가로 주문이 잘 반복적으로 주문되지도 않고 시장가로 청산도 안됩니다. 어디가 문제인가요? 수정 부탁드립니다. 감사합니다.
var Tcnt;
function Chart1_OnRiseSignal(Signal)
{
//매수진입신호 발생
if (Signal.signalKind == 1)
{
//매수주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
//1번 타이머 1초 셋팅
Main.SetTimer(1, 1000);
//타이머 동작 카운트 값은 초기값 0
Tcnt = 0;
}
}
//타이머 동작
function Main_OnTimer(nEventID)
{
//1번타이머
if (nEventID == 1)
{
//카운트가 1씩 증가
Tcnt = Tcnt+1;
//타이머 동작시마다 주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
// 4분 50초가 290초 이므로 카운트가 290번이 되면 1번 타이머 종료
if (Tcnt == 290)
{
Main.KillTimer(1);
}
}
}
var Tcnt;
function Chart1_OnRiseSignal(Signal)
{
//매도진입신호 발생
if (Signal.signalKind == 3)
{
//매도주문
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
//1번 타이머 1초 셋팅
Main.SetTimer(1, 1000);
//타이머 동작 카운트 값은 초기값 0
Tcnt = 0;
}
}
//타이머 동작
function Main_OnTimer(nEventID)
{
//1번타이머
if (nEventID == 1)
{
//카운트가 1씩 증가
Tcnt = Tcnt+1;
//타이머 동작시마다 주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
// 4분 50초가 290초 이므로 카운트가 290번이 되면 1번 타이머 종료
if (Tcnt == 290)
{
Main.KillTimer(1);
}
}
}
//15시 36분에 잔고에 포지션 있으면 청산
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//15시 36분 이후
if (nEventID == 1 && HHMMSS >= 153600)
{
//타이머 종료
Main.KillTimer(1);
Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code), 0);
//매수포지션이면
if (Account1.Balance.position == 1)
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
//매도포지션이면
if (Account1.Balance.position == 2)
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
}
}
2016-10-26
2026
글번호 224028
답변완료
미완성신호
아래 미완성신호 스팟수식에서 오류 부분을 바르게 수정하여 주시면 감사 하겠습니다.
var T;
function Main_OnStart()
{
T = 0;
Main.MessageLog("시작");
OrderCode = Main.GetOrderCode(KP.code);
}
function C1_OnRiseIncompleteSignal(IncompleteSignal)
{
Main.MessageLog("미완성신호발생/"+IncompleteSignal.SignalKind);
A1.SetBalance(Main.GetOrderCode(IncompleteSignal.code))
if ((A1.Balance.position == 1 || A1.Balance.position == 0) && IncompleteSignal.SignalKind == 1)
{
T = 1;
if(A1.Balance.position == 0)
VV = 1;
else
VV = 2;
Main.SetTimer(1,10000);
}
if ( A1.Balance.position == 1 && IncompleteSignal.SignalKind == 3)
{
T = 0;
Main.KillTimer(1);
Main.SetTimer(2,10000);
}
if ((A1.Balance.position == 2 || A1.Balance.position == 0) && IncompleteSignal.SignalKind == 3)
{
T = -1;
if(A1.Balance.position == 0)
VV = 1;
else
VV = 2;
Main.SetTimer(2,10000);
}
if (A1.Balance.position == 2 && IncompleteSignal.SignalKind == 1)
{
T = 0;
Main.KillTimer(2);
Main.SetTimer(1,10000);
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1 && T == 1)
{
Main.KillTimer(1);
A1.OrderBuy(KP.code, VV, KP.Ask(5),2);
Main.MessageLog("매수진입");
}
if (nEventID == 1 && T == 0)
{
Main.KillTimer(1);
Main.MessageLog("중복매수진입금지");
}
if (nEventID == 2 && T == -1)
{
Main.KillTimer(2);
A1.OrderSell(KP.code, VV, KP.Bid(5),2);
Main.MessageLog("매도진입");
}
if (nEventID == 2 && T == 0)
{
Main.KillTimer(2);
Main.MessageLog("중복매도진입금지");
}
}
2016-10-20
1969
글번호 224026
답변완료
시가 진입 종가 청산 답변에 대한 확인 질문입니다.
알려주신 답변이,
정각 9시와 15시 40분에 주문이 나가는 식인거 같은데,
이게 동시호가에서 시장가로 주문을 내면 무조건 체결이 되는거와 같은 개념인지요?
아니면, 알려주신 바와 같이 주문을 하면,
시가 혹은 종가에 체결이 안될수도 있는것인지요?
컴퓨터 시간에 따른다고 말씀하셔서, 왠지 제 질문과는 다른 답변이 아닌가 하여 다시 여쭙습니다.
제가 원하는 것은..
마치 주식에서 동시호가에 시장가 주문을 하면, 장 시작과 동시에 무조건 체결되는 것과 같은 거래가 가능하냐는 것이고, 그것을 어떻게 하는 것인지 궁금해서 글을 올린 것입니다.
그리고 이전 글에서 적은 바와 같이,
이 게시판에서... 그러한 방법이 된다는 예스스탁의 답변을 보고.. 질문을 드리는 것입니다.
답변 부탁드립니다.
---------------------------------
아래는 원 질문 및 그에 대한 답변입니다.
안녕하세요
예스스탁입니다.
예스스팟으로 시간으로 지정해서 원하시는 시간에
주문을 집행할수 있습니다.
아래식은 9시가 되면 매수. 15시 40분이면 매도주문을 넣은 식입니다.
시간의 확인은 PC시간을 이용하므로 PC시간 확인하시기 바랍니다.
스크립트 설정
계좌객체 : 객체명 Account1, 계좌번호지정
종목객체 : 객체명 MarketData1, 주문낼 종목코드 지정
function Main_OnStart()
{
Main.MessageList("Start");
Main.SetTimer(1, 1000);//1초타이머
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var T1 = T2;
var T1 = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (nEventID == 1)
{
if (T1 >= 90000 && T2 < 90000)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, 0, 1);
}
if (T1 >= 154000 && T2 < 154000)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, 0,1);
}
}
}
즐거운 하루되세요
> 중박주식 님이 쓴 글입니다.
> 제목 : 시가 진입 종가 청산
> 여러모로 검색해보니, 예스랭귀지에서는 시가 진입과 종가 청산이 안된다고 하네요.
이 게시판에서도 종가의 경우 예스 스팟을 써야 된다고 나오고요~
근데, 예스 스팟 이용하면, 시가 진입도 가능하게 할 수 있나요?
일단, 이게 되는지 알아야 더 분석을 할지 말지 결정할 수 잇을 것 같아서요.
답변 부탁드립니다.
감사합니다.
아 그리고
제가 참고한 글은 아래의 글입니다.
------------------------------------------
안녕하세요? 예스스탁입니다.
기존 YesLanguage를 이용한 방법으로는 3시 15분 종가 청산은 가능하지 않습니다.
새로 제공되는 기능은 스팟트레이딩(YesSpot)기능을 이용하시면 동시호가 시간에 잔고를 체크하여 청산 주문을 내는 것이 가능하지만, 자바스크립트를 별도로 배우셔야 사용 가능합니다.
감사합니다.
2016-10-16
2022
글번호 224017