دو Y محوروں کو ڈرائنگ کرنے کے لئے ڈرائنگ لائن لائبریری کی ٹیمپلیٹ کا استعمال کیسے کریں

مصنف:چھوٹا سا خواب, تخلیق: 2017-04-07 14:14:29, تازہ کاری: 2017-10-11 10:26:42

ڈرائنگ لائن لائبریری کے ساتھ کس طرح استعمال کریں ٹیمپلیٹ ڈرائنگ 2 Y محور

  • پہلے کاپی کر سکتے ہیں画线类库اس ٹیمپلیٹ کو اپنے کنٹرول سینٹر میں منتقل کر دیا گیا ہے۔ آئیے اس کے بارے میں مزید جانیں:

画线类库
简化了策略图表画线的逻辑, 可以直接调用封装好的函数

支持画多条线
支持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)
    }
}

اس طرح کے مسائل کا سامنا کرنا پڑ سکتا ہے جب آپ اس ٹیمپلیٹ کو استعمال کرتے ہیں:

img

اس کی وجہ یہ ہے کہ MACD اشارے کی مقدار بہت کم ہے اور یہ کہ یہ چارٹ پر Y محور کا استعمال کرتے ہوئے ظاہر ہوتا ہے ، اشارے بہت کم پوزیشن میں ہیں ، K لائن کی قیمت بہت زیادہ پوزیشن میں ہے ، اور اس کے نتیجے میں ان کے اپنے علاقوں میں ظاہر نہیں ہوتا ہے۔

اس کا حل یہ ہے کہ چارٹ میں ایک Y محور بھی شامل کیا جائے تاکہ اس میں الگ الگ اشارے کی لائن دکھائی جاسکے۔ مثال کے طور پر:

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);
    }
}

یاد رکھیں کہ ٹیسٹ کے دوران منتخب کریںimg

اسکرین شاٹ:

img


مزید

پینگلیہینگایک ہفتہ صرف کوڈ لکھنے کا وقت ہوتا ہے ، اور پہلے مہینوں سے زیادہ عرصے سے سیکھنے کے بعد ، میں کوڈ کرنے کی ہمت نہیں رکھتا ہوں۔

پینگلیہینگمسئلہ حل ہوگیا

پینگلیہینگبہت شکریہ! https://dn-filebox.qbox.me/90d55ceceda193667f26b9b21d5122be8a2bcb2b.png تقریبا ایک ہفتہ گزر گیا، اور آخر میں میں نے ایک آسان ورژن لکھا جس میں صرف 1 فیصد آمدنی تھی، اور مجموعی آمدنی منفی تھی.

پینگلیہینگہر بار جب آپ صفحہ کھولتے ہیں تو آپ کو ایک لمحے کے لئے جھپکنا پڑتا ہے تاکہ آپ کو معلوم ہو سکے کہ اعداد و شمار کی علامت کیا ہے۔

پینگلیہینگبہت بہت شکریہ، میں صرف منتقلی کی آمدنی کا حساب کروں گا، لیکن یہ حکمت عملی گراف تاریخی معلومات کو محفوظ نہیں کر سکتا، کیوں میں ہر بار صفحہ کو تازہ کرتا ہوں، یہ گراف شروع ہوتا ہے۔

چھوٹا سا خواب

چھوٹا سا خوابایک ہفتہ، تیزی سے 666

چھوٹا سا خوابBotVS پر روبوٹ کے چارٹ کو مستقل طور پر لاگ ان ڈیٹا بیس میں محفوظ کیا جاتا ہے ، جو آپ کے منتظم کے مقامی طور پر ہے ، اگر اسے حذف کردیا گیا ہے تو ، آپ کو یہ دیکھنے کی ضرورت ہے کہ آیا آپ کے کوڈ میں ابتدائیہ ہے یا نہیں۔ چارٹ کو حذف کریں۔

چھوٹا سا خوابکیا؟ یہ؟