답변완료
문의드립니다.
9시10분에서20분까지 검색해서,
종목이 나오면 시장가 매수하고,
25분에 미체결이 있으면 취소하고,
30분에 잔고가 있으면 전량 시장가매도하는 건데...
잘 안됩니다...
어디가 문제일까요???
프로그램이 문제일까...아님 뭐가 문제일까요???
확인 부탁드립니다...
감사합니다...ㅎㅎㅎ
var timer5 = 9; // 9초 간격
var OrderList = [];
var MKList = [];
var req;
function Main_OnStart() {
// 1번 타이머로 검색 시작
Main.SetTimer(1, timer5 * 1000);
MKList = [];
// 99번 타이머는 5초마다 09:30:00 여부 확인
Main.SetTimer(99, 5000);
// 55번 타이머는 5초 간격으로 작동
Main.SetTimer(55, 5000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours() * 10000 + d.getMinutes() * 100 + d.getSeconds();
if (nEventID == 1 && HHMMSS >= 91000 && HHMMSS <= 92000) {
Main.ReqPowerSearch("매수조건");
}
if (nEventID == 2) {
Main.ReqMarketData(OrderList[req]);
}
if (nEventID == 99 && HHMMSS >= 93000) {
Main.KillTimer(99); // 한 번만 실행
var num = Account1.GetTheNumberOfBalances();
if (num > 0) {
for (var i = 0; i < num; i++) {
Account1.SetBalanceIndex(i);
if (Account1.Balance.count > 0) {
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, 0, 1);
Main.MessageList(Account1.Balance.code + " 주식을 전량 시장가로 매도합니다.");
}
}
}
}
if (nEventID == 55 && HHMMSS >= 92500) {
Main.KillTimer(55);
Main.MessageLog("취소");
num = Account1.GetTheNumberOfUnfills(); // 미체결주문 갯수
for (var i = 0; i < num; i++) {
Account1.SetUnfillIndex(i); // i순번의 미체결객체 셋팅
if (Account1.Unfill.count > 0) { // 미체결객체의 수량이 0이상이면
Account1.OrderCancel(Account1.Unfill.orderNum); // 해당주문번호 취소주문
}
}
}
}
function Main_OnRcvItemList(aItemList, nCount) {
Main.KillTimer(1);
OrderList = [];
if (nCount >= 1) {
if (MKList.length == 0) {
OrderList = aItemList;
} else {
for (var a = 0; a < nCount; a++) {
var Add = true;
for (var b = 0; b < MKList.length; b++) {
if (aItemList[a] == MKList[b].code) {
Add = false;
}
}
if (Add = true && !IsStockInAccount(aItemList[a])) {
OrderList.push(aItemList[a]);
}
}
}
}
if (OrderList.length == 0) {
Main.SetTimer(1, timer5 * 1000);
} else {
req = 0;
Main.ReqMarketData(OrderList[req]);
}
}
function Main_OnRcvMarketData(MarketData) {
if (MarketData.code == OrderList[req]) {
MKList.push(MarketData);
if (!IsStockInAccount(MarketData.code)) {
Account1.OrderBuy(MarketData.code, 19, 0, 1);
Main.MessageList(MarketData.code + " 주식을 19주 시장가로 매수합니다.");
} else {
Main.MessageList(MarketData.code + " 주식은 이미 보유 중이므로 매수하지 않습니다.");
}
req = req + 1;
if (req < OrderList.length) {
var aa = Main.ReqMarketData(OrderList[req]);
if (aa == -1) {
Main.SetTimer(2, 15000);
}
} else {
Main.SetTimer(1, timer5 * 1000);
}
}
}
function IsStockInAccount(stockCode) {
var numberOfBalances = Account1.GetTheNumberOfBalances();
for (var i = 0; i < numberOfBalances; i++) {
Account1.SetBalance(i);
if (stockCode == Account1.Balance.code) {
return true;
}
}
return false;
}
2025-06-09
229
글번호 226315
답변완료
유진선물예스트레이더 예스스팟 stime 오류
안녕하세요. 친절한 답변에 미리 감사드립니다. 유진선물예스트레이더 내 예스스팟에서 차트 객체의 stime를 불러다 데이터베이스 객체로 외부의 dbms로 stime을 수출해 보면 중간에 마이너스 음수가 나오는 오류가 발생합니다. stime을 수천봉 수입해다가 외부의 dbms로 내보낼때 중간중간에 마이너스 음수가 나옵니다. 해결 부탁드립니다!
사용 수식
==============================================
/*
2023년 9월 1일. 미9연미사 와 미12에서 쓰는 예스트레이더 예스스팟 날초마다 켜두는
실시간자료 ssj 수출 짠은 이 AD_nal_ssj_soochool_1.js 퍄일이다.
다른거 신경쓰지 않고 단순하게 오직 실시간자료 ssj 수출만 하는 것이 필요하기에
soochool.js 계열과 다르게 간결하게 정리한 것이 이 퍄일이다.
2023년 9월 1일. 후 3시1분.
AD_nal_ssj_soochool_2.js 는 마리아디비 miBon_ssjGoEreum 생성시 첫째 컬럼을 `MMA` BIGINT NULL AUTO_INCREMENT
로 생성하였기에 그에 맞춰 ins**t 함수를 수정한 것이다.
2023년 9월 9일. 후 5시1분.
미9연미사나 완전 완성본의 것. 실인미진민참.
*/
var hhRoGoEreum="ADC_JJNASDAQ100_YESTRADER_SSJ"; // 손잡이- 줄리아 공유 실시간자료고 이름
var choKkuenSi_sseulMisaBongSu=8500; // 손잡이- 10000 하면 좋으나 줄여도 됨.
var hhSseulGoId=1; // 손잡이 이나 고정- 봉번 ID는 날초 시 언제나 1번부터임.
var hhSdate=0;
var hhStime=0;
var hhO=0;
var hhH=0;
var hhL=0;
var hhC=0;
var hhV=0;
var sqlins**t="0";
var hhBongBun=0;
function Main_OnStart()
{
Main.MessageList("AD yestrader ssj <soochool> sijac. hhSseulGoId=",hhSseulGoId);
//////////////// 자료고 날 최초시 갈래
for (var ffa=choKkuenSi_sseulMisaBongSu; ffa>=0; ffa--){ // 손잡이
//////////////// 마련
hhSdate=Chart1.GetSDate(1,ffa);
hhStime=Chart1.GetSTime(1,ffa);
hhO=Chart1.GetOpen(1,ffa);
hhH=Chart1.GetHigh(1,ffa);
hhL=Chart1.GetLow(1,ffa);
hhC=Chart1.GetClose(1,ffa);
hhV=Chart1.GetVolume(1,ffa);
//////////////// 로고 sql 마련
sqlins**t=hhRoGoEreum+" (ID,SDATE,STIME,O,H,L,C,V) VALUES (";
sqlins**t+=String(hhSseulGoId);
sqlins**t+=",";
sqlins**t+=String(hhSdate);
sqlins**t+=",";
sqlins**t+=String(hhStime);
sqlins**t+=",";
sqlins**t+=String(hhO);
sqlins**t+=",";
sqlins**t+=String(hhH);
sqlins**t+=",";
sqlins**t+=String(hhL);
sqlins**t+=",";
sqlins**t+=String(hhC);
sqlins**t+=",";
sqlins**t+=String(hhV);
sqlins**t+=");";
//////////////// 로고 실행
DataBase1.ins**t(sqlins**t);
hhSseulGoId+=1; // 1증.
}
}
function Chart1_OnBarAppended(nData)
{
// Main.MessageList("Chart1_OnBarAppended / hhSseulGoId=",hhSseulGoId);
if (nData==1){
hhBongBun=0; // 0부여.
//////////////// 마련
hhSdate=Chart1.GetSDate(1,hhBongBun);
hhStime=Chart1.GetSTime(1,hhBongBun);
hhO=Chart1.GetOpen(1,hhBongBun);
hhH=Chart1.GetHigh(1,hhBongBun);
hhL=Chart1.GetLow(1,hhBongBun);
hhC=Chart1.GetClose(1,hhBongBun);
hhV=Chart1.GetVolume(1,hhBongBun);
//////////////// 로고 sql 마련
sqlins**t=hhRoGoEreum+" (ID,SDATE,STIME,O,H,L,C,V) VALUES (";
sqlins**t+=String(hhSseulGoId);
sqlins**t+=",";
sqlins**t+=String(hhSdate);
sqlins**t+=",";
sqlins**t+=String(hhStime);
sqlins**t+=",";
sqlins**t+=String(hhO);
sqlins**t+=",";
sqlins**t+=String(hhH);
sqlins**t+=",";
sqlins**t+=String(hhL);
sqlins**t+=",";
sqlins**t+=String(hhC);
sqlins**t+=",";
sqlins**t+=String(hhV);
sqlins**t+=");";
//////////////// 로고 실행
DataBase1.ins**t(sqlins**t);
hhSseulGoId+=1; // 1증.
}
}
2025-05-20
232
글번호 226304