3.5 حکمت عملی فریم ورک ٹیمپلیٹ

مصنف:چھوٹا سا خواب, تخلیق: 2017-01-19 16:04:24, تازہ کاری: 2017-10-11 10:27:27

3.5 حکمت عملی فریم ورک ٹیمپلیٹ


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

img

  • استعمال کرنے کے اقدامات:

    • 1، جیسا کہ اوپر حکمت عملی اسکوائر میں پایا جا سکتا ہے، اس ٹیمپلیٹ کو اپنے اکاؤنٹ کے کنٹرول سینٹر میں کاپی کریں۔

    • 2، پالیسی لکھتے وقت حوالہ دیں۔ پالیسی فریم ورک ٹیمپلیٹ کی ٹب:

      img

  • ٹیسٹ کیلنڈر کی پالیسی فریم ورک ٹیمپلیٹ کیلنڈر کے لئے پالیسی کوڈ کو چسپاں کریں ((پہلے سے ہی پالیسیوں کے صفحے پر تخلیق کردہ ٹیمپلیٹ کیلنڈر میں چیک کریں)

    var TASK_IDLE = 0;          // 空闲状态命令
    var TASK_OPEN_LONG = 1;     // 建多仓命令
    var TASK_OPEN_SHORT = 2;    // 建空仓命令
    var TASK_ADD = 3;           // 加仓命令
    var TASK_ST = 4;            // 止损命令
    var TASK_COVER = 5;         // 平仓命令
    function onTick1() {        // 趋势系统1: 均线  具体买卖逻辑实现
        // MA 
        var records = _C(exchanges[0].GetRecords);
        if(records.length < 11){
            return $.TaskCmd(TASK_IDLE);
        }
        var ema_fast = TA.MA(records, 7);
        var ema_slow = TA.MA(records, 10);
        var data = "fast[-2]:" + ema_fast[ema_fast.length - 2] + " slow[-2]" + ema_slow[ema_slow.length - 2] + " fast[-1]:" + ema_fast[ema_fast.length - 1] + " slow[-1]:" + ema_slow[ema_slow.length - 1];
        $.AddData(0, "MA", data);
        if (ema_fast[ema_fast.length - 1] < ema_slow[ema_slow.length - 1] && ema_fast[ema_fast.length - 2] > ema_slow[ema_slow.length - 2]) {
            return $.TaskCmd(TASK_COVER);
        }else if(ema_fast[ema_fast.length - 1] > ema_slow[ema_slow.length - 1] && ema_fast[ema_fast.length - 2] < ema_slow[ema_slow.length - 2]){
            return $.TaskCmd(TASK_OPEN_LONG, 0.5);
        }
        return $.TaskCmd(TASK_IDLE);
    }
    function onTick2() {        // 趋势系统2:MACD  具体买卖逻辑实现
        // MACD
        var records = _C(exchanges[1].GetRecords);
        if(records.length < 15){
            return $.TaskCmd(TASK_IDLE);
        }
        var macd = TA.MACD(records);
        var dif = macd[0];
        var dea = macd[1]; 
        var data = "dif[-2]:" + dif[dif.length - 2] + " dea[-2]" + dea[dea.length - 2] + " dif[-1]:" + dif[dif.length - 1] + " dea[-1]:" + dea[dea.length - 1];
        $.AddData(1, "MACD", data);
        if (dif[dif.length - 1] > dea[dea.length - 1] && dif[dif.length - 2] < dea[dea.length - 2]) {
            return $.TaskCmd(TASK_COVER);
        }else if(dif[dif.length - 1] < dea[dea.length - 1] && dif[dif.length - 2] > dea[dea.length - 2]){
            return $.TaskCmd(TASK_OPEN_LONG, 0.8);
        }
        return $.TaskCmd(TASK_IDLE);
    }
    function main() {
        $.Relation_Exchange_onTick(exchanges[0], onTick1);    // 把 添加的第一个交易所  关联  趋势系统1 即 均线MA 
        $.Relation_Exchange_onTick(exchanges[1], onTick2);    // 把 添加的第二个交易所  关联  趋势系统2 即 MACD
        $.Trend();  // 不用传参数。                             // 启动模板
    }
    
  • ایکسپورٹ فنکشن کا تعارف:

    • آرڈر:
    TASK_IDLE = 0;          // 空闲状态命令
    TASK_OPEN_LONG = 1;     // 建多仓命令
    TASK_OPEN_SHORT = 2;    // 建空仓命令
    TASK_ADD = 3;           // 加仓命令
    TASK_ST = 4;            // 止损命令
    TASK_COVER = 5;         // 平仓命令
    

    پالیسی میں یہ حالتیں متعین ہونی چاہئیں۔ ورنہ ٹیمپلیٹ کو پہچانا نہیں جاسکتا۔

    • 1, $.Relation_Exchange_onTick ((p1, p2) ؛ پیرامیٹر p1 : ایکسچینج آبجیکٹ ، جیسے exchanges[0] یعنی روبوٹ کی تشکیل کا صفحہ۔ پہلا ایکسچینج آبجیکٹ جو شامل کیا گیا ہے۔ پیرامیٹر p2: اپنی مرضی کے مطابق ٹرانزیکشن لاجک فنکشن جیسے مثال میں onTick1 فنکشن ، جس میں فنکشن کا نام منتقل کیا جاسکتا ہے۔

    • 2، $.TaskCmd ((p1، p2) ؛ پیرامیٹر p1: ٹیمپلیٹ پر عملدرآمد کے لئے بھیجا کمانڈ، جیسے: TASK_OPEN_LONG // تعمیر کثیر سٹور کمانڈ پیرامیٹر p2: TASK_IDLE،TASK_COVER کمانڈ بھیجتے وقت پیرامیٹرز کو منتقل نہیں کیا جاسکتا ہے۔ دیگر کمانڈز کو عددی پیرامیٹر کے بعد عمل کرنے کی ضرورت ہوتی ہے ، p2 ، جس سے یہ ظاہر ہوتا ہے کہ آپریشن کی تعداد کتنی ہے۔ کال کرنے کے لیے return $.TaskCmd ((p1, p2) کی ضرورت ہوتی ہے۔ onTick فنکشن میں لوٹایا جاتا ہے۔

    • 3، $.ٹرینڈ؛ کوئی پیرامیٹر نہیں

    • 4، $.AddData ((p1, p2, p3) ؛ // حالت بار میں ٹیبل کے آخر میں مواد شامل کریں۔ پیرامیٹر p1 : شامل کرنے کے لئے ٹیبل کا انڈیکس ، 0 پہلا ، 1 دوسرا ((اگر دوسری ایکسچینج $.Relation_Exchange_onTick کے ساتھ منسلک ہے) پیرامیٹر p2 : شامل کردہ مواد کی خصوصیت کا نام، اس معاملے میں شامل کردہ اشارے کے اعداد و شمار کو حالت کی میز میں دکھایا گیا ہے۔

      پیرامیٹر p3: سٹرنگ، ظاہر کرنے کے لئے چاہتے ہیں کہ اعداد و شمار کو تبدیل کرنے کے لئے سٹرنگ میں منتقل p3 اس پیرامیٹر کی پوزیشن؛

  • مثال کے طور پر ٹرانزیکشن لاجک فنکشن onTick1 کا کوڈ تجزیہ دیکھیں:

    function onTick1() {        // 趋势系统1: 均线  具体买卖逻辑实现
        // MA 
        var records = _C(exchanges[0].GetRecords); // 用跟 onTick1 函数 绑定的交易所 exchanges[0] 对象 获取该交易所的K线数据。
        if(records.length < 11){                   // 判断K线数据是否足够长度
            return $.TaskCmd(TASK_IDLE);           // K线数据长度不足时,发送等待命令。程序则不执行下面的代码。
        }
        var ema_fast = TA.MA(records, 7);          // 根据长度足够的K线数据计算 周期为7 的均线数据 即: 快线
        var ema_slow = TA.MA(records, 10);         // 计算 慢线
        var data = "fast[-2]:" + ema_fast[ema_fast.length - 2] + " slow[-2]" + ema_slow[ema_slow.length - 2] + " fast[-1]:" + ema_fast[ema_fast.length - 1] + " slow[-1]:" + ema_slow[ema_slow.length - 1];
        // 处理数据 组合为 字符串 data
        $.AddData(0, "MA", data);                  // 向状态栏表格 添加数据显示
        if (ema_fast[ema_fast.length - 1] < ema_slow[ema_slow.length - 1] && ema_fast[ema_fast.length - 2] > ema_slow[ema_slow.length - 2]) {               // 平仓触发判断
            return $.TaskCmd(TASK_COVER);          // 发送平仓命令
        }else if(ema_fast[ema_fast.length - 1] > ema_slow[ema_slow.length - 1] && ema_fast[ema_fast.length - 2] < ema_slow[ema_slow.length - 2]){           // 开仓触发判断
            return $.TaskCmd(TASK_OPEN_LONG, 0.5); // 发送开多仓命令
        }
        return $.TaskCmd(TASK_IDLE);               // 没有任何 触发,发送等待命令。
    }
    
  • یہ کام کرتا ہے:

    img

    img

  • حکمت عملی فریم ورک ٹیمپلیٹس کی انٹرایکٹو خصوصیات

    چونکہ ٹیمپلیٹس میں انٹرایکٹو کنٹرولز شامل نہیں کیے جاتے ہیں ، لہذا انٹرایکٹو کنٹرولز کو صرف حوالہ دیتے ہوئے شامل کیا جاسکتا ہے۔اقدامات: 1، اسٹریٹجک تعامل میں ایک سٹرنگ قسم کا کنٹرول شامل کریں ، جس کا نام JS_code لکھا گیا ہے جیسے:img

    2 ̊ پھر سبز رنگ کے اضافی نمبر پر کلک کریں اور محفوظ کریں پر کلک کریں۔img

    3، جب پالیسی چل رہی ہے تو تمام احکامات دکھائے جاتے ہیں جو براہ راست نقل کی جاسکتی ہیں اور پالیسی کو حکم دیا جاتا ہے۔img

    4، کمانڈ فارمیٹ CMD ((index، CMD_STR، amount) ہے پہلا پیرامیٹر: انڈیکس کا مطلب ہے کہ آپریٹنگ ایکسچینج ، انڈیکس کا مقام 0 لکھتا ہے ، یعنی آپریٹنگ پہلا ایکسچینج ، اور اسی طرح۔ دوسرا پیرامیٹر: فارم کے سر پر دکھائے جانے والے احکامات۔ تیسرا پیرامیٹر: آپریشن کی تعداد۔

    مثال کے طور پر:img

    دوسرے احکامات اسی طرح استعمال ہوتے ہیں۔

اگر BUG تجویز کرتا ہے تو خوش آمدید!


مزید

ریتھون مُونگونجب بھی مجھے شک ہوتا ہے، میں ہمیشہ خوابوں کے مجموعی متن میں رہنمائی حاصل کرتا ہوں، شکریہ

چھوٹا سا خوابہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہاہا