Type/to search
8
Follow
1375
Followers
Cách sử dụng mẫu "Thư viện vẽ đường thẳng" để vẽ hai trục Y
Tutorials
Created 2017-04-07 14:14:29  Updated 2017-10-11 10:26:42
 9
 3901

Làm thế nào để sử dụng mẫu kho lưu trữ vẽ dòng vẽ 2 trục Y

  • Bạn có thể sao chép nó trước.画线类库Đây là một mẫu có tên gọi Control Center.

画线类库 简化了策略图表画线的逻辑, 可以直接调用封装好的函数 支持画多条线 支持K线图 支持flag小图标 你也可以添加更多图形的支持 function main() { var isFirst = true while (true) { var records = exchange.GetRecords(); if (records && records.length > 0) { $.PlotRecords(records, 'BTC') if (isFirst) { $.PlotFlag(records[records.length-1].Time, 'Start', 'S') isFirst = false } } var ticker = exchange.GetTicker() if (ticker) { $.PlotLine('Last', ticker.Last) $.PlotTitle('Last ' + ticker.Last) } Sleep(60000) } }

Một số vấn đề mà bạn có thể gặp khi sử dụng mẫu này là:

img

Lý do là MACD được tính quá nhỏ, và giá hợp đồng Bitcoin được chia sẻ trên một trục Y. Điều này xảy ra trên biểu đồ, chỉ số ở vị trí rất thấp, giá K ở vị trí rất cao, và kết quả là các vị trí tương ứng không thể hiển thị quá nhỏ.

Giải pháp là thêm một trục Y vào biểu đồ để hiển thị các đường chỉ số riêng biệt.

var preTime = 0; var ChartObj = null; function main(){ LogReset(1); ChartObj = Chart(null); ChartObj.reset(); var records = null; var MACD = null; exchange.SetContractType("quarter"); // Log(exchange.GetUSDCNY()); // exchange.SetRate(exchange.GetUSDCNY()); exchange.SetRate(1); ChartObj = $.GetCfg(); ///* // 处理 指标轴------------------------ ChartObj.yAxis = [{ title: {text: 'K线'},//标题 style: {color: '#4572A7'},//样式 opposite: false //生成右边Y轴 }, { title:{text: "指标轴"}, opposite: true, //生成右边Y轴 ceshi } ]; // 初始化指标线 while(!records || records.length < 30){ records = _C(exchange.GetRecords); LogStatus("records.length:", records.length); Sleep(1000); } $.PlotRecords(records, 'OK期货'); $.PlotLine('dif', 0, records[records.length - 1].Time); $.PlotLine('dea', 0, records[records.length - 1].Time); var chart = $.PlotLine('macd', 0, records[records.length - 1].Time); // 修改指标线 坐标轴Y轴 for(var key in ChartObj.series){ if(ChartObj.series[key].name == 'dif' || ChartObj.series[key].name == 'dea' || ChartObj.series[key].name == 'macd'){ ChartObj.series[key].yAxis = 1; } } chart.update(ChartObj); chart.reset(); //*/ while(true){ records = _C(exchange.GetRecords); if(records.length > 50){ $.PlotRecords(records, 'OK期货'); MACD = TA.MACD(records); var dif = MACD[0]; var dea = MACD[1]; var macd = MACD[2]; if(preTime !== records[records.length - 1].Time){ $.PlotLine('dif', dif[dif.length - 2], records[records.length - 2].Time); $.PlotLine('dea', dea[dea.length - 2], records[records.length - 2].Time); $.PlotLine('macd', macd[macd.length - 2], records[records.length - 2].Time); $.PlotLine('dif', dif[dif.length - 1], records[records.length - 1].Time); $.PlotLine('dea', dea[dea.length - 1], records[records.length - 1].Time); $.PlotLine('macd', macd[macd.length - 1], records[records.length - 1].Time); preTime = records[records.length - 1].Time; }else{ $.PlotLine('dif', dif[dif.length - 1], records[records.length - 1].Time); $.PlotLine('dea', dea[dea.length - 1], records[records.length - 1].Time); $.PlotLine('macd', macd[macd.length - 1], records[records.length - 1].Time); } } LogStatus("records.length:", records.length, records[records.length - 1]); // Log(records[records.length - 1]); Sleep(1000); } }

Nhớ khi kiểm tra, hãy chọn img

Bức ảnh phản hồi:

img

Related Recommendations
Comment
All comments (9)

    。。。一周只是写代码的时间,前期学了几个多月都没敢动代码

    9 years ago

    问题已解决

    9 years ago

    非常感谢! img
    差不多一个星期了,终于写出可视化简易版,单纯搬砖收益1%,总收益为负的搬砖代码了

    9 years ago

    一个星期 速度 很快了 666

    9 years ago

    每次都要开启页面泡一会儿才能知道 图标化的数据信息

    9 years ago

    哦 ? 这...?

    9 years ago

    非常感谢,纯搬砖收益我会计算了,但是这个策略图就不能保存历史信息么,我为什么每次刷新页面,这个图表都会初始化。

    9 years ago

    BotVS 上的 机器人 的图表是 永久保存在日志 数据库的,在你的托管者 本地, 如果被清除了 您看下是不是 您代码里面有初始化 清除 图表的代码。

    9 years ago
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)