مائی لینگ (Mylang) دستاویزات

مصنف:چھوٹا سا خواب, تخلیق: 2018-11-30 13:29:33, تازہ کاری: 2022-12-09 17:46:10

[TOC]

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

  • بنیادی معلومات

    • معاہدہ

      ڈیجیٹل کرنسی کا معاہدہ

      ڈیجیٹل کرنسی کا معاہدہ

      this_week     数字货币期货当周合约
      next_week     数字货币期货次周合约
      month         数字货币期货月度合约
      quarter       数字货币期货季度合约
      next_quarter  数字货币期货次季度合约
      third_quarter 数字货币期货第三季度合约
      last_quarter  最后季度合约
      
      XBTUSD        BITMEX永续合约
      swap          除BITMEX交易所以外数字货币期货永续合约
      
      具体可以参看JavaScript/Python/C++文档的exchange.SetContractType()函数部分
      

      img

    • متغیرات

      ایک متغیر کمپیوٹر کی میموری میں کھولی ہوئی جگہ ہے جو ڈیٹا کو ذخیرہ کرنے کے لئے استعمال ہوتی ہے۔

      پہلی متغیر کھولیں

      // 将1赋值给变量a
      a:=1;
      

      میں麦语言کے اندر سے数据量یہ ایک سادہ فرق ہے:

      1. سنگل ویلیو ڈیٹا: صرف ایک ویلیو، مثال کے طور پر01’abc’
      2. سیریل ڈیٹا: اعداد و شمار کا ایک سلسلہ جس میں ایک واحد قدر والے اعداد و شمار کا ایک مجموعہ ہوتا ہے ، جیسےClose(ختم قیمت) یہاںCloseشامل ہیںnایک سائیکل کے اختتامی قیمت[ 10.1 , 10.2 , 10.3 , 10.4 , 10. 5 ...]

      متغیر قسم کی چکنائی سے فرق کرنا

      1. سٹرنگ کی قسم: استعمال کرنا ضروری ہے''پیکجوں، سٹرنگ کی اقسام کو براہ راست استعمال کرنے کی اجازت نہیں ہے، اور آپ کو ایک معاون فنکشن کی ضرورت ہے.
      INFO(CLSOE>OPEN,'OK!');
      
      1. عددی اقسام: انٹیجرز، فلوٹ پوائنٹس (عجیب اعداد) شامل ہیں۔
      // 整数
      int:=2;
      
      // 小数
      float:=3.1;
      
      1. بول ٹائپ، 1 ((سچ کے لئے) یا 0 ((جھوٹے کے لئے) استعمال کرتے ہوئے: 1، 0، سچ یا غلط؛ مثال کے طور پر:A:=1>0;اس کوڈ کو چلانے کے بعد ،Aاس کی قیمت 1 ہے۔
      // 当前周期收盘价大于-999,你会发现,每个周期的返回值都是1,代表true,因为收盘价几乎不可能为负数
      is_true:=Close>-999;
      
      1. عالمی متغیر
      VARIABLE:VALUE1:10;     // 声明一个全局变量,赋值为10,只执行一次。
      

      اس کے بعد، آپ کو یہ بھی یاد رکھنا چاہئے کہ:

      VARIABLE:NX:0;    // 初始一个全局变量NX为0
      NX..NX+1;         // 每次累加1
      INFO(1,NX);       // 每次打印NX
      

      ابتدائی طور پرINFOاس کا مطلب یہ ہے کہ101اس کے علاوہ ، یہ بھی ممکن ہے کہ یہ سوال پیدا ہو کہ0کیا؟ اس کی وجہ یہ ہے کہ ریٹیسٹ کے وقت ابتدائی K لائن میں 100 ہیں، 100 K لائنیں چل چکی ہیں اور 100 بار جمع کی گئی ہیں۔ اصل ڈسک اس بات پر منحصر ہے کہ ابتدائی طور پر کتنی K لائنیں حاصل کی گئیں۔

      • نام دینے کے قوانین

        زیادہ تر نظاموں میں ، متغیر ناموں میں نظام کے ناموں کا استعمال کرنے کی اجازت نہیں ہے۔ مثال کے طور پر ، مشہور متغیر نام ، فنکشن نام) ۔CloseCاس کے علاوہ ، خالص اعداد یا عددی آغاز کی اجازت نہیں ہے۔ اختتام بہت لمبا نہیں ہے ، مختلف نظاموں کی لمبائی کی حد مختلف ہے۔ اصل میں ، آپ کو چینی زبان کے حل کی کارکردگی کے بارے میں مرکزی نظام کے ساتھ الجھنے کی ضرورت نہیں ہے ، اور آپ کو یقین ہے کہ چینی زبان کے لئے یہ بہت دوستانہ ہے۔

        1. چینی نام
        // 优雅的输出
        五日均线:=MA(C,5);
        
        1. انگریزی پلس
        // 输出
        move_avg_5:=MA(C,5);
        

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

        اگر آپ کو اپنی زبان کی ضرورت نہیں ہے تو ، آپ کو اپنی زبان کی ضرورت نہیں ہے۔ اگر آپ کو اپنی زبان کی ضرورت نہیں ہے تو ، آپ کو اپنی زبان کی ضرورت ہے۔

    • ڈیٹا کی اقسام

      ڈیٹا ٹائپ ایک بنیادی تصور ہے، اور جب ہم کسی متغیر کو ایک واضح ڈیٹا ویلیو دیتے ہیں تو یہ خود ہی ڈیٹا کی قسم بن جاتا ہے۔

        1. اعداد کی اقسام:
        1、2、3、1.1234、2.23456 ...
        
        1. سٹرنگ کی قسم ((str):
        '1' 、'2' 、'3' ,字符串类型必须用 '' 包裹
        
        1. سیریز کے اعداد و شمار:
        一系列单值数据构成的数据集合
        
        1. Boolean قسم:

        استعمال کریں1نمائندےtrue0نمائندےfalse

        مثال

        // 声明一个数值类型的变量
        var_int := 1;
        // 声明一个序列数据的变量
        var_arr := Close;
        // 字符串类型不能单独声明,需要结合函数
        INFO(C>O, '阳线');
        
    • آپریٹر

      انڈیکیٹر کوڈ پر عملدرآمد کرنے کے لئے استعمال کیا جاتا ہے کہ آپریشن، حساب، سادہ لفظوں میں، آپریشن میں حصہ لینے کے لئے علامات ہیں.

      • تفویض آپریٹر

        ایک متغیر کو ایک قدر دینے کے لئے استعمال کیا جاتا ہے

          1. :

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

          Close1:Close;      // 将Close赋值给变量Close1,并且输出到图中
          
          1. :=

          :=، ایک تفویض کی نمائندگی کرتا ہے ، لیکن اس کو گراف میں (مرکزی گراف ، ذیلی گراف...) میں یا اسٹیٹس ٹیبل میں ظاہر نہیں کیا جاتا ہے۔

          Close2:=Close;     // 将Close赋值给变量Close2
          
          1. ^^

          ^^، دو^علامات قدر کی نمائندگی کرتی ہیں، متغیرات کو قدر دیتے ہیں اور انہیں گراف میں آؤٹ پٹ کرتے ہیں۔

          lastPrice^^C;
          
          1. ..

          ..، دو.علامات کے لئے نامزدگی، متغیرات کو نامزدگی اور متغیر نام، اعداد و شمار کو ظاہر کرنے کے لئے چارٹ میں، لیکن چارٹ میں نقشہ نہیں (مرکزی، ذیلی چارٹ...) ۔

          openPrice..O
          
      • رشتہ دار آپریٹر

        رشتہ دار آپریٹر دو آنکھوں والا آپریٹر ہے جو مشروط اظہار میں استعمال ہوتا ہے۔ یہ دو اعداد و شمار کے مابین تعلقات کا فیصلہ کرنے کے لئے استعمال ہوتا ہے۔

        واپسی کی قدر: Boolean قسم، نہیںtrue1، یعنیfalse(0)。

          1. سے زیادہ>
          // 将2>1的运算结果赋值给rv1变量,此时rv1=1
          rv1:=2>1;
          
          1. سے کم<
          // 返回false,也就是0,因为2大于1
          rv3:=2<1;
          
          1. سے زیادہ برابر ہے.>=
          x:=Close;
          // 将收盘价大于等于10的运算的结果赋值给变量rv2
          // 注意,由于close是一个序列数据,当进行close>=10运算的时候,本质是每个周期都进行运算,所以每个周期都会有一个1、0的返回值
          rv2:=Close>=10;
          
          1. سے کم برابر ہے.<=
          此处省略
          
          1. کے برابر ہے=
          A:=O=C;     // 判断开盘价是不是等于收盘价。
          
          1. کے برابر نہیں ہے<>
          1<>2       // 判断1是否不等于2,返回值为1(true)
          
      • منطقی آپریٹرز

        واپسی کی قدر: Boolean قسم، نہیںtrue1، یعنیfalse(0)。

        1. منطق اور&&، استعمال کر سکتے ہیںandمتبادل کے طور پر، جوڑے کے دونوں بائیں اور بائیں اطراف کو ایک ہی وقت میں قائم کیا جانا چاہئے.
        // 判断 cond_a,cond_b,cond_c 是否同时成立
        cond_a:=2>1;
        cond_b:=4>3;
        cond_c:=6>5;
        cond_a && cond_b and cond_c;    // 返回值为1,成立
        
        1. منطق یا||، استعمال کر سکتے ہیںorمتبادل یا لنک کے دونوں اطراف ، ایک طرف درست (true) ، اور مجموعی طور پر درست (returns true) ۔
        cond_a:=1>2;
        cond_b:=4>3;
        cond_c:=5>6;
        cond_a || cond_b or cond_c;    // 返回值为1,成立
        
        1. ()آپریٹرز، جو کہ بریکٹ کے اندر اظہار کا حساب لگاتے ہیں۔
        1>2 AND (2>3 OR 3<5)    // 运算结果为假
        1>2 AND 2>3 OR 3<5      // 运算结果为真
        
      • حساب کے آپریٹرز

        返回值:数值类型
        

        ریاضیاتی آپریٹرز یعنی ریاضیاتی آپریشنز کے نشانات۔ یہ بنیادی ریاضیاتی آپریشنز (arithmetic operators) کو مکمل کرنے کے لئے استعمال ہونے والے علامات ہیں، یعنی چاروں معاملات کو سنبھالنے کے لئے استعمال ہونے والے علامات۔

        • جمع +

          A:=1+1;      // 返回 2
          
        • مائنس -

          A:=2-1;      // 返回 1
          
        • ضرب کریں *

          A:=2*2;      // 返回 4
          
        • سوائے /

          A:=4/2;      // 返回 2
          
    • فنکشن

      • فنکشن

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

        function(param1,param2,...)
        
        • اس میں شامل ہیں:

          فنکشن کا نام (مثلاً، پیرامیٹر 1، پیرامیٹر 2،...) ، یا تو کوئی پیرامیٹر نہیں ہو سکتا یا کئی پیرامیٹرز ہو سکتے ہیں۔ مثال کے طور پر،MA(x,n);واپسیnسائیکل میںxاس کے علاوہ، یہ بھی ایک بہت اچھا طریقہ ہے.MA()یہ ایک فنکشن ہے۔xاورnآپ کو اس کے بارے میں کیا سوچنا چاہئے؟

          جب ہم کسی فنکشن کا استعمال کرتے ہیں تو ہمیں اس کی بنیادی تعریف کو سمجھنے کی ضرورت ہوتی ہے ، یعنی اس فنکشن کو کال کرنے سے کیا ڈیٹا حاصل کیا جاسکتا ہے۔ عام طور پر کہا جاتا ہے کہ فنکشن میں پیرامیٹرز ہوتے ہیں ، اور جب ہم پیرامیٹرز بھیجتے ہیں تو ہمیں اس بات کا یقین کرنے کی ضرورت ہوتی ہے کہ جب ہم پیرامیٹرز بھیجتے ہیں تو ہمیں معلوم ہوتا ہے کہ ڈیٹا کی قسم کا تعین کیا جاتا ہے۔MA(x,n);اس کی وضاحت یہ ہے:

          返回简单移动平均
          用法:
          AVG:=MA(X,N): X的N日简单移动平均,算法(X1+X2+X3+...+Xn)/N,N支持变量
          

          یہ ابتدائیوں کے لئے بہت غیر دوستانہ ہے۔ اس کے بعد ہم اس فنکشن کا مکمل تجزیہ کرتے ہیں اور تیزی سے سیکھنے ، فنکشن استعمال کرنے کا طریقہ تلاش کرنے کی کوشش کرتے ہیں۔

      • واپسی کی قیمت

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

        // 因为后面的代码中会用到,所以用变量 return_value 接收、保存 function()的返回值
        // retrun_value := function(param1,param2);
        // 例如:
        AVG:=MA(C,10);     // AVG即retrun_value,function函数即:MA函数,param1参数:C即收盘价序列数据,param2参数:10。
        
      • پیرامیٹرز

        اس کے بعد فنکشن کا دوسرا اہم تصور یہ ہے کہ پیرامیٹرز مختلف پیرامیٹرز کو مختلف واپسی کی قیمت حاصل کرسکتے ہیں۔

        // 变量ma5接收5日收盘价移动平均值
        ma5:=MA(C,5);
        // 变量ma10接收10日收盘价移动平均值
        ma10:=MA(C,10);
        

        مندرجہ بالا متغیرma5ma10اس کا پہلا پیرامیٹرXتمامC(ختم ہونے کی قیمت)Cیہ بھی ایک تقریب ہے ((بند کرنے کی قیمتوں کی سیریز کو کھولنے کے لئے آج تک لوٹاتا ہے) ، لیکن اس کے پاس کوئی پیرامیٹر نہیں ہے۔ دوسرا پیرامیٹر 5، 10 یہ بتانے کے لئے استعمال کیا جاتا ہےMA()فنکشن، ہم بندش کی قیمتوں میں چند روزہ اوسط حاصل کرنے کے لئے چاہتے ہیں، پیرامیٹرز کے ذریعے، فنکشن استعمال کرنے کے لئے زیادہ لچکدار ہو جاتا ہے.

      • سیکھنے کا طریقہ

          1. سب سے پہلے، آپ کو اس فنکشن کے کردار کو سمجھنے کی ضرورت ہے، یعنی یہ فنکشن ہمیں کیا ڈیٹا واپس کر سکتا ہے۔
          1. اور آخر میں، واپسی کی قسم کو سمجھنے کے لئے، کیونکہ ہم واپسی کی قیمت حاصل کرنے کے لئے افعال کا استعمال کرتے ہیں.
          1. اس کے بعد ہمیں معلوم ہونا چاہئے کہ اعداد و شمار کی قسم کیا ہے.MA(x,n)اگر آپ کو معلوم نہیں ہے کہ پیرامیٹرزxnاس کے علاوہ، اگر آپ کے ڈیٹا کی اقسام میں سے کسی ایک کو درست طریقے سے واپس نہیں کیا جا سکتا ہے، تو آپ کے ڈیٹا کی اقسام کو درست طریقے سے واپس نہیں کیا جا سکتا ہے.

        مندرجہ ذیل افعال کے بارے میں، استعمال، مندرجہ بالا 3 اصولوں پر عمل کریں.

    • زبان میں اضافہ

      • 麦语言اورJavaScriptہائبرڈ پروگرامنگ

        %%
        // 这里面可以调用发明者量化的任何API 
        scope.TEST = function(obj) {
            return obj.val * 100;
        }
        %%
        收盘价:C;
        收盘价放大100倍:TEST(C);
        上一个收盘价放大100倍:TEST(REF(C, 1)); // 鼠标移动到回测的K线上就会提示变量值
        
        • scopeآبجیکٹ

          scopeآبجیکٹ صفات شامل کرسکتے ہیں اور صفات کو گمنام فنکشن تفویض کرسکتے ہیں ، اور میک زبان کے کوڈ کے حصے میں اس صفات کا حوالہ دینے والے گمنام فنکشن کو بلایا جاسکتا ہے۔

        • scope.getRefs(obj)فنکشن

          میںJavaScriptکوڈ بلاکس میں، کال کریںscope.getRefs(obj)فنکشن کی واپسیobjاعداد و شمار کے لئے اعتراضات.

          ذیل میں%% %%علامات کے ساتھ احاطہ کرتا ہےJavaScriptکوڈ مائی زبان کوڈ میں حاصل کیا جائے گاTEST(C)جب فنکشن کو بلایا جاتا ہےCاس کی قیمت میں اضافہ ہوا ہے۔scope.getRefsیہ فنکشن اس K لائن کے اعداد و شمار کے تمام اختتامی قیمتوں کو واپس کرتا ہے۔throw "stop"روکنے کا طریقہ کار۔ لہذا متغیرarrصرف پہلی بار کے اختتامی قیمت پر مشتمل ہے۔ آپ اسے حذف کرنے کی کوشش کر سکتے ہیں۔throw "stop"پر عملدرآمد کیا جائے گاJavaScriptآخری کوڈreturnاس کا مطلب یہ ہے کہ آپ کو اس کے بارے میں مزید جاننے کی ضرورت ہے۔

          %%
          scope.TEST = function(obj){
              var arr = scope.getRefs(obj)
              Log("arr:", arr)
              throw "stop"
              return
          }
          %%
          TEST(C);
          
        • scope.bars

          میںJavaScriptکوڈ بلاکس میں تمام K لائن بار تک رسائی حاصل کریں۔

          TESTفنکشن ایک عددی قدر لوٹاتا ہے۔ 1 صنم لائن ہے، 0 سورج لائن ہے۔

          %%
          scope.TEST = function(){
              var bars = scope.bars
              return bars[bars.length - 1].Open > bars[bars.length - 1].Close ? 1 : 0    // 只能返回数值
          }
          %%
          arr:TEST;                                                                      
          
          # 注意:
          # TEST接收的匿名函数,返回值必须是数值。
          # 如果匿名函数没有参数,在调用TEST的时候直接写VAR:=TEST;写VAR:=TEST();会报错。
          # scope.TEST中的TEST必须是大写。
          
        • scope.bar

          میںJavaScriptآپ کو اس کوڈ کے ٹکڑے میں، موجودہ بار تک رسائی حاصل ہے۔

          اس کے علاوہ ، یہ بھی کہا جاتا ہے کہ یہ ایک بہت ہی اہم مسئلہ ہے۔

          %%
          scope.TEST = function(){
              var bar = scope.bar
              var ret = (bar.Open + bar.Close + bar.High + bar.Low) / 4
              return ret
          }
          %%
          avg^^TEST;
          
        • scope.depth

          مارکیٹ کی گہرائی کے اعداد و شمار تک رسائی حاصل کریں۔

          %%
          scope.TEST = function(){
              Log(scope.depth)
              throw "stop"             // 打印一次深度数据后就抛出异常,暂停
          }
          %%
          TEST;
          
        • scope.symbol

          موجودہ ٹرانزیکشنز کے ناموں کے لئے سٹرنگ حاصل کریں۔

          %%
          scope.TEST = function(){
              Log(scope.symbol)
              throw "stop"
          }
          %%
          TEST;
          
        • scope.barPos

          K لائن بار کی پوزیشن حاصل کریں۔

          %%
          scope.TEST = function(){
              Log(scope.barPos)
              throw "stop"
          }
          %%
          TEST;
          
        • scope.get_locals ((name)

          یہ فنکشن میک زبان کے کوڈ کے حصے میں متغیرات حاصل کرنے کے لئے استعمال کیا جاتا ہے۔

          V:10;
          %%
          scope.TEST = function(obj){
              return scope.get_locals('V')
          }
          %%
          GET_V:TEST(C);
          
          # 注意:
          # 如果某个变量,由于周期不足的时候计算不出数据,这个时候在JavaScript代码中调用scope.get_locals函数
          # 获取这个变量时,会报错:line:XX - undefined locals某个变量名undefined
          
        • scope.canTrade

          canTradeصفات کو نشان زد کرتا ہے کہ آیا موجودہ تجارت کے قابل ہے (اگر موجودہ بار آخری ہے)

          مثال کے طور پر، جب حکمت عملیوں کو تجارت کے قابل ہونے کی حالت میں مارکیٹ کے اعداد و شمار کو پرنٹ کرنے کا فیصلہ کریں

          %%
          scope.LOGTICKER = function() {
              if(exchange.IO("status") && scope.canTrade){
                  var ticker = exchange.GetTicker();
                  if(ticker){
                      Log("ticker:", ticker);
                      return ticker.Last;
                  }
              }
          }
          %%
          LASTPRICE..LOGTICKER;
          
      • مثال کے طور پر:

        %%
        scope.TEST = function(a){
            if (a.val) {
                throw "stop"
            }    
        }
        %%
        O>C,BK;
        C>O,SP;
        TEST(ISLASTSP);
        

        تجارت کھولیں، تجارت ختم کرنے کے بعد حکمت عملی کو روکیں۔

    • ملٹی سائیکل حوالہ جات

      سسٹم خود بخود ایک مناسب بنیادی K لائن سائیکل کا انتخاب کرتا ہے اور اس بنیادی K لائن سائیکل کے اعداد و شمار کو تمام حوالہ کردہ K لائن ڈیٹا کو ضم کرنے کے لئے استعمال کرتا ہے تاکہ اعداد و شمار کی درستگی کو یقینی بنایا جاسکے۔

      • استعمال کریں:#EXPORT 公式名 ... #ENDایک فارمولہ بنائیں۔ اگر آپ صرف مختلف دوروں کے اعداد و شمار حاصل کرنے کے لئے فارمولہ حساب کتاب نہیں کرتے ہیں تو ، آپ خالی فارمولے بھی لکھ سکتے ہیں۔

        خالی فارمولا یہ ہے:

        #EXPORT TEST 
        NOP;
        #END           // 结束
        
      • استعمال کریں:#IMPORT [MIN,周期,公式名] AS 变量值حوالہ فارمولا: سیٹ کے دورانیے کے اعداد و شمار حاصل کریں (ختم قیمت ، افتتاحی قیمت وغیرہ ، متغیر کی قدر کے ذریعہ حاصل کریں) ۔

        IMPORTآرڈر میںMINاس کا مطلبمنٹ کی سطحمائی زبان کے موجدوں نے ایک کوانٹیفیکیشن پلیٹ فارم تیار کیا ہے۔IMPORTکمانڈ میں صرف حمایتMINسطح. اب غیر معیاری دورانیے کی حمایت کی جاتی ہے، مثال کے طور پر استعمال کیا جا سکتا ہے#IMPORT [MIN,240,TEST] AS VAR240240 منٹ کے دورانیے ((4 گھنٹے) K لائن جیسے اعداد و شمار کو درآمد کریں۔

        کوڈ کی مثال:

        // 本代码演示如何引用不同周期的公式在同一代码里
        // #EXPORT扩展语法,以#END结束标记为一个公式,可以声明多个
        #EXPORT TEST 
        均值1:EMA(C, 20);
        均值2:EMA(C, 10);
        #END // 结束
        
        #IMPORT [MIN,15,TEST] AS VAR15 // 引用公式,K线周期用15分钟
        #IMPORT [MIN,30,TEST] AS VAR30 // 引用公式,K线周期用30分钟
        CROSSUP(VAR15.均值1, VAR30.均值1),BPK;
        CROSSDOWN(VAR15.均值2, VAR30.均值2),SPK;
        十五分最高价:VAR15.HIGH;
        三十分最高价:VAR30.HIGH;
        AUTOFILTER;
        
      • کثیر دورانیہ ڈیٹا حوالہ کے لئے استعمال کیا جاتا ہےREFLLVHHVمثال کے طور پر، ہدایات کے حوالہ کے اعداد و شمار پر توجہ دینا

        (*backtest
        start: 2021-08-05 00:00:00
        end: 2021-08-05 00:15:00
        period: 1m
        basePeriod: 1m
        exchanges: [{"eid":"Futures_OKCoin","currency":"ETH_USD"}]
        args: [["TradeAmount",100,126961],["ContractType","swap",126961]]
        *)      
        
        %%
        scope.PRINTTIME = function() {
            var bars = scope.bars;
            return _D(bars[bars.length - 1].Time);
        }
        %%
        BARTIME:PRINTTIME;      
        
        #EXPORT TEST 
        REF1C:REF(C,1);
        REF1L:REF(L,1);
        #END // 结束      
        
        #IMPORT [MIN,5,TEST] AS MIN5
        INFO(1, 'C:', C, 'MIN5.REF1C:', MIN5.REF1C, 'REF(MIN5.C, 1):', REF(MIN5.C, 1), '触发BAR时间:', BARTIME, '#FF0000');
        INFO(1, 'L:', L, 'MIN5.REF1L:', MIN5.REF1L, 'REF(MIN5.L, 1):', REF(MIN5.L, 1), '触发BAR时间:', BARTIME, '#32CD32');
        AUTOFILTER;
        

        موازنہMIN5.REF1CاورREF(MIN5.C, 1)اس کے علاوہ، آپ کو یہ بھی دیکھنا چاہئے:MIN5.REF1C5 منٹ کی لائن کے اعداد و شمار کے موجودہ لمحے کے برعکس دوسرا BAR کی اختتامی قیمت ہے۔REF(MIN5.C, 1)موجودہ ماڈل کے لئے K لائن دورانیہ ((اوپر کوڈ کی جانچ پڑتال کے دورانیے کو 1 منٹ کے لئے مقرر کیا گیا ہے، یعنیperiod: 1m), موجودہ لمحے کی منفی دوسری BAR 5 منٹ کے دورانیے کی بندش کی قیمت ہے. یہ دونوں تعریفیں مختلف ہیں اور ضرورت کے مطابق استعمال کی جاسکتی ہیں۔

    • نمونہ وضاحت

      • ایک سیدھا سگنل فلٹرنگ ماڈل

        ماڈل میں لکھ کرAUTOFILTERفنکشن کو کنٹرول کرنے اور سگنل فلٹرنگ کو یکساں طور پر انجام دینے کے لئے استعمال کیا جاتا ہے ، جب متعدد کھلی سگنل کی شرائط پوری ہوجاتی ہیں تو ، پہلا سگنل بطور موثر سگنل لیا جاتا ہے ، اور اس کے بعد کی لائن پر موجود اسی سگنل کو فلٹر کیا جاتا ہے۔

        فلٹر ماڈل کی حمایت کردہ ہدایات: BK،BP،BPK،SK،SP،SPK،CLOSEOUT، BK ((5) جیسے اشاریہ والے ہدایات کی حمایت نہیں کرتا ہے۔

        مثال کے طور پر

        MA1:MA(CLOSE,5);
        MA2:MA(CLOSE,10);
        CROSSUP(C,MA1),BK;
        CROSSUP(MA1,MA2),BK;
        C>BKPRICE+10||C<BKPRICE-5,SP;
        AUTOFILTER;
        
        理解:
        如上范例,没有设置 AUTOFILTER 时,第三行BK 和第四行BK 第五行SP,依次触发,每根K线触发一次信号。开仓后,再到平仓,即重置模型状态。      
        如果设置 AUTOFILTER , 触发BK后,只能触发SP,其它的BK 信号被忽略,每根K线触发一次信号。
        
      • اسٹوریج میں اضافہ اور کمی کا ماڈل

        ماڈل میں نہیں لکھاAUTOFILTERفنکشن ، جو مسلسل کھلی سگنل یا مسلسل کھلے سگنل کی اجازت دیتا ہے ، جس سے بڑھتی ہوئی یا کم ہونے والی سگنل حاصل ہوسکتی ہے۔

        معاون ہدایات: BK ((N) ،BP ((N) ،SK ((N) ،SP ((N) ،CLOSEOUT ،BPK ((N) ،SPK ((N) ، جو اشارے کے بغیر کھلی پوزیشن کی ہدایات کی حمایت نہیں کرتے ہیں۔ (1) ہدایات کو گروپ کرنے کی حمایت کریں۔ (2) جب متعدد ہدایات کی شرائط کو ایک ساتھ پورا کیا جاتا ہے تو ، سگنل کو پہلے سے آگے کے ترتیب میں انجام دیا جاتا ہے جو شرائط کے بیانات کے مطابق لکھا جاتا ہے۔ مثال کے طور پر

        MA1:MA(CLOSE,5);
        MA2:MA(CLOSE,10);
        CROSSUP(C,MA1),BK(1);
        CROSSUP(MA1,MA2),BK(1);
        C>BKPRICE+10||C<BKPRICE-5,SP(BKVOL);
        

        استعمالTRADE\_AGAINایک ہی کمانڈ لائن کے ساتھ کئی سگنل جاری کیے جا سکتے ہیں۔

        理解:
        以上例子,逐个信号执行,执行后的信号不再触发。平仓后重置模型状态。一个K线触发一次信号。
        
      • ایک K لائن ایک سگنل کا ماڈل

        اگر آپ کے پاس کوئی سیکنڈ کا وقت نہیں ہے تو ، آپ کو اس کی ضرورت نہیں ہے۔ اگر آپ کے پاس کوئی سیکنڈ کا وقت نہیں ہے تو ، آپ کو اس کی ضرورت نہیں ہے۔

        مثال کے طور پر

        MA1:MA(CLOSE,5);
        MA2:MA(CLOSE,10);
        CROSSUP(MA1,MA2),BPK;    // 5周期均线上穿10周期均线做多。
        CROSSDOWN(MA1,MA2),SPK;  // 5周期均线下穿10周期均线做空。
        AUTOFILTER;
        
      • ایک K لائن سے زیادہ سگنل کا ماڈل

        ماڈل کا استعمال کرتے ہوئےmultsigایک K لائن سے زیادہ سگنل کو کنٹرول اور لاگو کرنے کے لئے۔

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

        سگنل کی جانچ پڑتال نہیں کی جاتی ہے ، سگنل کے غائب ہونے کی کوئی صورت نہیں ہوتی ہے ، سگنل کی سمت ہمیشہ ہولڈنگ کی سمت کے ساتھ مطابقت رکھتی ہے۔

        ایک K لائن میں اگر متعدد سگنل کی شرائط پوری ہو جائیں تو اسے متعدد بار انجام دیا جاسکتا ہے۔

        例如:
        MA1:MA(CLOSE,5);
        MA2:MA(CLOSE,10);
        CROSSUP(MA1,MA2),BK;
        C>BKPRICE+10||C<BKPRICE-5,SP;
        AUTOFILTER;
        MULTSIG(0,0,2,0);
        

        MULTSIGایک K لائن میں کئی بار مختلف کمانڈ لائنز کو انجام دینے کی اجازت ہے۔ ایک کمانڈ لائن میں صرف ایک بار اشارہ ہوتا ہے۔

        O<C,BK;            // 这些条件在一个K线Bar内,可能都执行,但是每行只出一次信号
        10+O<C,BK;         // 策略加上TRADE_AGAIN(10);可以使每行出多次信号
        20+O<C,BK;
        40+O<C,BK;
        MULTSIG(1,1,10);
        

        مزید پڑھیں: 1، جمع اور کم ہاؤسنگ ماڈل، ایک k لائن ایک سگنل کے دو طریقوں: بندش کی قیمت کے نیچے آرڈر، ہدایات کی قیمت کے نیچے آرڈر، دونوں کی حمایت کی جاتی ہے۔ 2، جمع اور تخفیف ہاؤسنگ ماڈل، بھی ایک کلو لائن کی طرف سے ایک سے زیادہ بار سگنل کی ترتیب کی حمایت کرتا ہے. اس کے علاوہ، آپ کو اس کے بارے میں کیا سوچنا چاہئے؟multsigفنکشن، ایک k لائن پر ایک سے زیادہ بار ہاؤسنگ، یا ایک سے زیادہ بار ہاؤسنگ کو کم کرنے کے لئے لاگو کرتا ہے۔

    • عملدرآمد کا طریقہ

      img

      • اختتامی قیمت کا ماڈل

        اختتامی قیمت ماڈل کا مطلب یہ ہے کہ موجودہ بار ختم ہونے تک ماڈل کو عملدرآمد کیا جاتا ہے ، جب نیچے کی جڑ بار شروع ہوتی ہے تو تجارت کی جاتی ہے۔

      • ریئل ٹائم قیمت ماڈل

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

    • چارٹ دکھاتا ہے

      • مرکزی صفحہ اضافی اشارے

        آپریٹر استعمال کریں^^، متغیرات کو تفویض کرنے کے ساتھ ساتھ ، اشارے کی ترتیب مرکزی خاکہ میں دکھائی جاتی ہے۔

        MA60^^MA(C, 60);  // 计算参数为60的均线指标
        

        img

      • اضافی اشارے

        آپریٹر استعمال کریں:، متغیرات کو تفویض کرنے کے ساتھ ساتھ ، اشارے کی ترتیب کو ذیلی گراف میں دکھایا گیا ہے۔

        ATR:MA(MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)),26);    // 给ATR变量赋值,":"符号后为计算ATR的公式
        

        img

        اگر آپ نہیں چاہتے ہیں کہ یہ مرکزی یا ذیلی ڈرائنگ میں دکھایا جائے تو ، آپریٹر کو استعمال کریں۔

        MA60..MA(C, 60);  // 计算参数为60的均线指标
        

        img

        استعمال کیا جا سکتا ہےDOTCOLORREDلائنوں کی قسم، رنگ وغیرہ کو ترتیب دیں جو مائی زبان سے واقف صارفین کی عادتوں کے مطابق ہوں۔

    • اکثر پوچھے گئے سوالات

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

      • نمبروں پر دھیان دیں;آخر میں۔۔

      • نوٹ کریں کہ سسٹم کی کلیدی الفاظ متغیر بیان کے طور پر استعمال نہیں ہوسکتے ہیں۔

      • سٹرنگ کا استعمال کریںواحد حوالہ جاتمثال کے طور پر:'开仓'یہ سٹرنگ ہے۔

      • تبصرے

        تبصرے

        • // 注释内容(انگریزی ٹائپ ان پٹ میں دستیاب ہے) نمائندگی کرتا ہے کہ کوڈ کو عملدرآمد کے دوران مرتب نہیں کیا جاتا ہے ، یعنی عملدرآمد نہیں ہوتا ہے۔//مندرجہ ذیل مواد، جو عام طور پر ہم کوڈ کے معنی کو نشان زد کرنے کے لئے استعمال کرتے ہیں، کوڈ کو چیک کرنے کے لئے آسان ہے، تاکہ اسے جلدی سمجھنے اور یاد کرنے میں مدد ملے.

        • { 注释内容 }بلاگ کے تبصرے:

          A:=MA(C,10);
          {上一行代码是计算均线。}
          
        • (* 注释内容 *)بلاگ کے تبصرے:

          A:=MA(C,10);
          (*上一行代码是计算均线。*)
          
      • ان پٹ

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

        اگر آپ سرچ ڈاگ، Baidu، Bing ان پٹ کا استعمال کرتے ہیں تو ، آپ ایک بار دبائیںshiftبٹن، چینی سے انگریزی میں تیزی سے سوئچ کریں۔

      • غلط منطق

        1. کم از کم، کم از کم، کم سے کم: متعلقہ رشتہ دار آپریٹر>=
        2. زیادہ سے زیادہ، زیادہ سے زیادہ، زیادہ سے زیادہ نہیں: متعلقہ رشتہ دار آپریٹرز<=
      • ہم آہنگی شروع کرنے کی حکمت عملی

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

        %%
        if (!scope.init) {
            var ticker = exchange.GetTicker();
            exchange.Buy(ticker.Sell+10, 1);
            scope.init = true;
        }
        %%
        C>0, CLOSEOUT;
        
      • دو طرفہ ہولڈنگ کی حمایت نہیں کرتا

        مائی زبان ایک ہی معاہدے کی حمایت نہیں کرتی ہے اور ایک ہی وقت میں متعدد خالی جگہیں رکھتی ہے۔

  • K لائن ڈیٹا حوالہ جات

    • کھولیں

      K لائن چارٹ حاصل کرنے کے لئے کھولنے کی قیمت.

      افتتاحی قیمت

      فنکشن: اوپن، مختصر O

      پیرامیٹرز: نہیں

      وضاحت: واپس "اس سائیکل" کی ابتدائی قیمت

      سیریل ڈیٹا

      OPEN取得K线图的开盘价。
      
      注:
      1、可简写为O。
      
      例1:
      OO:=O;           //定义OO为开盘价;注意O与0的区别。
      例2:
      NN:=BARSLAST(DATE<>REF(DATE,1));
      OO:=REF(O,NN);   //取的当日的开盘价
      例3:
      MA5:=MA(O,5);    //定义开盘价的5周期均线(O为OPEN简写)。
      
    • اونچا

      K لائن گراف کی سب سے زیادہ قیمت حاصل کریں۔

      سب سے زیادہ قیمت

      فنکشن: HIGH، مختصر H

      پیرامیٹرز: نہیں

      وضاحت: "اس سائیکل" کی سب سے زیادہ قیمت واپس

      سیریل ڈیٹا

      HIGH取得K线图的最高价。
      
      注:
      1、可简写为H。
      
      例1:
      HH:=H;         // 定义HH为最高价
      例2:
      HH:=HHV(H,5);  // 取的5个周期内最高价的最大值
      例3:
      REF(H,1);      // 取的前一根K线的最高价
      
    • کم

      کم سے کم قیمت حاصل کرنے کے لئے K لائن چارٹ.

      سب سے کم قیمت

      فنکشن: LOW، مختصر طور پر L

      پیرامیٹرز: نہیں

      وضاحت: "اس سائیکل" کی کم قیمت واپس کریں

      سیریل ڈیٹا

      LOW取得K线图的最低价。
      
      注:
      1、可简写为L。
      
      例1:
      LL:=L;            // 定义LL为最低价
      例2:
      LL:=LLV(L,5);     // 取得5个周期内最低价的最小值
      例3:
      REF(L,1);         // 取得前一根K线的最低价
      
    • قریب

      K لائن چارٹ کی اختتامی قیمت حاصل کریں۔

      اختتامی قیمت

      فنکشن: CLOSE، مختصر طور پر C

      پیرامیٹرز: نہیں

      وضاحت: "اس سائیکل" کے اختتامی قیمت پر واپس جائیں

      سیریل ڈیٹا

      CLOSE取得K线图的收盘价
      
      注:
      1、当盘中k线没有走完的时候,取得最新价。
      2、可简写为C。
      
      例1:
      A:=CLOSE;          //定义变量A为收盘价(盘中k线没有走完的时候A为最新价)
      例2:
      MA5:=MA(C,5);      //定义收盘价的5周期均线(C为CLOSE简写)
      例3:
      A:=REF(C,1);       //取得前一根k线的收盘价
      
    • VOL

      K-string graph کے لئے ٹرانزیکشن کی مقدار حاصل کریں۔

      رقم کا تبادلہ

      فنکشن: VOL، مختصر V

      پیرامیٹرز: نہیں

      وضاحت: واپسی "اس سائیکل" کی مقدار

      سیریل ڈیٹا

      VOL取得K线图的成交量。
      
      注:
      可简写为V。
      该函数在当根TICK上的返回值为当天所有TICK成交量的累计值。
      
      例1:
      VV:=V;       // 定义VV为成交量
      例2:
      REF(V,1);    // 表示前一个周期的成交量
      例3:
      V>=REF(V,1); // 成交量大于前一个周期的成交量,表示成交量增加(V为VOL的简写)
      
    • او پی آئی

      موجودہ فیوچر (معاہدہ) مارکیٹ میں کل ہولڈنگز لے لو.

      OpenInterest:OPI;
      
    • REF

      آگے کا حوالہ۔

      引用X在N个周期前的值。
      
      注:
      1、当N为有效值,但当前的k线数不足N根,返回空值;
      2、N为0时返回当前X值;
      3、N为空值时返回空值。
      4、N可以为变量
      
      例1:
      REF(CLOSE,5);表示引用当前周期前第5个周期的收盘价
      例2:
      AA:=IFELSE(BARSBK>=1,REF(C,BARSBK),C);//取最近一次买开仓信号K线的收盘价
      // 1)发出BK信号的当根k线BARSBK返回空值,则发出BK信号的当根k线REF(C,BARSBK)返回
      空值;
      // 2)发出BK信号的当根k线BARSBK返回空值,不满足BARSBK>=1,则当根k线的收盘价。
      // 3)发出BK信号之后的k线BARSBK返回买开仓的K线距离当前K线的周期数,REF(C,BARSBK)
      返回开仓k线的收盘价。
      // 4)例:1、2、3 三根k线,1 K线为开仓信号的当根k线,则返回当根k线的收盘价,2、3
      K线返回 1 K线的收盘价。
      
    • یونٹ

      ڈیٹا کے معاہدے کے لئے ٹرانزیکشن یونٹ۔

      取数据合约的交易单位。
      用法:
      UNIT 取加载数据合约的交易单位。
      

      ڈیجیٹل کرنسیوں کی نقد رقم

      یونٹ کی قدر 1 ہے۔

      ڈیجیٹل کرنسی کے فیوچر

      یونٹ کی قدر معاہدے کی کرنسی سے متعلق ہے۔

      OKEX期货币本位合约:BTC合约1张代表100美元,其它币种的1张合约代表10美元
      
    • MINPRICE

      اعداد و شمار کے معاہدے کی کم سے کم قیمتوں میں تبدیلی۔

      取数据合约的最小变动价位。
      用法:
      MINPRICE; 取加载数据合约的最小变动价位。
      
    • MINPRICE1

      تجارت کے معاہدے کی کم سے کم تبدیلی کی قیمت۔

      取交易合约的最小变动价位。
      用法:
      MINPRICE1; 取交易合约的最小变动价位。
      
  • وقت کی تقریب

    • بارپوس

      K لائن کی پوزیشن لیں۔

      BARPOS,返回从第一根K线开始到当前的周期数。
      
      注:
      1、BARPOS返回本地已有的K线根数,从本机上存在的数据开始算起。
      2、本机已有的第一根K线上返回值为1。
      
      例1:LLV(L,BARPOS);        // 求本地已有数据的最小值。
      
      例2:IFELSE(BARPOS=1,H,0); // 当前K线是本机已有的第一根K线取最高值,否则取0。
      
    • ڈے بارپوس

      DAYBARPOS اگر K لائن BAR اس دن کی دسویں K لائن BAR ہے۔

    • مدت

      سائیکل کی قدر منٹ کی تعداد میں ہے۔

      1, 3, 5, 15, 30, 60, 1440
      
    • تاریخ

      تاریخفنکشن DATE، اس دورانیے کے سالانہ دن حاصل کرتا ہے جو 1900 سے شروع ہوتا ہے۔

      例1:
      AA..DATE;                  // 测试时AA的值为220218,表示2022年2月18日
      
    • وقت

      K لائن کا وقت لینا۔

      TIME,取K线时间。
      
      注:
      1、该函数在盘中实时返回,在K线走完后返回K线的起始时间。
      2、该函数返回的是交易所数据接收时间,也就是交易所时间。
      3、TIME函数在秒周期使用时返回六位数的形式,即:HHMMSS,在其他周期上显示为四位数的形式,即:HHMM.
      4、TIME函数只能加载在日周期以下的周期中,在日周期及日周期以上的周期中该函数返回值始终为1500。
      5、使用TIME函数进行尾盘平仓的操作需要注意
      (1)尾盘平仓设置的时间建议设置为K线返回值中实际可以取到的时间(如:螺纹指数 5分钟周期 最后一根K线返回时间为1455,尾盘平仓设置为TIME>=1458,CLOSEOUT;则效果测试中不能出现尾盘平仓的信号)
      (2)使用TIME函数作为尾盘平仓的条件的,建议开仓条件也要做相应的时间限制(如设置尾盘平仓条件为TIME>=1458,CLOSEOUT;则相应的开仓条件中需要添加条件TIME<1458;避免平仓后再次开仓的情况)
      
      例1:
      C>O&&TIME<1450,BK;
      C<O&&TIME<1450,SK;
      TIME>=1450,SP;
      TIME>=1450,BP;
      AUTOFILTER;
      // 在14:50后平仓。
      例2:
      ISLASTSK=0&&C>O&&TIME>=0915,SK;
      
    • سال

      سالہ۔

      YEAR,取得年份。
      
      注:
      YEAR的取值范围为1970—2033。
      
      例1:
      N:=BARSLAST(YEAR<>REF(YEAR,1))+1;
      HH:=REF(HHV(H,N),N);
      LL:=REF(LLV(L,N),N);
      OO:=REF(VALUEWHEN(N=1,O),N);
      CC:=REF(C,N);                               // 取上一年的最高价,最低价,开盘价,收盘价
      例2:
      NN:=IFELSE(YEAR>=2000 AND MONTH>=1,0,1);
      
    • مہینہ

      مہینے کا حساب لیں۔

      MONTH,返回某个周期的月份。
      
      注:
      MONTH的取值范围为1—12.
      
      例1:
      VALUEWHEN(MONTH=3&&DAY=1,C);                // 在K线日期为三月一日时取其收盘价
      例2:
      C>=VALUEWHEN(MONTH<REF(MONTH,1),O),SP;
      
    • دن

      ایک سائیکل کے لئے دن کی تعداد

      DAY,返回某一周期的日数。
      
      注:
      DAY取值范围为1-31。
      
      例1:
      DAY=3&&TIME=0915,BK;                      // 当日起为3日,时间为9点15分时,买开
      例2:
      N:=BARSLAST(DATE<>REF(DATE,1))+1;
      CC:=IFELSE(DAY=1,VALUEWHEN(N=1,O),0);      // 当日期为1时,取开盘价,否则取值为0
      
    • گھنٹے

      گھنٹہ۔

      HOUR,返回某周期的小时数。
      
      注:
      HOUR的取值范围为0—23
      
      例1:
      HOUR=10;                                   // 在10:00的K线上返回值为1,其余K线上返回值为0
      
    • منٹ

      ایک منٹ۔۔

      MINUTE,返回某个周期的分钟数。
      
      注:
      1:MINUTE的取值范围为0—59
      2:该函数只能加载在分钟周期上,返回当根K线开始的分钟数。
      例1:
      MINUTE=0;                                 // 在整点时刻的分钟K线上返回值为1,其余K线返回值为0
      例2:
      TIME>1400&&MINUTE=50,SP;                   // 在14:50的时候卖平仓
      
    • ہفتہ کا دن

      ہفتوں کی تعداد حاصل کریں۔

      WEEKDAY,取得星期数。
      
      注:
      1:WEEKDAY的取值范围是0—6。(星期日 ~ 星期六)
      
      例1:
      N:=BARSLAST(MONTH<>REF(MONTH,1))+1;
      COUNT(WEEKDAY=5,N)=3&&TIME>=1450,BP;
      COUNT(WEEKDAY=5,N)=3&&TIME>=1450,SP;
      AUTOFILTER;                               // 每个月交割日尾盘自动平仓
      例2:
      C>VALUEWHEN(WEEKDAY<REF(WEEKDAY,1),O)+10,BK;
      AUTOFILTER;
      
  • منطقی فیصلے کی تقریب

    • بارسٹیٹوس

      موجودہ سائیکل کی پوزیشن کی حالت کو واپس کرتا ہے۔

      BARSTATUS 返回当前周期的位置状态。
      
      注:
      该函数返回1表示当前周期是第一个周期,返回2表示是最后一个周期,返回0表示当前周期处于中间位置。
      
      例:
      A:=IFELSE(BARSTATUS=1,H,0);              // 如果当前K线是第一个周期,变量A返回K线最高值,否则取0
      
    • درمیان میں

      میں نے اس کے بارے میں کیا سوچا؟

      BETWEEN(X,Y,Z) 表示X是否处于Y和Z之间,成立返回1(Yes),否则返回0(No)。
      
      注:
      1、其中若X=Y、X=Z、或X=Y且Y=Z时函数返回值为1(Yse)。
      
      例1:
      BETWEEN(CLOSE,MA5,MA10);                // 表示收盘价介于5日均线与10日均线之间
      
    • BARSLASTCOUNT

      BARSLASTCOUNT ((COND) موجودہ سائیکل سے آگے کا حساب لگایا جاتا ہے، اعداد و شمار مسلسل حالات کو پورا کرنے کے لئے سائیکلوں کی تعداد.

      注:
      1、返回值为从当前周期计算COND连续不为0的周期数
      2、条件第一次成立的当根k线上BARSLASTCOUNT(COND)的返回值为1
      
      例:
      BARSLASTCOUNT(CLOSE>OPEN);
      //计算当根K线在内连续为阳线的周期数
      
    • کراس

      ٹرانس فنکشن۔

      CROSS(A,B) 表示A从下方向上穿过B,成立返回1(Yes),否则返回0(No)
      
      注:
      1、满足穿越的条件必须上根k线满足A<=B,当根k线满足A>B才被认定为穿越。
      
      例1:
      CROSS(CLOSE,MA(CLOSE,5));              // 表示收盘线从下方向上穿过5周期均线
      
    • کراس ڈاؤن

      نیچے کی طرف

      CROSSDOWN(A,B):表示当A从上方向下穿B,成立返回1(Yes),否则返回0(No)
      
      注:
      1、CROSSDOWN(A,B)等同于CROSS(B,A),CROSSDOWN(A,B)编写更利于理解
      
      例1:
      MA5:=MA(C,5);
      MA10:=MA(C,10);
      CROSSDOWN(MA5,MA10),SK;               // MA5下穿MA10卖开仓
      // CROSSDOWN(MA5,MA10),SK;与CROSSDOWN(MA5,MA10)=1,SK;表达同等意义
      
    • CROSSUP

      اوپر کی طرف سے گزر رہا ہے۔

      CROSSUP(A,B)表当A从下方向上穿过B,成立返回1(Yes),否则返回0(No)
      
      注:
      1、CROSSUP(A,B)等同于CROSS(A,B),CROSSUP(A,B)编写更利于理解。
      
      例1:
      MA5:=MA(C,5);
      MA10:=MA(C,10);
      CROSSUP(MA5,MA10),BK;                 // MA5上穿MA10,买开仓
      // CROSSUP(MA5,MA10),BK;与CROSSUP(MA5,MA10)=1,BK;表达同等意义
      
    • ہر ایک

      یہ فیصلہ کرنے کے لئے کہ کیا یہ مسلسل مطمئن ہے۔

      EVERY(COND,N),判断N周期内是否一直满足COND条件。若满足函数返回值为1,不满足函数返回值为0。
      
      注:
      1、N包含当前k线。
      2、若N是有效数值,但前面没有那么多K线,或者N为空值,代表条件不满足,函数返回值为0。
      3、N可以是变量。
      
      例1:
      EVERY(CLOSE>OPEN,5);                // 表示5个周期内一直是阳线
      例2:
      MA5:=MA(C,5);                       // 定义5周期均线
      MA10:=MA(C,10);                     // 定义10周期均线
      EVERY(MA5>MA10,4),BK;               // 4个周期内MA5都大于MA10,则买开仓
      // EVERY(MA5>MA10,4),BK;与EVERY(MA5>MA10,4)=1,BK;表达同等意义
      
    • موجود ہے

      اس کے علاوہ ، یہ بھی کہا جاتا ہے کہ یہ ایک بہت بڑا مسئلہ ہے۔

      EXIST(COND,N)判断N个周期内是否有满足COND的条件。
      
      注:
      1、N包含当前k线。
      2、N可以是变量。
      3、若N是有效数值,但前面没有那么多K线,按实际周期数计算。
      
      例1:
      EXIST(CLOSE>REF(HIGH,1),10);     // 表示10个周期中是否存在收盘价大于前一个周期的最高价,存在返回1,不存在则返回0
      例2:
      N:=BARSLAST(DATE<>REF(DATE,1))+1;
      EXIST(C>MA(C,5),N);              // 表示当天是否有满足收盘价大于5周期均线的k线,存在返回1,不存在返回0
      
    • اگر

      مشروط افعال۔

      IF(COND,A,B)若COND条件成立,则返回A,否则返回B。
      
      注:
      1、COND是判断条件;A、B可以是条件,也可以是数值。
      2、该函数支持变量循环引用前一周期自身变量,即支持下面这样的写法Y:IF(CON,X,REF(Y,1))。
      例1:
      IF(ISUP,H,L);                   // k线为阳线,取最高价,否则取最低价
      例2:
      A:=IF(MA5>MA10,CROSS(DIFF,DEA),IF(CROSS(D,K),2,0));     // 当MA5>MA10时,取是否满足DIFF上穿DEA,否则(MA5不大于MA10),当K,D死叉时,令A赋值为2,若上述条件都不满足,A赋值为0
      A=1,BPK;                                                // 当MA5>MA10,以DIFF上穿DEA作为开多仓条件
      A=2,SPK;                                                // 当MA5不大于MA10,以K、D死叉作为开空仓条件
      
    • IFELSE

      مشروط افعال۔

      IFELSE(COND,A,B) 若COND条件成立,则返回A,否则返回B。
      
      注:
      1、COND是判断条件;A、B可以是条件,也可以是数值。
      2、该函数支持变量循环引用前一周期自身变量,即支持下面这样的写法Y: IFELSE(CON,X,REF(Y,1));
      例1:
      IFELSE(ISUP,H,L);                                             // k线为阳线,取最高价,否则取最低价
      例2:
      A:=IFELSE(MA5>MA10,CROSS(DIFF,DEA),IFELSE(CROSS(D,K),2,0));   // 当MA5>MA10时,取是否满足DIFF上穿DEA,否则(MA5不大于MA10),当K,D死叉时,令A赋值为2,若上述条件都不满足,A赋值为0
      A=1,BPK;                                                      // 当MA5>MA10,以DIFF上穿DEA作为开多仓条件
      A=2,SPK;                                                      // 当MA5不大于MA10,以K、D死叉作为开空仓条件
      
    • معاہدہ

      کیا یہ معاہدہ اس وقت طے شدہ ہے؟

      ISCONTRACT(CODE)当前是否为指定的合约。
      
      用法:ISCONTRACT(CODE);是当前合约返回1,不是当前合约返回0。
      
      注:
      1、判断是否为指定合约时,CODE可以为合约的交易代码。
      
      例:
      ISCONTRACT('this_week');    // 数字货币OKEX期货合约
      ISCONTRACT('XBTUSD');       // 数字货币BITMEX期货合约
      

      اس کے علاوہ، ہم نے اس کے بارے میں مزید معلومات حاصل کی ہیں.

      معاہدے کا فیصلہ

      ISCONTRACT('this_week');                     // 判断当前合约是否为OKEX期货 this_week(当周)合约
      

      تبادلہ نام کا تعین

      ISCONTRACT('@Futures_(Binance|FTX)');       // 判断当前交易所对象是否为Binance期货或者FTX期货
      ISCONTRACT('@(OKEX|Bitfinex)');             // 判断交易所,需要在开头加@字符
      
    • آئی ایس ڈاؤن

      عورت کے جسم کا حصہ

      ISDOWN判断该周期是否收阴。
      
      注:
      1、ISDOWN等同于C<O
      
      例:
      ISDOWN=1&&C<REF(C,1),SK;                    // 当根k线收阴并且收盘价小于前一周期收盘价,则开空
      // ISDOWN=1&&C<REF(C,1),SK;与ISDOWN&&C<REF(C,1),SK; 表达同等意义
      
    • آئی ایس ایچ او ایل

      فلیٹ۔

      ISEQUAL判断该周期是否平盘。
      
      注:
      1、ISEQUAL等同于C=O
      
      例1:
      EVERY(ISEQUAL=1,2),CLOSEOUT;                // 持续2根k线都是平盘,则全平
      
    • آخری بار

      یہ فیصلہ کرنے کے لئے کہ آیا یہ آخری K لائن ہے۔

      ISLASTBAR判断该周期是否为最后一根k线。
      
      例1:
      VALUEWHEN(ISLASTBAR=1,REF(H,1));            // 当前k线是最后一根k线,则取前一周期的最高价
      
    • آئی ایس این ایل ایل

      خالی قدر کا تعین کریں۔

      ISNULL判断空值。
      
      用法:ISNULL(N);如果N为空值,函数返回1;如果N为非空值,函数返回0。
      
      例:MA5:=IFELSE(ISNULL(MA(C,5))=1,C,MA(C,5));   // 定义五周期均线,K线数量不足五根时,返回当根K线的收盘价
      
    • آئی ایس یو پی

      سورج کی روشنی۔

      ISUP判断该周期是否收阳。
      
      注:
      1、ISUP等同于C>O。
      
      例:
      ISUP=1&&C>REF(C,1),BK;   // 若当根k线收阳并且收盘价大于前一周期收盘价,则开多
                               // ISUP=1&&C>REF(C,1),BK; 与 ISUP&&C>REF(C,1),BK
                               // 表达同等意义
      
    • آخری

      آپ کا کام یہ ہے کہ آپ کو اپنے آپ کو کیسے سمجھنا چاہئے

      LAST(COND,N1,N2)判断过去N1到N2周期内,是否一直满足COND条件。
      
      注:
      1、若N1与N2只相差一个周期(如N1=3,N2=2),则函数判断距离当前K线最近的那个周期上是否满足条件(即判断过去N2个周期的那根K线上是否满足条件)。
      2、当N1/N2为有效值,但当前的k线数不足N1/N2根,或者N1/N2空值的情况下,代表不成立,该函数返回0。
      3、N1、N2不可以是变量。
      
      例1:
      LAST(CLOSE>OPEN,10,5);   // 表示从过去第10个周期到第5个周期内一直是阳线
      例2:
      MA5:=MA(C,5);
      LAST(C>MA5,4,3);         // 判断距离当前k线3个周期的那根k线上是否满足C大于MA5
      
    • لونگ کراس

      کراس فنکشن کو برقرار رکھیں۔

      LONGCROSS(A,B,N)表示A在N个周期内都小于B,本周期A从下向上穿越B。
      
      注:
      1、当N为有效值,但当前的k线数不足N根时,LONGCROSS函数返回空值。
      2、N不支持变量。
      
      例1:
      LONGCROSS(CLOSE,MA(CLOSE,10),20);   // 表示收盘线在10日均线之下持续20周期后从下向上穿过10日均线
      
    • نہیں

      نہیں۔۔

      NOT(X):取非。当X=0时返回1,否则返回0。
      例1:
      NOT(ISLASTBK);如果上一个信号不是BK信号,则NOT(ISLASTBK)返回值为1;上一个信号是BK信号,则NOT(ISLASTBK)返回值为0。
      例2:
      NOT(BARSBK>=1)=1;                  // BK信号发出的当根K线上满足条件
      // NOT(BARSBK>=1)=1与NOT(BARSBK>=1)表达同等意义
      
    • NULL

      خالی قدر لوٹاتا ہے۔

      返回空值
      用法:
      MA5:=MA(C,5);
      MA10:=MA(C,10);
      A:=IFELSE(MA5>MA10,MA5,NULL),COLORRED;  // 当MA5>MA10时,画五日均线MA5,不满足MA5>MA10时,返回空值,不画线
      
    • VALUEWHEN

      قیمتیں لینا۔

      VALUEWHEN(COND,X)当COND条件成立时,取X的当前值。如COND条件不成立,则取上一次COND条件成立时X的值。
      
      注:
      X可以是数值也可以是条件。
      
      例1
      VALUEWHEN(HIGH>REF(HHV(HIGH,5),1),HIGH);  // 表示当前最高价大于前五个周期最高价的最大值时返回当前最高价
      例2:
      VALUEWHEN(DATE<>REF(DATE,1),O);           // 表示取当天第一根k线的开盘价(即当天开盘价)
      例3:
      VALUEWHEN(DATE<>REF(DATE,1),L>REF(H,1));  // 表示在当天第一根k线上判断当前最低价是否大于昨天最后一根K线的最高价。返回1,说明当天跳空高开。返回0,说明当天不满足跳空高开条件
      
  • لوپیکل ایگزیکشن فنکشن

    • LOOP2

      لپیٹ کی حالت کی تقریب۔

      LOOP2(COND,A,B);循环条件函数若COND条件成立,则返回A,否则返回B。
      
      注:
      1、COND是判断条件;A、B可以是条件,也可以是数值。
      2、该函数支持变量循环引用前一周期自身变量,即支持下面这样的写法Y:=LOOP2(CON,X,REF(Y,1));
      
      例1:
      X:=LOOP2(ISUP,H,REF(X,1));                // k线为阳线,取当根K线的最高价,否则取上一次是阳线的K线的最高价;若之前未出现过阳线时,X返回为空值
      
      例2:
      BB:=LOOP2(BARSBK=1,LOOP2(L>LV(L,4),L,LV(L,4)),LOOP2(L>REF(BB,1),L,REF(BB,1))); // 持有多单时,开多单那根的前面4个周期内的最低价为起始止损点BB,后续K线最低价比前一个最低价高,取当前最低价为止损点,否则取前一个低点为止损点
      SS:=LOOP2(BARSSK=1,LOOP2(H<HV(H,4),H,HV(H,4)),LOOP2(H<REF(SS,1),H,REF(SS,1))); // 持有空单时,开空单那根的前面4个周期内的最高价为起始止损点SS,最高价比前一个最高价低,取当前最高价为止损点,否则取前一个高点为止损点
      H>HV(H,20),BK;
      L<LV(L,20),SK;
      C<BB,SP;
      C>SS,BP;
      AUTOFILTER;
      
  • مالیاتی شماریات کی افعال

    • بارسکاؤنٹ

      پہلے فعال دور سے لے کر موجودہ دور تک۔

      BARSCOUNT(COND)第一个有效周期到当前的周期数。
      
      注:
      1、返回值为COND从第一个有效周期开始计算,到现在为止的周期数。
      2、条件第一次成立的当根k线上BARSCOUNT(COND)的返回值为0。
      
      例:
      BARSCOUNT(MA(C,4));                       // 计算MA(C,4)第一次有返回值到当前的周期数
      
    • BARSLAST

      پچھلی بار شرط قائم کی گئی تھی۔

      BARSLAST(COND),上一次条件COND成立到当前的周期数。
      
      注:
      1、条件成立的当根k线上BARSLAST(COND)的返回值为0。
      
      例1:
      BARSLAST(OPEN>CLOSE);                     // 上一根阴线到现在的周期数
      例2:
      N:=BARSLAST(DATE<>REF(DATE,1))+1;         // 分钟周期,当日k线数
      // 由于条件成立的当根k线上BARSLAST(COND)的返回值为0,所以“+1”才是当日k线根数
      

      وضاحتBARSLASTفنکشن:

      • 1، اگر موجودہ K لائن کی شرط قائم ہے تو 0 لوٹاتا ہے۔
      • 2، اگر یہ نہیں بنتا ہے تو، یہ مسلسل آگے بڑھتا ہے، جب تک کہ یہ K لائن نہیں ملتا ہے جس میں یہ شرط بنتی ہے، اور ایک واپس آنے والے دورانیے کی تعداد واپس آتی ہے.
      • 3، اگر آپ کو K لائن نہیں مل سکی جس میں شرائط قائم کی گئی ہیں تو ، اگر آپ کو اس کے اختتام تک واپس جانا ہے تو ، یہ ایک غلط قیمت واپس کرتا ہے۔
    • بارسنس

      پہلی شرط موجودہ دورانیے کی تعداد تک قائم ہے۔

      BARSSINCE(COND)第一个条件成立到当前的周期数。
      
      注:
      1、返回值为COND第一次成立到当前的周期数。
      2、条件第一次成立的当根k线上BARSSINCE(COND)的返回值为0。
      
      例:
      BARSSINCE(CLOSE>OPEN);                    // 统计第一次满足阳线这个条件的K线到现在的周期数
      
    • بارسنسن

      اعداد و شمار کے N دوروں میں پہلی شرط موجودہ دوروں کی تعداد تک قائم ہوتی ہے۔

      BARSSINCEN(COND,N)统计N周期内第一次条件成立到当前的周期数。
      
      注:
      1、N包含当前k线。
      2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算。
      3、若N为0返回无效值。
      4、N可以为变量。
      
      例:
      N:=BARSLAST(DATE<>REF(DATE,1))+1;        // 分钟周期,当日K线数
      BARSSINCEN(ISUP,N);                      // 统计N周期内第一次满足阳线到当前的周期数
      
    • کنڈبار

      K لائنوں کے درمیان دوروں کی تعداد حاصل کریں جو حال ہی میں A، B کی شرائط کو پورا کرتی ہیں۔

      CONDBARS(A,B);取得最近的满足A、B条件的k线间周期数。
      
      注意:
      1、该函数返回周期数不包含最后满足条件的K线。
      2、距离当前K线最近的满足的条件为B条件,则该函数返回值为最后一次满足A条件的K线到满足B条件的K线的周期数(A条件满足后的第一次满足B条件的K线)。
      距离当前K线最近的满足的条件为A条件,则该函数返回值为最后一次满足B条件的K线到满足A条件的K线的周期数(B条件满足后的第一次满足A条件的K线)。
      
      例1:
      MA5:=MA(C,5);                                        // 5周期均线
      MA10:=MA(C,10);                                      // 10周期均线
      CONDBARS(CROSSUP(MA5,MA10),CROSSDOWN(MA5,MA10));     // 最近一次满足5周期均线上穿10周期均线与5周期均线下穿10周期均线之间的周期数
      
    • گنتی

      اعداد و شمار کا مجموعہ۔

      COUNT(COND,N),统计N周期中满足COND条件的周期数。
      
      注:
      1、N包含当前k线。
      2、若N为0则从第一个有效值算起。
      3、当N为有效值,但当前的k线数不足N根,从第一根统计

مزید

98K- سیریز اعلی درجے کی تجارت کے اشارےk لائن پر j1 کے ذریعے سورج کی روشنی میں آنے والی لائن پر j1 کے بعد واپس جے 1 پر کلک کریں ، جب یہ واپس کیا جاسکتا ہے تو ، لیکن یہ جینس لائن پر ہے اور جے 1 پر نہیں کھڑا ہے ، یہ بھی کھل گیا ہے۔ چھوٹی خواب ٹیچر براہ کرم مجھے بتائیں کہ یہ کہاں غلط ہے۔ D1:=if ((jk<0 && CROSS ((close,j1) and CLOSE>OPEN and close>j1,j1,0) ؛ D1,BK; /upload/asset/2af6fee82ea8bb3725687.png

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

98K- سیریز اعلی درجے کی تجارت کے اشارےisLast ((x) فنکشن کی وضاحت: فیصلہ کریں کہ آیا موجودہ ڈیٹا آخری ڈیٹا ہے۔ کیا موجد پر یہ فنکشن کام کرتا ہے؟

wanghehe711@qq.comکیا مائی زبان ایک حقیقی ڈسک کے ساتھ مل کر کام کر سکتی ہے؟

یہ کریم ہےاگر آپ مارک کو ہینڈل کرنا چاہتے ہیں تو کیا آپ کو جاوا یا پائیون کو سرایت کرنے کی ضرورت ہے؟ کیا آپ ایک مثال دے سکتے ہیں؟

بادلکیا مائی زبان اوکیکس معاہدے کی حمایت کرتی ہے؟ کیا اوکیکس معاہدے کی اے پی آئی تک رسائی حاصل ہے؟

چھوٹا سا خواباچھا، اس طرف دیکھو.

چھوٹا سا خوابابھی تک اس isLast کمانڈ کی حمایت نہیں کی گئی ہے

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

چھوٹا سا خواباس طرح کا ڈیزائن زیادہ پیچیدہ ہے ، اگر یہ لسٹنگ کی پالیسی ہے تو ، براہ راست جے ایس ، پی وائی کی پالیسی لکھنے کی سفارش کی جاتی ہے۔

چھوٹا سا خواباس کے علاوہ ، آپ کو اپنے صارفین کے لئے ایک نیا ورڈپریس اکاؤنٹ بنانا ہوگا۔