موجد کی کیمیائی کیمیائی ڈائری (دوسری) (مکمل)

مصنف:چھوٹا سا خواب, تخلیق: 2016-05-22 20:05:36, تازہ کاری: 2019-08-01 10:31:58

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

سوال نمبر ایک:

 var ChartObj = {//画图
    tooltip: {xDateFormat: '%Y-%m-%d %H:%M:%S, %A'},
    chart: { zoomType:'x',panning:true },//图表类型  
    title: { text: ''}, //标题
    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: " "},//副标题
    xAxis:{type: 'datetime'},
    yAxis: [{
            title: {text: 'K线'},//标题
            style: {color: '#4572A7'},//样式 
            opposite: false  //生成右边Y轴
        },
       {
            title:{text: 'WT'},
            opposite: true  //生成右边Y轴  ceshi
       }
    ],
    series: [//系列
        {name:'wt1',type:'spline',yAxis:1,data:[]},
        {type:'candlestick',yAxis:0,name:'K',id:'wt',data:[]},
        {name:'wt2',type:'spline',yAxis:1,data:[]},
        {type:'flags',onSeries:'wt',data:[]}
        ]                  
};
var chart = Chart(ChartObj);
var isFirst = true;
var preRecordTime = 0;
function Draw(){
    var strState = "";
    var fcolor = "";
    var msg = "";
    getRecords();
    if(isFirst === true){
        chart.reset();
        isFirst = false;
        preRecordTime = globalRecords[globalRecords.length - 1].Time;
    }
    if(preRecordTime === globalRecords[globalRecords.length - 1].Time){
        chart.add([1,[globalRecords[globalRecords.length - 1].Time,globalRecords[globalRecords.length - 1].Open,globalRecords[globalRecords.length - 1].High,globalRecords[globalRecords.length - 1].Low,globalRecords[globalRecords.length - 1].Close ],-1]);
    }else{
        //更新前一柱
        chart.add([1,[globalRecords[globalRecords.length - 2].Time,globalRecords[globalRecords.length - 2].Open,globalRecords[globalRecords.length - 2].High,globalRecords[globalRecords.length - 2].Low,globalRecords[globalRecords.length - 2].Close ],-1]);

        chart.add([1,[globalRecords[globalRecords.length - 1].Time,globalRecords[globalRecords.length - 1].Open,globalRecords[globalRecords.length - 1].High,globalRecords[globalRecords.length - 1].Low,globalRecords[globalRecords.length - 1].Close ]]);
       
        preRecordTime = globalRecords[globalRecords.length - 1].Time;
    }
    chart.update(ChartObj);
    //chart.reset(500);
}

کوڈ لگایا جا رہا ہے کہ اچھا نہیں ہے ~ یہ تھوڑا سا ہلکا نظر آ سکتا ہے، آپ کو sublime text کے اندر حاصل کرنے کے لئے چپک کر سکتے ہیں، سب سے پہلے سادہ الفاظ میں، مسئلہ یہ ہے کہ کوڈ لکھنے کے بعد چل رہا ہے، ایک عجیب منظر کا سامنا کرنا پڑا، تصویر دیکھیں:

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

 series: [//系列
        {name:'wt1',type:'spline',yAxis:1,data:[]},        //    索引为0的 数据项,   
        {type:'candlestick',yAxis:0,name:'K',id:'wt',data:[]},  // 索引为1
        {name:'wt2',type:'spline',yAxis:1,data:[]},    //索引为2
        {type:'flags',onSeries:'wt',data:[]}   //......
        ] 

اس پروگرام میں اعداد و شمار کو گراف میں لکھنے کے لئے کچھ اس طرح ہے:

  chart.add([1,[globalR.........    (太长了 没写完)      //   可以看到这里 我写入索引为1 的数据序列,就是add后面[ 符号后的 1,代表写入到{type:'candlestick',yAxis:0,name:'K',id:'wt',data:[]},  这个序列中。问题就在这,我越过了索引0,直接写入索引1的数据序列里,就会导致卡死。

اس کے بعد میں نے اسے تبدیل کیا:

  series: [//系列
        {type:'candlestick',yAxis:0,name:'K',id:'wt',data:[]},
        {name:'wt2',type:'spline',yAxis:1,data:[]},
        {type:'flags',onSeries:'wt',data:[]}
        ]  

تمام کوڈ جو اعداد و شمار کو گراف میں لکھتے ہیں (بنیادی طور پر 1 کو 0 میں تبدیل کرتے ہیں)

 chart.add([0,[globalRecords[globalRecords.length - 1].Time,globalRecords[globalRe..........(太长了。。。)

یہ حیرت انگیز ہے ، یہ نہیں کھڑا ہے ، یہ کام کرتا ہے ، کوئی مسئلہ نہیں ہے۔ اگرچہ مجھے نہیں معلوم کہ اس کی وجہ کیا ہے ، لیکن مجھے لگتا ہے کہ یہ گرافکس لائبریری کا مسئلہ ہونا چاہئے۔


سوال نمبر دو

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

گیٹ ٹکر نے فیوچر کی قیمتیں حاصل کیں کیوں کہ وہ اصل قیمت سے مختلف ہیں؟img

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

function main(){
    exchange.SetContractType("this_week");
    var ticker = exchange.GetTicker();
    var huilv = exchange.GetRate();
    var OKhuilv = exchange.GetUSDCNY();
    while(true){
        huilv = exchange.GetRate();
        ticker = exchange.GetTicker();
        OKhuilv = exchange.GetUSDCNY();
        LogStatus("ticker:",ticker,"\n","huilv",huilv,"OKhuilv",OKhuilv);
        Sleep(1000);
    }
}

آپریشن:img imgمجھے پتہ چلا کہ کرنسی کی شرح مختلف ہے ، میں نے یہاں کرنسی کی شرح حاصل کرنے کے لئے دو مختلف API افعال استعمال کیے ہیں۔ ((اوکے فیوچر آن لائن ، جو یوآن میں قیمت کے طور پر مقرر کیا جاسکتا ہے)imgاگر آپ نے دیکھا کہ اے پی آئی کا تعارف کیا گیا ہے تو ، کیا آپ کو لگتا ہے کہ موپی اوکے فیوچر اپنی کرنسی استعمال کرتے ہیں؟

اس کے علاوہ ، آپ کو یہ بھی معلوم ہونا چاہئے کہ آپ کے پاس کیا ہے اور آپ کو کیا کرنا چاہئے۔imgچونکہ اوکے کی ویب سائٹ پر قیمت صرف ایک عدد کے بعد ہے (باقی تمام نہیں دکھائی دے رہے ہیں) ، اس کا اندازہ لگایا گیا ہے کہ اس میں تھوڑی سی غلطی ہوگی۔ یہ دیکھ کر کہ نتائج بنیادی طور پر ایک جیسے ہیں ، یہ مکمل طور پر یقینی نہیں ہوسکتا ہے کہ گیٹ ٹکر کی مارکیٹ قیمت اور اوکے فیوچر کی ویب سائٹ پر ہونے والے فرق کو زر مبادلہ کی عدم یکسانیت کی وجہ سے ہونا چاہئے۔


مسئلہ 3: بٹ کوائن OKcoin پلیٹ فارم مارکیٹ لسٹ مسئلہ ((اس مسئلے کو ایڈجسٹ کیا گیا ہے ، اب مارکیٹ لسٹ کو ریٹویٹ کے وقت اور حقیقی وقت کی مارکیٹ لسٹ میں یکساں کیا گیا ہے۔: خریدنے کے لئے دوسرا پیرامیٹر RMB کی رقم ہے ، اور فروخت کے لئے دوسرا پیرامیٹر اشارے کی تعداد ہے۔ تفصیلی سبق:https://www.fmz.com/bbs-topic/474


سوال نمبر چار: پچھلی رات ایک دوست نے مجھ سے پوچھا کہ اسٹریٹجی کے بارے میں کہاں ہے؟ انٹرایکٹو بٹن کے استعمال کے مثالوں کے بارے میں، میں نے سوچا، صرف اپنے آپ کو لکھنا، ہاتھ میں مشق کرنا، اور اس کے علاوہ، ہم سب کے ساتھ سیکھنے کے لئے آسان ہے، پرانے طریقہ کار، پہلے کوڈ!

/* 交互按钮 测试
while (true) {
  var cmd = GetCommand();
  if (cmd) {
    Log(cmd);
  }
  Sleep(1000);
}
*/
function main(){
    var cmd = null; //初始化一些用到的变量,这个变量是直接接受 GetCommand 函数 返回值的。
    var jsonObjStr = null; //接收JSON对象字符串 的变量
    var jsonObj = null; // JSON 对象
    var keyValue = null; // JSON 对象中的  KEY 的值
    var arrStr = null; // 字符串数组
    var ticker = exchange.GetTicker(); 
    while(true){
        $.Draw(); // 画图函数 , 图表模板的 导出函数
        while(!ticker){
            ticker = exchange.GetTicker();
            Sleep(500);
        }
        cmd = GetCommand(); //获取  交互命令
        if (cmd) {
            Log("按下了按钮:",cmd);
            arrStr = cmd.split(":"); // GetCommand 函数返回的 是一个字符串,这里我处理的麻烦了,因为想熟悉一下JSON ,所以先对字符串做出处理,把函数返回的字符串以 : 号分割成2个字符串。储存在字符串数组中。
            
            
            jsonObjStr = '{' + '"' + arrStr[0] + '"' + ':' + arrStr[1] + '}'; // 把 字符串数组中的元素重新 拼接 ,拼接成 JSON 字符串  用于转换为JSON 对象。
            //Log(jsonObjStr);//ceshi
            //Log(typeof(cmd));//ceshi
            /*ceshi
            for(var obj1 in cmd){ //  测试用  注释掉了
                Log(cmd[obj1]);
            }
            */
            
            jsonObj = JSON.parse(jsonObjStr); // 转换为JSON 对象
            //Log("ceshi"); //ceshi
            for(var key in jsonObj){ // 遍历对象中的  成员名
                keyValue = jsonObj[key]; //取出成员名对应的 值 , 就是交互按钮的值
            }
            Log(keyValue); //ceshi 
            switch(keyValue){ // 分支选择 操作
                case 1:
                    $.SignOP((new Date()).getTime(),ticker.Last,1,keyValue ); //开多仓
                    break;
                case 2:
                    $.SignOP((new Date()).getTime(),ticker.Last,1,keyValue ); // 开空仓
                    break;
                case 0:
                    $.SignOP((new Date()).getTime(),ticker.Last,1,keyValue );//平仓
                    break;
                default: break;
            }
        }
        Sleep(2000);
    }
}

میں نے مندرجہ بالا کوڈ کی جانچ پڑتال کی ہے، اور یہ عوامی طور پر میدان میں نہیں ہے، لہذا دوستوں کو اس کی جانچ کرنا چاہتے ہیں، آپ کو دستی طور پر ایک انٹرایکٹو بٹن شامل کرنا ہوگا؛ اور ایک گراف ٹیمپلیٹ شامل کرنا ہوگا؛ میرے پاس اسکرین شاٹس بھی ہیں۔imgآپ کو مندرجہ بالا ترتیبات پر عمل کرنے کی ضرورت ہے۔

یہ کیسے کام کرتا ہے:

img img

یقیناً حکمت عملی کی جانچ پڑتال نہیں کی جا سکتی، آپ کو خود روبوٹ بنانا ہوگا، اسے سمیلیٹر کے ساتھ جانچنا ہوگا، انٹرایکٹو بٹن پر کلک کریں، اور چارٹ پر اس کے مطابق آپریشن نشان زد کیا جائے گا۔ یہاں کوڑی ڈالیں، امید ہے کہ آپ سب NB کی حکمت عملی لکھیں گے۔


سوال 5: صارف پوچھتا ہے کہ کس طرح موجودہ کرنسی کا نام حاصل کیا جاسکتا ہے اور کس طرح موجودہ K لائن کا دورانیہ حاصل کیا جاسکتا ہے۔ موجودہ تبادلے کی کرنسی کو حاصل کرنے کے لئے API افعال دستیاب ہیں ، میں نے K لائن کا دورانیہ حاصل کرنے کے مسئلے کو نسبتاً سادہ طریقے سے حل کیا ہے۔

function main() {
    var records = exchange.GetRecords();
    while(!records || records.length < 2){
        records = exchange.GetRecords();
        Sleep(500);
    }
    var currency = exchange.GetCurrency();
    var diffTime = records[records.length - 1].Time - records[records.length - 2].Time;
    if(diffTime/1000 >= 1 && diffTime/1000 < 60){
        Log("周期:",diffTime/1000,"秒");
    }else if(diffTime/1000/60 >= 1 && diffTime/1000/60 < 60 ){
        Log("周期:",diffTime/1000/60,"分钟");
    }else if(diffTime/1000/60/60 >= 1 && diffTime/1000/60/60 < 24 ){
        Log("周期:",diffTime/1000/60/60,"小时");
    }else if(diffTime/1000/60/60/24 >= 1){
        Log("周期:",diffTime/1000/60/60/24,"天");
    }
    Log("货币品种:",currency);
}

اگر آپ کے دوست دلچسپی رکھتے ہیں تو آپ اسے آزما سکتے ہیں۔


سوال نمبر 6: اگر آپ کو یہ سمجھ نہیں آتی ہے کہ نئے ورژن کے لئے کسٹم فیوچر ٹریڈنگ لائبریری میں شامل کردہ افعال کو کس طرح استعمال کیا جاسکتا ہے تو ، آپ کو QQ گروپ میں نئے تشریح شدہ ورژن کا کوڈ ڈاؤن لوڈ کرنے کی اجازت ہے۔

  • اسٹریٹیجی ٹیمپلیٹ کو اسٹریٹیجی اسکوائر میں نقل کیا جا سکتا ہے۔img

سوال 7: x = [1 for i in range ((n) ] کا کیا مطلب ہے؟

  • یہ دو دن خالی وقت میں پائیتھون دیکھ رہا ہوں ، مجموعی طور پر سیکھنے میں کوئی مشکل نہیں ہے ، لیکن پھر بھی بہت سارے مسائل کا سامنا کرنا پڑا ، میں نے پہلے یاد رکھا ہے۔ طویل وقت کے ساتھ ، آپ خود بھی جائزہ لے سکتے ہیں ، پائیتھون کے نئے آنے والوں کو بھی اسی طرح کے مسائل کا سامنا کرنا پڑتا ہے۔ =_=!

    سوال: کیا x = [1 for i in range ((n) ] کا مطلب ہے؟ جب میں نے پہلی بار یہاں دیکھا تو میرا بھی سر بڑا ہو گیا تھا ، ایسا لگتا ہے کہ میں نے اس طرح کی نحو پہلے کبھی نہیں دیکھی تھی۔ اندازہ لگائیں ، اندازہ لگائیں ، اندازہ نہیں لگائیں کہ اس کا کیا مطلب ہے۔

یہ پِیٹَن میں فہرست تجزیہ ہے، جس کا مطلب ہے کہ 1 سے n تک کی فہرست بنانا۔ فہرست تجزیہ کے بارے میں مندرجہ ذیل وضاحتیں ملاحظہ کی جائیں: وضاحت اور وضاحت >پائتون کی ایک طاقتور خصوصیت یہ ہے کہ اس کی فہرستوں کی تجزیہ، یہ ایک کمپیکٹ طریقہ فراہم کرتا ہے جس میں ایک فہرست کو دوسری فہرست میں نقشہ کرنے کے لئے ایک فنکشن کا اطلاق فہرست میں ہر عنصر پر کیا جا سکتا ہے۔ << فہرستوں کی تجزیہ، نام سے جانا جاتا ہے فہرستوں کا تعین >> فہرستوں کا تجزیہ for سے زیادہ نفیس اور تیز چلتا ہے، خاص طور پر بڑے اعداد و شمار کے لئے، فہرستوں کا تجزیہ سب سے زیادہ مواقع کی جگہ لے سکتا ہے جہاں نقشہ اور فلٹر کی ضرورت ہوتی ہے۔ فہرستوں کا تعین for کا استعمال کرتے ہوئے لنکس بنانے کا ایک آسان طریقہ فراہم کرتا ہے، جس میں نقشہ ((() ، فلٹر ((() اور لیمبڈا کا استعمال کرنے کی ضرورت نہیں ہوتی ہے۔ تعریف کے طریقہ سے فہرستیں عام طور پر تعمیراتی افعال کا استعمال کرتے ہوئے فہرستوں کو تخلیق کرنے کے مقابلے میں واضح ہوتی ہیں۔ ہر فہرست کا تعین جملہ کے بعد ایک صفر یا ایک سے زیادہ if یا for جملے شامل کرتا ہے۔ اگر آپ چاہتے ہیں کہ فہرست میں شامل ہونے والے عناصر میں سے ایک یا زیادہ if یا if شامل ہوجائیں۔ بنیادی فہرست تجزیہ بنیادی [x for x in range ((5)] # [0, 1, 2, 3, 4] l1 = [1, 2, 3,4] [x*2 for x in l1] # [2, 4, 6,8] ایک سے زیادہ اقدار کی [ %s = %s for (k, v) in a_map.items (()) ] دو بار لپیٹنا l1 = [1,2,3,4] l2 برابر ہے [1,2,3,4] [x + y کے لئے x میں l1 کے لئے y میں l2] [دو، تین، چار، پانچ، تین، چار، پانچ، چھ، چار، پانچ، چھ، سات، پانچ، چھ، سات، آٹھ] آپ اس فنکشن کو کال کر سکتے ہیں [ func ((x) for x in l1] # برابر نقشہ نوٹ کریں کہ فہرست تجزیہ کرنے سے اصل فہرست کی قدر میں کوئی تبدیلی نہیں آتی۔ نئی فہرست بن جاتی ہے۔ 3. شرائط کی فہرست کا تجزیہ [ x for x in range ((100) if x%2 ==0 ] 4.٬ نیسٹر فہرست تجزیہ mat = [ [1, 2, 3، [4, 5, 6، [7, 8, 9]] تبادلہ صفیں [ [row[i] for row in mat] for i in (0,1,2) ] # [[1, 4, 7، [2, 5, 8، [3, 6, 9]] یہ تحریر لیونگ یو کے سی ایس ڈی این بلاگ سے لی گئی ہے۔

سچ کہوں تو ، میں نے اوپر کی بات کو سمجھا نہیں ، لیکن یہ تصوراتی طور پر تھوڑا سا واضح لگتا ہے ، اس جملے میں کچھ تکرار کا کام ہونا چاہئے۔
اس کے علاوہ، یہاں کچھ دیگر سرگرم کارکنوں کی مدد پر ایک نظر ہے:

i رینج ((n) کی حد میں گھومتا ہے ، یعنی i = 0 ، 1 ، 2 ،... ، n - 1 ، جو کہ فہرست کے شرائط کے طور پر حساب کتاب کے لئے سابقہ اظہار کی قدر ہے یہ اظہار 1 ہے، جس کے مطابق اقدار ہیں 1، 1، 1،...، n 1 کے لئے، n 1 کی فہرست پیدا کرتا ہے [1، 1...]

اس کے علاوہ ، آپ کو اس کے بارے میں مزید جاننے کی ضرورت ہے۔

x = [i for i in list] ایک فہرست کو دوسری فہرست میں نقشہ کریں، ہر عنصر کو متغیر i کے طور پر مقرر کریں x = [1 for i in range ((n) ] فہرست کی حد (range ((n) کو فہرست x پر نقشہ کریں ، ہر عنصر کو مستقل 1 کے طور پر ترتیب دیں خوش آمدید فورپیٹون پر گفتگو کرنے کے لئے۔

مسئلہ 8: پائیٹن کی بنیاد مضبوط نہیں ہے، واپسی کی طرف سے نصف دن کے لئے نظر انداز کر دیا گیا ہے، ذیل میں مسئلہ کو دیکھنے کے لئے

کل میں نے ایک پائیٹن سی ٹی پی تجارتی فیوچر کے لئے ایک ٹیسٹ کی حکمت عملی لکھی تھی، اور میرے مالک نے مجھے پائیٹن کے سی ٹی پی تجارتی فیوچر ریٹیسٹنگ سسٹم کی جانچ پڑتال کرنے کی اجازت دی تھی۔ آج ٹیسٹ جاری رکھیں اور دریافت کریں کہ حکمت عملی کو یکساں طور پر گولڈ فورک کے مطابق نہیں کیا گیا ہے ، اور یہ محسوس ہوتا ہے کہ اس میں کوئی مسئلہ نہیں ہے ، ہر فنکشن کی جانچ پڑتال ، جانچ ، دریافت ایک کراس فنکشن ڈیزائن کے مطابق صحیح قدر کوڈ واپس نہیں کرتا ہے:

def Cross(records,fast,slow): # 交叉函数 ,参数是  records K线数据   、  fast 快线周期   、slow 慢线周期
    global array_S_MA,array_F_MA   # 使用外部的 全局变量
    array_F_MA = TA.MA(records,fast)  # 调用指标函数
    array_S_MA = TA.MA(records,slow)
    n = 0   # 返回的信号值   0:不操作   , 1 : 金叉     -1: 死叉 
    if array_F_MA[-2] > array_S_MA[-2] and array_F_MA[-3] < array_S_MA[-3] and array_F_MA[-4] < array_S_MA[-4]:
        n = 1
        return n
    elif array_F_MA[-2] < array_S_MA[-2] and array_F_MA[-3] > array_S_MA[-3] and array_F_MA[-4] > array_S_MA[-4]:
        n = -1 
        return n

کیا ہوا؟ آپ نے دیکھا کہ یہ ایک بہت ہی ابتدائی غلطی ہے! میں نے شرائط کی شاخ میں واپسی n لکھا ہے، یہ کوئی مسئلہ نہیں لگتا. ٹیسٹ کا مسئلہ آتا ہے، جب گولڈن فورک، مردہ فورک کو متحرک نہیں کیا جاتا ہے تو کراس فنکشن. اور یہ کیا واپس کرتا ہے؟

ہم نے ایک چھوٹا سا تجربہ کیا:

img

ایک ٹیسٹ فنکشن کی وضاحت کریں، اور صرف ایک پیغام نکالیں

img

ہم اسے کال کریں گے، اور اس طرح لکھیں گے، اور دیکھیں گے کہ کیا کوئی بھی منفی ایک کے برابر ہے.

img

اس کے نتیجے میں یہ واضح ہو جاتا ہے کہ جب فنکشن میں کوئی واپسی نہیں ہوتی ہے تو فنکشن کی واپسی کی قیمت حاصل کی جاتی ہے ، اور کوئی بھی -1 کے برابر نہیں ہوتا ہے ، لیکن اگر کوئی 0 سے کم ہے تو ، یہ درست ہے۔

سوال 9: جے ایس لوکل حوالہ جات کا مسئلہ۔

اس کوڈ میں ایک غلطی ہے:

function main(){
    obj = {
        exchange : null,
        initAccount : null,
        state : 0,
        exchangeName : "",
    }
    obj.name = "OKCoin";
    obj.exchange = exchange;
    obj.initAccount = obj.exchange.GetAccount();
    obj.state = 2;
    var table = {
        type : 'table',
        title : '测试',
        cols : ['obj属性名', '值'],
        rows : [],
    };
    for(var k in obj){
        table.rows.push([k, obj[k]]);
    }
    LogStatus('`' + JSON.stringify(table) + '`');
}

img

TypeError: Converting circular structure to JSON (اس غلطی نے مجھے آدھا گھنٹہ لگا دیا!) ، اس غلطی کی اطلاع ، میں نے بائیوڈوٹا پر پڑتال کی ہے۔ یہ ہے کہ کوڈ میں سرکلر حوالہ جات ہیں ، JSON کو حل نہیں کیا جاسکتا ہے۔

میں نے آدھا دن سوچا اور مسئلہ دریافت کیا، شاید اس کی وجہ سے۔obj.exchange = exchange;اس جملے کے نتیجے میں لوکل حوالہ جات ، جب for ((var k in obj) لوکل میں k === exchange کا سامنا کرنا پڑتا ہے تو آگے بڑھیں ، آزمائیں۔

یہ کوڈ مندرجہ ذیل ہے:

function main(){
    obj = {
        exchange : null,
        initAccount : null,
        state : 0,
        exchangeName : "",
    }
    obj.name = "OKCoin";
    obj.exchange = exchange;
    obj.initAccount = obj.exchange.GetAccount();
    obj.state = 2;
    var table = {
        type : 'table',
        title : '测试',
        cols : ['obj属性名', '值'],
        rows : [],
    };
    for(var k in obj){
        if(k === 'exchange'){  // 增加的代码
            continue;
        }
        table.rows.push([k, obj[k]]);
    }
    LogStatus('`' + JSON.stringify(table) + '`');
}

img

میں نے اس کے بارے میں کچھ بھی نہیں کہا ، لیکن کیا آپ دیکھ سکتے ہیں کہ یہ کس طرح حوالہ دیتے ہیں؟ (فی الحال کچھ الجھن ہے ، اشارہ!)

سوال 10: اجناس کے مستقبل میں جمعہ کی شام کو کھولنے، پوزیشن رکھنے، اگلے پیر کو مارکیٹ کھولنے کے بعد، حاصل پوزیشن کی معلومات حاصل کرنے کے لئے پوزیشن کی معلومات کو کال کریں.

img

اس کی وجہ یہ ہے:

img

مخصوص positions ذخیرہ کردہ معلومات کے لئے قسم کی خصوصیات کی مختلف اقدار ملاحظہ کریں:https://www.fmz.com/bbs-topic/672

یہ دیکھ کر میں نے محسوس کیا کہ مجھے اس پر عمل کرنا چاہئے۔ آپ کو کیا لگتا ہے؟

مزید

بوٹسنگ2براہ راست پوسٹ کریں

چھوٹا سا خواباس کے بعد ، میں نے اپنے بلاگ پر ایک پوسٹ لکھی ، جس میں میں نے کہا کہ میں بہت کچھ لکھنے کے لئے تیار ہوں ، لہذا میں نے خصوصی طور پر ایک کیو کیو اسپیس کی درخواست کی ، تاکہ اسے دیکھنا آسان ہو ، اور اسے تلاش کرنا آسان ہو۔