예스스탁
예스스탁 답변
2025-04-21 13:54:54.0
안녕하세요
예스스탁입니다.
1
MainPrintOnFile(sFilePath, sMsg)
PrintOnFile은 Main객체의 함수입니다.
Main.PrintOnFile와 같이 지정하셔야 합니다.
또한 경로와 파일명 지정후 값을 나열하시면 됩니다.
예스랭귀지와 예스스팟은 서로 다른 언어입니다.
스팟 도움말에서 함수 설명 참고하시기 바랍니다.
2
var 거래일자 = Account1.Balance.date;
var 종목명 = Account1.Balance.name;
var 매도시각 = Account1.Balance.time;
var 수량 = Account1.Balance.fillCount;
var 단가 = Account1.Balance.fillPrice;
var 금액 = Account1.Balance.money;
Balance객체에는 위와 같은 프로퍼티가 없습니다.
잔고객체에는 아래의 값만 제공되고 있습니다.
Account1.Balance.assessedAmount
Account1.Balance.avgUnitCost
Account1.Balance.code
Account1.Balance.count
Account1.Balance.current
Account1.Balance.loanDate
Account1.Balance.loanKind
Account1.Balance.position
예스스팟 도움말에서 각 객체에서 제공되는 값을 확인하시기 바랍니다.
3
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,Account1.Balance.MarketData.Bid(5),1);
주문함수에 MarketData객체가 사용되었는데 MarketData객체는
종목객체 생성시에 리턴되는 객체입니다.
사용하는 수식에서 종목검색 후 각 종목별 종목객체를 만들어 놓으셨다면
해당 종목객체를 저장한 변수에서 잔고셋팅한 종목과 같은 것을 찾아서 지정해 주셔야 합니다.
4
스팟에서 파일에 값을 출력하시려면
해당 경로의 폴더까지는 말들어 놓으셔야 파일이 만들어 집니다.
경로상 폴더가 자동으로 만들어 지지 않습니다.
5
printlist은 용도를 알수 없습니다.
아래는 파일 출력확인용으므로 나열해 작성해 드립니다.
csv파일이므로 나열하는 값 사이에 ","가 들어가면 됩니다.
6
수식상 오류가 있거나 내용을 알수 없는 부분은 모두 주석처리했습니다.
테스트용이므로 해당 함수가 호출되면
간단히 해당잔고의 종목코드,수량,평단가가 출력되게 작성해 드립니다.
참고하셔서 필요한 값 추가해 사용하시기 바랍니다.
var 매수금 = 1000000;
var 손절 = 0.98;
var 익절 = 1.03;
function Main_OnStart()
{
//Main.SetTimer(1,10000);
Main.SetTimer(1,1000);
MKList = [];
}
function Main_OnTimer(nEventID)
{
var d = new Date();
HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.KillTimer(1);
//if(nEventID == 1 && HHMMSS >= 90000 && HHMMSS < 151800)
//{
// Main.ReqPowerSearch("검색명");
//}
if(nEventID == 1)
{
var num = Account1.GetTheNumberOfBalances();
if(HHMMSS >= 90000 && HHMMSS < 151800)
{
if(num >= 1)
{
for (var i = 0;i < num; i++)
{
Account1.SetBalance(i);
if(Account1.Balance.count > 0 &&
(Account1.Balance.current >= Account1.Balance.avgUnitCost * 익절 ||
Account1.Balance.current <= Account1.Balance.avgUnitCost * 손절))
{
Main.MessageList(i,"print");
//Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,Account1.Balance.MarketData.Bid(5),1);
maedoprint(i);
}
}
}
}
}
}
function maedoprint(sun)
{
/*
if(sun==0)
{
Main.PrintOnFile("F:₩₩주식₩₩예스트레이더₩₩프로그램자동출력연습","순,거래일자,종목명,매도시각,수량,단가,금액,비고");
}
var 거래일자 = Account1.Balance.date;
var 종목명 = Account1.Balance.name;
var 매도시각 = Account1.Balance.time;
var 수량 = Account1.Balance.fillCount;
var 단가 = Account1.Balance.fillPrice;
var 금액 = Account1.Balance.money;
printlist[sun] = sun,거래일자,종목명,매도시각,수량,단가,금액;
*/
Main.PrintOnFile("F:₩₩주식₩₩예스트레이더₩₩프로그램자동출력연습.csv",Account1.Balance.code,",",Account1.Balance.count,",",Account1.Balance.avgUnitCost);
//Main.PrintOnFile("F:₩₩주식₩₩예스트레이더₩₩프로그램자동출력연습.csv","%.f,%s,%s,%s,%.f,%.f,%.f,",printlist[sun]);
//Main.PrintOnFile("F:₩₩주식₩₩예스트레이더₩₩프로그램자동출력연습.csv","%.f,%s,%s,%s,%.f,%.f,%.f,",sun,거래일자,종목명,매도시각,수량,단가,금액);
// 매도 프린트 화일 확장자 유무 그리고 배열이 간단한데, 잘못된 부분이 있을까 두개를 다 해도 안되네요
}
즐거운 하루되세요
> mi노99 님이 쓴 글입니다.
> 제목 : 수식 문의 드립니다
> 매수 매도 한것 엑셀화일로 남기고 싶은데 혼자서는 정말 어렵네요
아래 매도 프린트 함수에서 뭐가 잘못되서 안 되는지 고쳐주시길 부탁드립니다
감사합니다
var 매수금 = 1000000;
var 손절 = 0.98;
var 익절 = 1.03;
function Main_OnStart()
{
Main.SetTimer(1,10000);
MKList = [];
}
function Main_OnTimer(nEventID)
{
var d = new Date();
HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if(nEventID == 1 && HHMMSS >= 90000 && HHMMSS < 151800)
{
Main.ReqPowerSearch("검색명");
}
if(nEventID == 1)
{
var num = Account1.GetTheNumberOfBalances();
if(HHMMSS >= 90000 && HHMMSS < 151800)
{
if(num >= 1)
{
for (var i = 0;i < num; i++)
{
Account1.SetBalance(i);
if(Account1.Balance.count > 0 &&
(Account1.Balance.current >= Account1.Balance.avgUnitCost * 익절 ||
Account1.Balance.current <= Account1.Balance.avgUnitCost * 손절))
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,Account1.Balance.MarketData.Bid(5),1);
maedoprint(i);
}
}
}
}
}
function maedoprint(sun)
{
if(sun==0)
{
PrintOnFile("F:₩₩주식₩₩예스트레이더₩₩프로그램자동출력연습","순,거래일자,종목명,매도시각,수량,단가,금액,비고");
}
var 거래일자 = Account1.Balance.date;
var 종목명 = Account1.Balance.name;
var 매도시각 = Account1.Balance.time;
var 수량 = Account1.Balance.fillCount;
var 단가 = Account1.Balance.fillPrice;
var 금액 = Account1.Balance.money;
printlist[sun] = sun,거래일자,종목명,매도시각,수량,단가,금액;
PrintOnFile("F:₩₩주식₩₩예스트레이더₩₩프로그램자동출력
연습","%.f,%s,%s,%s,%.f,%.f,%.f,",printlist[sun]);
PrintOnFile("F:₩₩주식₩₩예스트레이더₩₩프로그램자동출력
연습.csv","%.f,%s,%s,%s,%.f,%.f,%.f,",sun,거래일자,종목명,매도시각,수량,단가,금액);
// 매도 프린트 화일 확장자 유무 그리고 배열이 간단한데, 잘못된 부분이 있을까 두개를 다 해도 안되네요
}