민서네집

YesTrader에서 해외선물 주가 분봉 데이터 얻기 본문

프로젝트/자동매매

YesTrader에서 해외선물 주가 분봉 데이터 얻기

브라이언7 2018. 1. 6. 22:09

일봉 데이터를 얻을 수 있는 라이브러리는 많이 있는것 같은데 분봉 해외선물 주가 데이터를 얻고 싶었다.


YesTrader에서 쉽게 받을 수 있을줄 알았는데, 주가 데이터를 다운로드 받을 수 있는 메뉴나 버튼이 보이지 않았다.


Google에서 검색해 봤더니 전락실행 차트에서 print 명령으로 주가 데이터를 파일로 저장할 수 있다고 한다.



틱데이타로 받는 방법은 랭귀지 출력함수 중 print문을 이용하시면 엑셀로 틱데이타를 받으실 수 있지만, 이를 이용한 시뮬레이션을 하실 수는 없습니다.


https://www.yesstock.com/board_new/view.asp?Ext=0%20&db=board100037&num=13009&startpage=1


데이터매니져 사용방법에 관해서는 아래 주소에서 > 시스템트레이딩 > Data Manager항목을 참고하시면 됩니다.

 

https://www.yesstock.com/YesTrader/Manual/YesTrader4.0_help.html


https://www.yesstock.com/board_new/view.asp?Ext=0%20&db=board100036&num=51895&startpage=81


안녕하세요

예스스탁입니다.


실시간차트(최대조회건수5000)에서는 print함수를 

이용해 텍스트나 csv파일로 데이터를 추출하실 수 있습니다.


print함수 설명 참고하시기 바랍니다.


https://www.yesstock.com/YesTrader/YesLanguage/YesLanguage_help/4_3.htm


즐거운 하루되세요


[3010] 전략실행 차트에서는 print 명령으로 주가 데이터를 파일로 저장할 수 있었고, [3020] 시뮬레이션 차트에서는 print 명령이 동작하지 않았다.


과거에는 5000건까지 조회가 되었는지 몰라도, 지금은 10000건까지 된다.


10분봉으로 10000건이면 3달 조금 넘는 기간의 데이터를 가져올 수 있다.





위와 같이 


Print("price_10m.txt", "%f %f %f %f", O, L, H, C);


[3010] 전략실행 차트에서 Crude Oil 연속월물, 10분봉을 선택한 후, 새로 만든 print_ex01 지표를 적용해주면, 


C:\eFriend Global YesTrader\efriendglobalyestrader\YesLang 디렉터리에 price_10m.txt 파일이 생긴다.


O: 시가, L: 저가, H: 고가, C: 종가


price_10m.txt


YesLang(10분봉 데이터).zip




https://www.kaggle.com/dgawlik/nyse  에 있는 Data와 최대한 비슷하게 맞춰봤다.


소스를 아래와 같이 수정.


Var: 종목명("");

Var: 파일명("");

Var: 소숫점자릿수(0), cnt(0), temp(0), DP("");


// 해당 종목의 소숫점자릿수 계산

If DP=="" Then {

temp = PriceScale*1000000;

For cnt = 0 To 6 {

If temp % 10 > 0 Then { 소숫점자릿수 = 6-cnt; cnt = 99; }

temp = temp / 10;

}

DP = NumToStr(소숫점자릿수,0);

}


If GloBalBarIndex==0 Then {

    종목명 = SymbolName; 

    If InStr(종목명,"연결_")==1 Then {

        종목명 = RightStr(종목명, StrLen(종목명) - StrLen("연결_"));

        If InStr(종목명,"-")!=0 Then

        종목명 = LeftStr(종목명, InStr(종목명,"-")-1);

    }

    파일명 = "price_10m_" + 종목명 + ".csv";

    Print(파일명, "date,symbol,open,close,low,high,volume");

    MessageLog("%s,%s,%s",SymbolCode, SymbolName, 종목명);

}

Print(파일명, ",%s,%."+DP+"f,%."+DP+"f,%."+DP+"f,%."+DP+"f,%.0f",종목명, O, C, L, H, V);


원래는 SymbolCode 에 종목코드가 나와야 하지만, 아무 것도 출력되지 않아서, 파일에는 SymbolName을 출력하였다.


Comments