বিল্ট-ইন ফাংশন_ক্রস বিশ্লেষণ এবং ব্যবহারের নির্দেশাবলী

লেখক:ছোট্ট স্বপ্ন, তৈরিঃ 2017-10-11 19:50:44, আপডেটঃ 2021-11-05 16:15:56

বিল্ট-ইন ফাংশন_ক্রস বিশ্লেষণ এবং ব্যবহারের নির্দেশাবলী

এপিআই ডকুমেন্টেশনে গ্লোবাল ফাংশন প্যানেলে_ক্রস ফাংশনটি দুটি পয়েন্টার লাইনের ক্রস স্থিতি গণনা করতে ব্যবহৃত হয়

  • ফাংশনটি নিম্নলিখিত কোডের অনুরূপ বাস্তবায়ন করেঃ

    এই ভিডিওতে, আপনি দেখতে পাচ্ছেন,arr1এটি দ্রুতগতির সূচকগুলির একটি অ্যারে হিসাবে সংজ্ঞায়িত করা হয়।arr2এটি একটি ধীর রেখাযুক্ত সূচক অ্যারে হিসাবে সংজ্ঞায়িত করা হয়।_Crossফাংশনটি একটি ধনাত্মক মান ফেরত দেয়, অর্থাৎ ডকুমেন্টেশন অনুযায়ী正数为上穿周期, 负数表示下穿的周期, 0指当前价格一样এই মুহূর্তে।arr1উপরে উঠুনarr2এই সময়কালে, দ্রুত লাইনটি ধীর গতির লাইনগুলির মধ্যে চলে যায় যা সোনার ফর্ককে প্রতিনিধিত্ব করে। একইভাবে_Crossযদি ফাংশনটি একটি নেতিবাচক সংখ্যা ফেরত দেয়, তাহলে এটি একটি মৃত ফর্ক।

    যদি সংজ্ঞায়িত হয়arr1এটি একটি ধীর রেখার সূচক সমষ্টি।arr2দ্রুতগতির সূচকগুলির জন্য, বিপরীতটি।_Crossফাংশনটির রিটার্ন করা মান হল একটি ধনাত্মক সংখ্যা যা একটি মৃত ফর্ককে প্রতিনিধিত্ব করে।_Crossফাংশনটি একটি ঋণাত্মক মান প্রদান করে।

// 返回上穿的周期数,正数为上穿周数,负数表示下穿的周数,0指当前价格一样
$.Cross = function(arr1, arr2) {            // 参数个数为2个,从参数名可以看出,这两个参数应该都是数组类型,数组就
                                            // 好比是在X轴为数组索引值,Y轴为指标值的坐标系中的线段,该函数就是判断两条线的 交叉情况 
    if (arr1.length !== arr2.length) {      // 首先要判断比较的两个数组长度是否相等
        throw "array length not equal";     // 如果不相等抛出错误,对于不相等的指标线无法判断相交
    }
    var n = 0;                              // 声明变量n用来记录交叉状态,初始0,未相交 
    for (var i = arr1.length-1; i >= 0; i--) {      // 遍历数组arr1,遍历顺序为从最后一个元素向前遍历
        if (typeof(arr1[i]) !== 'number' || typeof(arr2[i]) !== 'number') { // 当arr1或者arr2任何一个数组为非数值类型(即无效指标)时,跳出遍历循环
            break;                                  // 跳出循环
        }
        if (arr1[i] < arr2[i]) {                    // 如果arr1小于arr2则n--,会记录开始时arr1、arr2的相对状态,(即开始时n会根据arr1[i]、arr2[i]相对大小自行调整,一旦出现另一种和n状态相反的arr1[i]、arr2[i]大小关系,即发生了两条线交叉。)
            if (n > 0) {
                break;
            }
            n--;
        } else if (arr1[i] > arr2[i]) {             // 如果arr1大于arr2则n++
            if (n < 0) {
                break;
            }
            n++;
        } else {                                    // arr1[i] == arr2[i],则立即跳出
            break;
        }
    }
    return n;                                       // 返回n值,代表已经交叉了多少周期,0即指标值相等
};
  • আমরা এই প্যারামিটারে একটি ডাটা সেট সিমুলেট করি এবং দেখি কি হয়।

var arr1 = [1,2,3,4,5,6,8,8,9]     // 快线指标
var arr2 = [2,3,4,5,6,7,7,7,7]     // 慢线指标
function main(){
    Log("_Cross(arr1, arr2) : ", _Cross(arr1, arr2))
    Log("_Cross(arr2, arr1) : ", _Cross(arr2, arr1))
}

img

আপনি দেখতে পাচ্ছেন যে এর ফলাফল ৩, -৩।

img

এই ছবিতে দেখা যাচ্ছে যে, তিনটি K-রেখা স্তম্ভের আগে ক্রসিংয়ের অবস্থান ঘটেছে।


আরো

আলফা স্ট্র্যাটেজি০০এক্সএবং যদি আমরা কোন ক্রস না পাই, তাহলে আমাদের 0 ফিরে আসতে হবে, তাই না?

সরিষার রসুন।যদি আমরা আবার ক্রস করি?

ছোট্ট স্বপ্নঠিক আছে, এটা আমরা বিবেচনা করব।

আলফা স্ট্র্যাটেজি০০এক্সধন্যবাদ উত্তর দেওয়ার জন্য। আমি বলতে চাচ্ছি, 0 ফিরে আসাটা কি যুক্তিযুক্ত?

ছোট্ট স্বপ্ন`` var arr1 = [1,2,3,4,5,6,8,8,9] // দ্রুতরেখা নির্দেশক var arr2 = [2,3,4,5,6,7,7,7] // ধীর রেখা নির্দেশক function main (() { Log (("_Cross ((arr1, arr2) ": ", _Cross ((arr1, arr2)) Log (("_Cross ((arr2, arr1) ": ", _Cross ((arr2, arr1)) } `` আপনি এই সেটটি দিয়ে একটি ক্রস না করা অ্যারে সেট করতে পারেন এবং এটি চালাতে পারেন। পরীক্ষা করে দেখুন, এটি 0 ফেরত দেয় না।

ছোট্ট স্বপ্নএটি কেবলমাত্র সাম্প্রতিক ক্রসিং সনাক্ত করে, সোর্স কোড বিশ্লেষণ দেখুন।