avatar of 发明者量化-小小梦 发明者量化-小小梦
پر توجہ دیں نجی پیغام
4
پر توجہ دیں
1271
پیروکار

2.7 اشارے کا استعمال

میں تخلیق کیا: 2016-11-10 16:19:36, تازہ کاری: 2019-08-01 09:25:06
comments   22
hits   5979

اشارے کا استعمال


  • ### TA - عام طور پر استعمال ہونے والے اشارے فنکشن لائبریری کو بہتر بنانے کے لئے
TA 指标库
MACD       指数平滑异同平均线
KDJ        随机指标
RSI        强弱指标
ATR        平均真实波幅
OBV        能量潮
MA         移动平均线
EMA        指数平均数指标
BOLL       布林带
Alligator  Alligator Indicator
CMF        蔡金货币流量指标
Highest    周期最高价
Lowest     周期最低价

اس سے پہلے کہ ہم MACD ٹیگ کو API دستاویزات میں کھولیں ، آئیے اس کی تفصیلات دیکھیں:

2.7 اشارے کا استعمال

اگر DIF، DEA، اشاریہ الگورتھم وغیرہ میں دلچسپی رکھنے والے ساتھی طلباء بائیڈو میں MACD الگورتھم کی تلاش کر سکتے ہیں، تو بہت سارے وسائل ہیں، ہم نے انٹرفیس کو استعمال کرنے کے لئے تیار کیا ہے۔ ٹیسٹ کوڈ مندرجہ ذیل ہے:

function main(){
    var records = null;
    var macd = null;
    while(true){
        records = _C(exchange.GetRecords);  // 获取K线数据 ,默认为策略界面设置的K线周期, _C 是一个容错的内置函数。
                                            // _C 详见 https://www.fmz.com/bbs-topic/320  问题7。
        macd = TA.MACD(records);   // 不加参数的话,使用的是默认参数  12, 26, 9
        Log("macd[0]", macd[0]);   // DIF
        Log("macd[1]", macd[1]);   // DEA
        Log("macd[2]", macd[2]);   // MACD 
        Log("macd[0]长度", macd[0].length);   // DIF 长度
        Log("macd[1]长度", macd[1].length);   // DEA 长度
        Log("macd[2]长度", macd[2].length);   // MACD 长度
        Log("records 长度:", records.length);  // 显示一下 records 的长度。
        Sleep(1000 * 60 * 5);
    }
}

ایم او ڈی ٹیسٹ کے نتائج:

2.7 اشارے کا استعمال

جیسا کہ آپ دیکھ سکتے ہیں ، جب اعداد و شمار کا حساب لگایا جاتا ہے تو وہ سب صفر ہوتے ہیں ، اور اس کے بعد کے اعداد و شمار کی ایک خاص تعداد شروع ہوتی ہے۔ اس کی وجہ یہ ہے کہ اشارے کے پیرامیٹرز کے ذریعہ طے شدہ حساب کتاب کا دورانیہ اس وقت تک نہیں ہوسکتا ہے جب تک کہ اعداد و شمار کی مقدار (ریکارڈز ڈیٹا) اس دورانیے کو پورا نہ کرے۔ لہذا ، اشارے کو استعمال کرنے سے پہلے ، اشارے کی وضاحت کو جاننا ضروری ہے۔ اور پروگرام میں اس بات کا تعین کریں کہ اشارے کے حساب کتاب کے لئے استعمال ہونے والی K لائن ڈیٹا کی لمبائی ہے۔ تاکہ لمبائی کی کمی کی صورت میں ، غلط قدر کا حساب نہ لگایا جاسکے ، اور غلط قدر کا استعمال پروگرام کی غلطی کا سبب بنے گا۔

ذیل میں ہم نے چارٹ انٹرفیس کا استعمال کرتے ہوئے ایک چارٹ میں دکھایا گیا ہے، اور اس کے مقابلے میں ایک ایکسچینج کے ڈسپلے چارٹ (ڈسپلے میں OKCoin منتخب کریں) ، کوڈ کو دیکھنے کے لئے:

var ChartCfg = {
tooltip: {xDateFormat: '%Y-%m-%d %H:%M:%S, %A'},
    chart: { zoomType:'x',panning:true },//图表类型  
    title: { text: "K-macd"}, //标题
    rangeSelector: {
            buttons:  [{type: 'hour',count: 1, text: '1h'}, {type: 'hour',count: 3, text: '3h'}, {type: 'hour', count: 8, text: '8h'}, {type: 'all',text: 'All'}],
            selected: 0,
            inputEnabled: false
        },
    subtitle: {text: "测试macd"},//副标题
    xAxis:{type: 'datetime'},
    yAxis: [{
            title: {text: 'K线'},//标题
            style: {color: '#4572A7'},//样式 
            opposite: false  //生成右边Y轴
        },
       {
            title:{text: "macd"},
            opposite: true  //生成右边Y轴  ceshi
       }
    ],
    series: [//系列
        {type:'candlestick',yAxis:0,name:'K',id:'KLine',data:[]},
        {name:"DIF",type:'spline',yAxis:1,data:[]},
        {name:"DEA",type:'spline',yAxis:1,data:[]},
        {name:"MACD量柱",type:'spline',yAxis:1,data:[]},
        ]                  
};
function main(){
    var records = null;
    var macd = null;
    var perRecords = _C(exchange.GetRecords);
    var perRecordTime = perRecords[perRecords.length - 1].Time;
    var chart_obj = Chart(ChartCfg); // 初始化图表
    chart_obj.reset();
    while(true){
        records = _C(exchange.GetRecords);  // 获取K线数据 ,默认为策略界面设置的K线周期, _C 是一个容错的内置函数。
        if(!records && records.length < 26 ){
            continue;
        }
        macd = TA.MACD(records, 12, 26, 9);   // 不加参数的话,使用的是默认参数  12, 26, 9
        if(records[records.length - 1].Time !== perRecordTime){                                    // _C 详见 https://www.fmz.com/bbs-topic/320  问题7。
            //先更新,再添加K线
            chart_obj.add(0, [records[records.length - 2].Time, records[records.length - 2].Open, records[records.length - 2].High, records[records.length - 2].Low, records[records.length - 2].Close], -1);   // 跟新刚完成的bar。
            chart_obj.add(0, [records[records.length - 1].Time, records[records.length - 1].Open, records[records.length - 1].High, records[records.length - 1].Low, records[records.length - 1].Close]);       // 添加新出现的bar
            //先更新,添加指标线
            chart_obj.add(1, [records[records.length - 2].Time, macd[0][records.length - 2]], -1);   // 更新
            chart_obj.add(1, [records[records.length - 1].Time, macd[0][records.length - 1]]);
            
            chart_obj.add(2, [records[records.length - 2].Time, macd[1][records.length - 2]], -1);   // 更新
            chart_obj.add(2, [records[records.length - 1].Time, macd[1][records.length - 1]]);
            
            chart_obj.add(3, [records[records.length - 2].Time, macd[2][records.length - 2]], -1);   // 更新
            chart_obj.add(3, [records[records.length - 1].Time, macd[2][records.length - 1]]);
            
            perRecordTime = records[records.length - 1].Time;
        }else{
            //只更新当前的bar 和 线
            chart_obj.add(0, [records[records.length - 1].Time, records[records.length - 1].Open, records[records.length - 1].High, records[records.length - 1].Low, records[records.length - 1].Close], -1);
            chart_obj.add(1, [records[records.length - 1].Time, macd[0][records.length - 1]], -1);   // 更新
            chart_obj.add(2, [records[records.length - 1].Time, macd[1][records.length - 1]], -1);   // 更新
            chart_obj.add(3, [records[records.length - 1].Time, macd[2][records.length - 1]], -1);   // 更新
        }
        chart_obj.update(ChartCfg);
        Sleep(1000);
    }
}

روبوٹ انٹرفیس پر K لائن دورانیہ پیرامیٹر 1 منٹ پر سیٹ کیا گیا ہے۔ چونکہ اثر دیکھنے کے لئے کچھ وقت چلانے کی ضرورت ہے ، لہذا ایک چھوٹا سا دورانیہ منتخب کریں۔

2.7 اشارے کا استعمال 2.7 اشارے کا استعمال

جیسا کہ اس گراف سے دیکھا جاسکتا ہے Inventor Quantified Robot Running ڈی آئی ایف کے حساب سے تقریبا 2.729 ، ڈی ای اے کے حساب سے تقریبا 2.646 MACD پیمائشی کالم تقریبا 0.0831 اصل OKCoin ایکسچینج ٹرانزیکشن چارٹ میں دکھایا گیا ہے کہ DIF 2.73 ، DEA 2.65 ہے اور MACD مقدار کالم 0.17 ہے جیسا کہ آپ دیکھ سکتے ہیں، پہلے دو DIF اور DEA میں بہت کم فرق ہے، اور OKCoin نے چار چار اور پانچ پانچ، MACD کے مقابلے میں دوگنا ہے، کیونکہ OKCoin اس طرح سے حساب کرتا ہے: (DIF-DEA) * 2، عام طور پر DIF-DEA = 2.729 - 2.646 = 0.083، اگر ہم اس کو 2 سے ضرب دیں تو 0.166 تقریباً 0.17 کے برابر ہے۔

دوسرے اشارے کا استعمال بنیادی طور پر اسی طرح ہوتا ہے۔

ٹی اے لائبریری میں عام طور پر استعمال ہونے والے اشارے کے علاوہ ، طالبان لائبریری میں بہت سارے اشارے ہیں۔ مثال کے طور پر ، آئیے ہم talib.STOCHRSI کا استعمال کرتے ہیں ، API دستاویزات کی وضاحت دیکھیں:

STOCHRSI	Stochastic Relative Strength Index
STOCHRSI(Records[Close],Time Period = 14,Fast-K Period = 5,Fast-D Period = 3,Fast-D MA = 0) = [Array(outFastK),Array(outFastD)]

جیسا کہ آپ دیکھ سکتے ہیں ، پیرامیٹرز کی ترتیب talib.STOCHRSI ((ریکارڈز ، 14 ، 14 ، 3 ، 3) ہے ، جو بنیادی طور پر اوپر MACD کی طرح کا کوڈ ہے ، اس میں کچھ تبدیلیاں کی گئیں ، چلیں اور دیکھیں

var ChartCfg = {
tooltip: {xDateFormat: '%Y-%m-%d %H:%M:%S, %A'},
    chart: { zoomType:'x',panning:true },//图表类型  
    title: { text: "stochrsi"}, //标题
    rangeSelector: {
            buttons:  [{type: 'hour',count: 1, text: '1h'}, {type: 'hour',count: 3, text: '3h'}, {type: 'hour', count: 8, text: '8h'}, {type: 'all',text: 'All'}],
            selected: 0,
            inputEnabled: false
        },
    subtitle: {text: "测试stochrsi"},//副标题
    xAxis:{type: 'datetime'},
    yAxis: [{
            title: {text: 'K线'},//标题
            style: {color: '#4572A7'},//样式 
            opposite: false  //生成右边Y轴
        },
       {
            title:{text: "K-D"},
            opposite: true  //生成右边Y轴  ceshi
       }
    ],
    series: [//系列
        {type:'candlestick',yAxis:0,name:'K',id:'KLine',data:[]},
        {name:"K",type:'line',yAxis:1,data:[]},
        {name:"D",type:'line',yAxis:1,data:[]},
        ]                  
};
function main(){
    var records = null;
    //var macd = null;
    var stochrsi = null;
    var perRecords = _C(exchange.GetRecords);
    var perRecordTime = perRecords[perRecords.length - 1].Time;
    var chart_obj = Chart(ChartCfg); // 初始化图表
    chart_obj.reset();
    while(true){
        records = _C(exchange.GetRecords);  // 获取K线数据 ,默认为策略界面设置的K线周期, _C 是一个容错的内置函数。
        if(!records && records.length < 26 ){
            continue;
        }
        //macd = TA.MACD(records, 12, 26, 9);   // 不加参数的话,使用的是默认参数  12, 26, 9
        stochrsi = talib.STOCHRSI(records, 14, 5, 3, 0);
        if(records[records.length - 1].Time !== perRecordTime){                                    // _C 详见 https://www.fmz.com/bbs-topic/320  问题7。
            //添加K线
            chart_obj.add(0, [records[records.length - 2].Time, records[records.length - 2].Open, records[records.length - 2].High, records[records.length - 2].Low, records[records.length - 2].Close], -1);   // 跟新刚完成的bar。
            chart_obj.add(0, [records[records.length - 1].Time, records[records.length - 1].Open, records[records.length - 1].High, records[records.length - 1].Low, records[records.length - 1].Close]);       // 添加新出现的bar
            //添加指标线
            chart_obj.add(1, [records[records.length - 2].Time, stochrsi[0][records.length - 2]], -1);   // 更新
            chart_obj.add(1, [records[records.length - 1].Time, stochrsi[0][records.length - 1]]);
            
            chart_obj.add(2, [records[records.length - 2].Time, stochrsi[1][records.length - 2]], -1);   // 更新
            chart_obj.add(2, [records[records.length - 1].Time, stochrsi[1][records.length - 1]]);
            
            perRecordTime = records[records.length - 1].Time;
        }else{
            //只更新当前的bar 和 线
            chart_obj.add(0, [records[records.length - 1].Time, records[records.length - 1].Open, records[records.length - 1].High, records[records.length - 1].Low, records[records.length - 1].Close], -1);
            chart_obj.add(1, [records[records.length - 1].Time, stochrsi[0][records.length - 1]], -1);   // 更新
            chart_obj.add(2, [records[records.length - 1].Time, stochrsi[1][records.length - 1]], -1);   // 更新
        }
        chart_obj.update(ChartCfg);
        LogStatus("倒数第一组数据:", stochrsi[0][stochrsi[0].length - 1], stochrsi[1][stochrsi[1].length - 1], "    倒数第二组数据:", stochrsi[0][stochrsi[0].length - 2], stochrsi[1][stochrsi[1].length - 2]);
        Sleep(1000);
    }
}

میں نے اس کے بارے میں ایک چھوٹی سی معلومات تلاش کی اور پھر ایک اور پوسٹ شائع ہوئی۔ اس میں کہا گیا ہے کہ اس کے بارے میں کوئی معلومات نہیں ہے، لیکن اس کے بارے میں ایک چھوٹی سی معلومات ہے، جس میں کہا گیا ہے کہ اس کے بارے میں کوئی معلومات نہیں ہے۔ STOCHRSI اشارے کی تفہیم اس کے علاوہ، میں نے اس کے بارے میں لکھا ہے کہ یہ بہت سست ہے، یہ بہت کم کارکردگی ہے، یہ بہت سست ہے، اور یہ سیکھنے کا حق ہے.