답변완료
자동매도 코드 추가 부탁드려요
var timer5 = 2; // 2초
var 매수금 = 100000;
var OrderList = [];
var MKList = [];
var req;
// 종목 제한 수 (변수로 설정)
var 종목제한수 = 1;
function Main_OnStart() {
// 1번 타이머, 1초
Main.SetTimer(1, timer5 * 1000);
// 오늘 매수한 종목 관리 배열 초기화
MKList = [];
}
function Main_OnTimer(nEventID) {
var d = new Date();
YYYYMMDD = d.getFullYear() * 10000 + (d.getMonth() + 1) * 100 + d.getDate();
HHMMSS = d.getHours() * 10000 + d.getMinutes() * 100 + d.getSeconds();
if (nEventID == 1 && HHMMSS > 090000 && HHMMSS < 151800) {
// 종목검색 수행
Main.ReqPowerSearch("자동매수");
}
if (nEventID == 2) {
Main.ReqMarketData(OrderList[req]);
}
}
function Main_OnRcvItemList(aItemList, nCount) {
Main.KillTimer(1);
OrderList = [];
if (nCount >= 1) {
if (MKList.length == 0) {
OrderList = aItemList.slice(0, 종목제한수); // 한정된 수만 가져오기
} 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]);
// 제한 수를 넘는 경우 break
if (OrderList.length >= 종목제한수) {
break;
}
}
}
}
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, 1, 0, 1);
//Account1.OrderBuy(MarketData.code, Math.floor(매수금 / MarketData.Ask(1)), 0, 1);
//Account1.OrderBuy(MarketData.code, Math.floor(매수금 / MarketData.Ask(1)), MarketData.Ask(1), 0);
// 지정가로 주문하고자 하시면 주문함수 내용을 위와 같이 변경하시면 됩니다.
Main.MessageList(MarketData.code + " 주식을 매수합니다.");
} 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; // 계좌에 같은 종목이 있으면 true 반환
}
}
return false; // 계좌에 같은 종목이 없으면 false 반환
}
----------------------------------------------------------------
자동매도 할쑤있게 코드 추가 부탁드림미다 건강하세요
답변완료
유진예스트레이더 GetSTime 이상값
안녕하세요. 친절한 답변에 미리 감사드립니다. 아래의 수식으로 예스트레이더 내 예스스팟으로 차트객첵의 데이터를 외부의 데이터베이스로 인서트 할때 문제점입니다. 최초 외부 데이터베이스로 자료를 가져갈때 현재 시점으로부터 약 9000~10000봉 과거 봉들을 가져가는 수식입니다. 유진예스트레이더 예스스팟 좀 봐주십시오.
1. 한투예스트레이더 내 예스스팟에서는 GetSTime 의 수치들이 문제가 없습니다. 마이너스 음수 처리된 값이 나가는 경우가 없습니다.
2. 그런데 유진예스트레이더 내 예스스팟에서는 GetSTime 의 수치들에 문제가 있습니다. 마이너스 음수 처리된 오류값들이 나갑니다.
#######################################################
var choKkuenSi_sseulMisaBongSu=8600; // 손잡이- 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 sql인서트="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 마련
sql인서트=hhRoGoEreum+" (ID,SDATE,STIME,O,H,L,C,V) VALUES (";
sql인서트+=String(hhSseulGoId);
sql인서트+=",";
sql인서트+=String(hhSdate);
sql인서트+=",";
sql인서트+=String(hhStime);
sql인서트+=",";
sql인서트+=String(hhO);
sql인서트+=",";
sql인서트+=String(hhH);
sql인서트+=",";
sql인서트+=String(hhL);
sql인서트+=",";
sql인서트+=String(hhC);
sql인서트+=",";
sql인서트+=String(hhV);
sql인서트+=");";
//////////////// 로고 실행
DataBase1.인서트(sql인서트);
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 마련
sql인서트=hhRoGoEreum+" (ID,SDATE,STIME,O,H,L,C,V) VALUES (";
sql인서트+=String(hhSseulGoId);
sql인서트+=",";
sql인서트+=String(hhSdate);
sql인서트+=",";
sql인서트+=String(hhStime);
sql인서트+=",";
sql인서트+=String(hhO);
sql인서트+=",";
sql인서트+=String(hhH);
sql인서트+=",";
sql인서트+=String(hhL);
sql인서트+=",";
sql인서트+=String(hhC);
sql인서트+=",";
sql인서트+=String(hhV);
sql인서트+=");";
//////////////// 로고 실행
DataBase1.인서트(sql인서트);
hhSseulGoId+=1; // 1증.
}
}
var choKkuenSi_sseulMisaBongSu=8600; // 손잡이- 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 sql인서트="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 마련
sql인서트=hhRoGoEreum+" (ID,SDATE,STIME,O,H,L,C,V) VALUES (";
sql인서트+=String(hhSseulGoId);
sql인서트+=",";
sql인서트+=String(hhSdate);
sql인서트+=",";
sql인서트+=String(hhStime);
sql인서트+=",";
sql인서트+=String(hhO);
sql인서트+=",";
sql인서트+=String(hhH);
sql인서트+=",";
sql인서트+=String(hhL);
sql인서트+=",";
sql인서트+=String(hhC);
sql인서트+=",";
sql인서트+=String(hhV);
sql인서트+=");";
//////////////// 로고 실행
DataBase1.인서트(sql인서트);
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 마련
sql인서트=hhRoGoEreum+" (ID,SDATE,STIME,O,H,L,C,V) VALUES (";
sql인서트+=String(hhSseulGoId);
sql인서트+=",";
sql인서트+=String(hhSdate);
sql인서트+=",";
sql인서트+=String(hhStime);
sql인서트+=",";
sql인서트+=String(hhO);
sql인서트+=",";
sql인서트+=String(hhH);
sql인서트+=",";
sql인서트+=String(hhL);
sql인서트+=",";
sql인서트+=String(hhC);
sql인서트+=",";
sql인서트+=String(hhV);
sql인서트+=");";
//////////////// 로고 실행
DataBase1.인서트(sql인서트);
hhSseulGoId+=1; // 1증.
}
}