마스터욱
Toggle navigation
  • 회원가입 | 정보찾기
ICON NAVIGATION
정보수정 쪽지함 주변맛집 익명채팅
공지사항 채팅 개발문의 방명록
  • MAIN NAVIGATION
  • 메인
  • 마스터욱 공간
    • 마스터욱 소개
    • 개발 리스트
    • 공지사항
    • 방명록
  • 마스터욱 외부자료
    • 네이버
    • 티스토리
    • 깃허브(github)
  • 개인 프로젝트
    • 랜덤 이성 채팅
    • Auto 크롤링
    • Javascript 카카오 채팅
    • 파이썬 뉴스매매
    • C# 키움 주식 자동매매
    • C# 키움 주식 패턴 분석
    • PHP 욱보드
    • 업비트 자동매매 개발
    • 업비트 자동매매 일지
  • 개발 의뢰
    • 개발 문의
    • 개발 견적
    • 개발 피드백
    • FAQ
  • 개발 경험 Tip
    • PHP
    • JSP
    • HTML
    • Javascript
    • Android
    • C#
    • MySQL
    • Linux
    • Python
    • NodeJS
    • React
    • Vue.js
    • Flutter
    • 정규식
    • 기타
  • 커뮤니티
    • 자유게시판
    • 추천사이트
    • 영화
    • 여행
    • 유머
    • Overseas News
  • 맛집&즐길 거리 탐방
    • 맛집 정보
    • 즐길 거리 정보
    • 내 주위 맛집&즐길 거리
  • 공유 사진
    • 음식
    • 여행
    • 캐릭터
    • 배경
    • 기타
    • 이모티콘
    • 일러스트
  • 놀이터
    • 블록뽀시기
    • 트레이딩뷰
    • 로또 시뮬레이션
    • 쳇쳇 익명 채팅
    • 랜덤 이성 채팅
    • AI 채팅
    • 미니 채팅
    • 바이너리 테스트
    • 마번호 생성기
    • 바카라 시뮬레이션
    • 홀짝점수 테스트
    • 로또 분석기
SITE STATISTICS
  • - 명 현재 접속자
  • 229 명 오늘 방문자
  • 1,673 명 어제 방문자
  • 5,192 명 최대 방문자
  • 695,704 명 전체 방문자
  • 2,570 개 전체 게시물
  • 496 개 전체 댓글수
Facebook Twitter GooglePlus KakaoStory NaverBand
  1. 홈
  2. 자바스크립트
목록으로

트레이딩뷰(trading view) 차트 API 개발

마스터욱 29 3135 0 0 2020-04-12 15:14:02

정보의 바다 구글에도 트레이딩뷰(trading view) 차트 API 를 개발해본 개발자의 자료를 찾을수가 없다.

이유는 모르겠지만(내가 못찾은건가 -_-;), 힘들게 삽질해가면서 트레이딩뷰를 나의 차트DB 데이터와 연동한 내용을 기술해 볼까한다.

일단 지금은 작업완료후 진이 다 빠진 관계로... 잠시 쉬었다가 다음 게시글부터...

트레이딩뷰(trading view) 차트 API 개발
 

=========================================================================================================================

트레이딩뷰 개발소스 오픈

 

<script src="/js/socket.io-1.3.5.js"></script>

<script type="text/javascript" src="/js/charting_library/charting_library.min.js"></script>

<script type="text/javascript" src="/js/datafeeds/udf/dist/polyfills.js"></script>

<script type="text/javascript" src="/js/datafeeds/udf/dist/bundle.js"></script>

<script type="text/javascript">

var socket_chart = io.connect(호스트, { transports: ['websocket'] });

var chart_realtime_callback = null;

socket_chart.on('recv', function(arg){ //내가 만든 차트 소켓서버와 연결

//console.log(arg[0]);

 

if(chart_realtime_callback != null) //콜백함수가 지정완료되면 연결된 소켓으로 데이터 실시간 수신후 차트에 반영

{

var info = arg[0];

chart_realtime_callback({

time : new Date(info['trade_time']).getTime(),

close : info['end_price'],

open : info['start_price'],

low : info['low_price'],

high : info['high_price']

});

}

});

 

//https://github.com/tradingview/charting_library/wiki/JS-Api

//https://www.tradingview.com/wiki/Widget:TradingView_Widget

var Datafeed = new Datafeeds.UDFCompatibleDatafeed("api/trading_view");

 

 

var supportedResolutions_ = {

"1": "1분 투자",

};

var supportedResolutions = Object.keys(supportedResolutions_);

var config = {

supported_resolutions: supportedResolutions

};

 

function initOnReady()

{

//console.log('chart start');

var widget = new TradingView.widget({

fullscreen: false,

width : '100%',

height : '<?=$chart_height?>',

symbol: '<?=$name?>',

 

//interval : ["1", "15", "240", "D", "6M"] will give you "1 minute, 15 minutes, 4 hours, 1 day, 6 months" in resolution widget.

//interval : "5",

 

container_id: "tv_chart_container",

//datafeed: Datafeed,

library_path: "plugin/charting_library-master/charting_library/",

locale: "ko",

 

timezone : "Asia/Seoul",

 

//https://github.com/mmmy/css3demos/wiki/Featuresets

disabled_features: ["header_symbol_search","header_resolutions","header_compare"],

 

//preset: "mobile",

 

//https://github.com/mmmy/css3demos/wiki/Overrides

overrides: {

"mainSeriesProperties.candleStyle.wickUpColor": 'red',

"mainSeriesProperties.candleStyle.wickDownColor": 'blue',

"mainSeriesProperties.candleStyle.upColor": 'red',

"mainSeriesProperties.candleStyle.downColor": 'blue',

"mainSeriesProperties.candleStyle.borderColor": "#378658",

"mainSeriesProperties.candleStyle.borderUpColor": "red",

"mainSeriesProperties.candleStyle.borderDownColor": "blue",

},

time_frames: [],

datafeed: {

onReady: function (cb) {

//console.log(cb);

setTimeout(function () {

cb(config);

}, 0);

},

searchSymbols: function (userInput, exchange, symbolType, onResultReadyCallback) {

console.log('1');

},

resolveSymbol: function (symbolName, onSymbolResolvedCallback, onResolveErrorCallback){

//console.log('2');

var symbol_stub = {

name: '<?=$name?>',

description: "",

type: "<?=$name?>",

session: "24x7",

timezone: "Asia/Seoul",

ticker: '<?=$name?>',

minmov: 1,

pricescale: 100,

has_intraday: true,

//intraday_multipliers: ["1"], //Object.keys(supportedResolutions_),

//supported_resolution: supportedResolutions,

supported_resolutions: [60],

//volume_precision: 4,

data_status: "streaming"

};

 

setTimeout(function () {

onSymbolResolvedCallback(symbol_stub);

}, 0);

},

getBars: function (symbolInfo, resolution, from, to, onHistoryCallback, Callback, firstDataRequest) {

//console.log('3');

var arg = {};

arg['from'] = from;

arg['to'] = to;

$.get("/trading_view/history/getBars.php?chart_limit=100", arg, function(bars){

onHistoryCallback(bars, {

noData: bars.length <= 0

});

}, "json");

},

subscribeBars: function (symbolInfo, resolution, onRealtimeCallback, subscribeUID, onResetCacheNeededCallback) {

chart_realtime_callback = onRealtimeCallback; //여기에 차트 콜백함수 부여

},

unsubscribeBars: function (subscriberUID) {

//console.log('5');

},

calculateHistoryDepth: function (resolution, resolutionBack, intervalBack) {

//console.log('resolution = ' + resolution);

return resolution < 60

? {resolutionBack: "D", intervalBack: "1"}

: undefined;

},

getMarks: function (symbolInfo, startDate, endDate, onDataCallback, resolution) {

console.log('7');

},

getTimeScaleMarks: function (symbolInfo, startDate, endDate, onDataCallback, resolution) {

console.log('8');

},

getServerTime: function (cb) {

//console.log(cb);

}

}

});

};

 

$(document).ready(function(){

initOnReady();

});

</script>

 

 

======================= 부가설명 =============================

차트데이터를 나의 데이터베이스의 데이터로 실시간 반영을 위해서는,

소켓서버를 하나 만들고, 그 소켓서버와 내 웹서버 프론트를 연결해서, 실시간으로 소켓서버에서 차트데이터를 받아오면 된다.

위 소스에서는 소켓연결을 socket.io 를 사용하였으며, 소켓서버는 참고로 nodejs 서버를 사용하였습니다.

0
0

목록

Facebook Twitter GooglePlus KakaoStory NaverBand
29 Comments

비밀번호 확인

확인
댓글은 자신을 나타내는 '얼굴'입니다. *^^*
등록
자동등록방지 숫자를 순서대로 입력하세요.

댓글수정


글쓰기
검색
번호 제목 이름 날짜 조회
  • 72
    leaflet 무료지도
    마스터욱
    조회수 195   25-12-29 19:13
    마스터욱
    25-12-29 19:13
    195
  • 71
    스마트폰 하단 태스크 바(task bar)에 따른 하단 bottom 자동으로 제어하기
    마스터욱
    조회수 239   25-08-31 22:06
    마스터욱
    25-08-31 22:06
    239
  • 70
    ajax 리스팅, 스크롤 위치 유지 스크립트
    마스터욱
    조회수 187   25-08-11 02:58
    마스터욱
    25-08-11 02:58
    187
  • 69
    [1] http 에러까지 return 해주는 jquery ajax post [1]
    마스터욱
    조회수 328   24-06-04 14:25
    마스터욱
    24-06-04 14:25
    328
  • 68
    아이폰 사파리에서 window.open 이 작동되지 않는 문제
    마스터욱
    조회수 299   23-07-29 09:25
    마스터욱
    23-07-29 09:25
    299
  • 67
    콜백(callback)지옥 탈출하기
    마스터욱
    조회수 294   23-02-27 16:28
    마스터욱
    23-02-27 16:28
    294
  • 66
    IntersectionObserver
    마스터욱
    조회수 158   22-11-24 14:42
    마스터욱
    22-11-24 14:42
    158
  • 65
    [1] async, await 사용예시 [1]
    마스터욱
    조회수 192   22-11-18 12:41
    마스터욱
    22-11-18 12:41
    192
  • 64
    스크롤 페이징
    마스터욱
    조회수 219   22-11-01 17:53
    마스터욱
    22-11-01 17:53
    219
  • 63
    callback function 을 넘길때 파라메터(매개변수) 까지 전달하는 방법
    마스터욱
    조회수 180   22-10-20 02:31
    마스터욱
    22-10-20 02:31
    180
  • 62
    내가 만든 Form SerializeArray
    마스터욱
    조회수 205   22-10-12 04:02
    마스터욱
    22-10-12 04:02
    205
  • 61
    모바일 주소창 안보이게 하는 소스코드
    마스터욱
    조회수 172   22-08-17 03:08
    마스터욱
    22-08-17 03:08
    172
  • 60
    Ajax 크로스 도메인(cross domain) 해결방법
    마스터욱
    조회수 148   21-11-26 02:01
    마스터욱
    21-11-26 02:01
    148
  • 59
    javascript : JSON 데이터 안의 데이터를 동적으로 바꾸는 방법
    마스터욱
    조회수 164   21-06-12 00:55
    마스터욱
    21-06-12 00:55
    164
  • 58
    JSON Object(오브젝트) 데이터를 표(Table) 형식으로 보여주게 하는 함수(자체제작)
    마스터욱
    조회수 153   21-06-07 15:06
    마스터욱
    21-06-07 15:06
    153
  • 57
    자바스크립트 팝업(POPUP) 자동(Auto) 리사이징(Resizing)
    마스터욱
    조회수 150   21-06-06 23:12
    마스터욱
    21-06-06 23:12
    150
  • 56
    자바스크립트 get 파라메터를 string 으로 리턴해주는 함수
    마스터욱
    조회수 179   21-05-06 15:41
    마스터욱
    21-05-06 15:41
    179
  • 55
    비트맥스API Javascript Websocket Private API 연결
    마스터욱
    조회수 176   21-04-17 16:29
    마스터욱
    21-04-17 16:29
    176
  • 54
    JSON 데이터를 Table 코드로 보기좋게 변경해주는 함수(재귀)
    마스터욱
    조회수 161   21-04-17 15:18
    마스터욱
    21-04-17 15:18
    161
  • 53
    navigator.geolocation 쉽게 사용하기
    마스터욱
    조회수 185   21-03-31 01:31
    마스터욱
    21-03-31 01:31
    185
글쓰기
검색
  • 1
  • 2
  • 3
  • 4
  • 다음

Search

개인정보처리방침
마스터욱. All rights reserved.

Close

0 명 접속중
Time Loading...