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

3.5 پالیسی فریم ورک ٹیمپلیٹ

میں تخلیق کیا: 2017-01-19 16:04:24, تازہ کاری: 2017-10-11 10:27:27
comments   4
hits   5727

3.5 پالیسی فریم ورک ٹیمپلیٹ


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

3.5 پالیسی فریم ورک ٹیمپلیٹ

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

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

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

    3.5 پالیسی فریم ورک ٹیمپلیٹ

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

  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: ایکسچینج آبجیکٹ ، جیسے تبادلے[0] یعنی روبوٹ کنفیگریشن پیج میں جوڑا گیا پہلا ایکسچینج آبجیکٹ۔ پیرامیٹر p2: اپنی مرضی کے مطابق ٹرانزیکشن لاجسٹک فنکشن جیسے مثال میں onTick1 فنکشن ، فنکشن کا نام منتقل کیا جاسکتا ہے۔

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

  • 3、 $.Trend(); کوئی پیرامیٹرز

  • 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);               // 没有任何 触发,发送等待命令。
  }
  • #### چل رہا ہے:

3.5 پالیسی فریم ورک ٹیمپلیٹ

3.5 پالیسی فریم ورک ٹیمپلیٹ

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

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

2، پھر سبز رنگ کے پلس پر کلک کریں اور محفوظ کریں پر کلک کریں 3.5 پالیسی فریم ورک ٹیمپلیٹ

3۔ حکمت عملی کے چلنے کے وقت تمام کمانڈز دکھائے جاتے ہیں۔ حکمت عملی کو براہ راست کاپی کرکے کمانڈ جاری کیا جاسکتا ہے۔ 3.5 پالیسی فریم ورک ٹیمپلیٹ

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

مثال کے طور پر 3.5 پالیسی فریم ورک ٹیمپلیٹ

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

ٹرانزیکشن کی منطق بے ترتیب طور پر لکھی گئی ہے ، براہ کرم حقیقی ڈرائیو نہ کریں! ↓ اگر BUG تجویز کرتا ہے تو خوش آمدید!^^