4
ফোকাস
1271
অনুসারী

উদ্ভাবক Quantify My Language (Mylang) ডকুমেন্টেশন

তৈরি: 2018-11-30 13:29:33, আপডেট করা হয়েছে: 2022-12-09 17:46:10
comments   24
hits   37709

[TOC]

My ভাষা একটি প্রোগ্রামিং ট্রেডিং ভাষা যা ম্যাকের সাথে সামঞ্জস্যপূর্ণ এবং বর্ধিত। FMZ পরিমাপ করা My ভাষাটি কঠোরভাবে ব্যাকরণগত পরীক্ষা করে, যেমন জাভাস্ক্রিপ্ট ভাষার কোডে ভাষার বর্ধিতকরণ ব্যবহার করার সময়,%%অপারেটরের পরে একটির বেশি ফাঁকা অক্ষর থাকলে ত্রুটি দেখা দিতে পারে।

  • মৌলিক বিবরণ

    • ## চুক্তি

    ডিজিটাল মুদ্রা চুক্তি

    ডিজিটাল মুদ্রা চুক্তি

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

    উদ্ভাবক Quantify My Language (Mylang) ডকুমেন্টেশন

    • ## পরিবর্তনশীল

    একটি ভেরিয়েবল হল কম্পিউটারের মেমরির একটি অংশ যেখানে তথ্য সংরক্ষণ করা হয়।

    প্রথম ভেরিয়েবল খুলুন

    // 将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);
    
     2. ইংরেজি + নিচের লাইন
    
      // 输出
      move_avg_5:=MA(C,5);
    

    আপনি যদি ইংরেজিতে কথা বলতে পছন্দ করেন, তাহলে আপনার ভ্যারিয়েন্টের অর্থ যথাসম্ভব বোঝার চেষ্টা করুন।A1AAABBB… এই ধরনের নামকরণের পদ্ধতি। আমি বিশ্বাস করি যে আপনি যখন আপনার কোডটি পুনরায় পরীক্ষা করেন তখন আপনি আপনার স্মৃতির অভাবের কারণে খুব কষ্ট পাবেন। একইভাবে যখন আপনি কোডটি অন্যের কাছে রফতানি করেন, তখন পাঠকের মানসিকতা অবশ্যই ভেঙে যায়।

    তাই এখন থেকে, আপনার নিজের ভাষায় কথা বলা শুরু করুন, এবং আশা করি এটি আপনার বিশ্লেষণ এবং সিদ্ধান্ত গ্রহণের জন্য একটি শক্তিশালী হাতিয়ার হয়ে উঠবে।

    • ## ডাটা টাইপ

    ডেটা টাইপ একটি মৌলিক ধারণা, যেটি প্রোগ্রামিংয়ে যখন আমরা একটি ভেরিয়েবলকে একটি নির্দিষ্ট ডেটা মান প্রদান করি, তখন সেই ভেরিয়েবলটি ডেটার টাইপ হয়ে যায়।

    • 1. মানের ধরনঃ
      1、2、3、1.1234、2.23456 ...
    
    • 2. স্ট্রিং টাইপঃ
      '1' 、'2' 、'3' ,字符串类型必须用 '' 包裹
    
    • 3. ক্রমিক তথ্যঃ
      一系列单值数据构成的数据集合
    
    • 4. বুল টাইপ (boolean):

    ব্যবহার1প্রতিনিধিtrue0প্রতিনিধিfalse

    উদাহরণ

      // 声明一个数值类型的变量
      var_int := 1;
      // 声明一个序列数据的变量
      var_arr := Close;
      // 字符串类型不能单独声明,需要结合函数
      INFO(C>O, '阳线');
    
    • ## অপারেটর

    একটি সূচক কোডের অপারেশন, হিসাব করার জন্য ব্যবহৃত হয়, যা সহজভাবে বলা যায় যে এটি অপারেশনে অংশগ্রহণকারী প্রতীক।

    • ### মান নির্ধারণ অপারেটর

    একটি ভেরিয়েবলের মান নির্ধারণ করতে ব্যবহৃত হয়

     - 1. `:`
    
    
    `:`, মান নির্ধারণের জন্য ব্যবহৃত হয় এবং চিত্রের মধ্যে প্রেরণ করা হয় (অন-চিত্র) ।
    
    
    ```
    Close1:Close;      // 将Close赋值给变量Close1,并且输出到图中
    ```
    
     - 2. `:=`
    
    
    `:=`, মান নির্ধারণের জন্য ব্যবহৃত হয়, কিন্তু এটি চিত্রের মধ্যে প্রকাশিত হয় না (প্রধান চিত্র, উপ-চিত্র...) এবং স্ট্যাটাস টেবিলের মধ্যে প্রদর্শিত হয় না।
    
    
    ```
    Close2:=Close;     // 将Close赋值给变量Close2
    ```
    
     - 3. `^^`
    
    
    `^^`, দুই`^`প্রতীকটি মানের প্রতিনিধিত্ব করে, ভেরিয়েবলকে মান প্রদান করে এবং চিত্রটি (প্রধান চিত্র) এ আউটপুট দেয়।
    
    
    ```
    lastPrice^^C;
    ```
    
     - 4. `..`
    
    
    `..`, দুই`.`প্রতীক মানের প্রতিনিধিত্ব করে, ভেরিয়েবলকে মান দেয় এবং চার্টটিতে ভেরিয়েবলের নাম এবং মান প্রদর্শন করে, তবে চার্টটি চার্টটিতে আঁকা হয় না (মূল চিত্র, উপ-চিত্র ...) ।
    
    
    ```
    openPrice..O
    ```
    
    • ### রিলেশনাল অপারেটর

    একটি সম্পর্ক অপারেটর একটি দ্বৈত অপারেটর যা একটি শর্তযুক্ত অভিব্যক্তিতে ব্যবহৃত হয়। এটি দুটি ডেটার মধ্যে সম্পর্ক নির্ধারণের জন্য ব্যবহৃত হয়।

    রিটার্ন মানঃ বুল টাইপ, নাtrue(১)false(0)。

     - 1. বড়`>`
    
    
    ```
    // 将2>1的运算结果赋值给rv1变量,此时rv1=1
    rv1:=2>1;
    ```
    
     - 2. কম`<`
    
    
    ```
    // 返回false,也就是0,因为2大于1
    rv3:=2<1;
    ```
    
     - 3. এর চেয়ে বড় সমান`>=`
    
    
    ```
    x:=Close;
    // 将收盘价大于等于10的运算的结果赋值给变量rv2
    // 注意,由于close是一个序列数据,当进行close>=10运算的时候,本质是每个周期都进行运算,所以每个周期都会有一个1、0的返回值
    rv2:=Close>=10;
    ```
    
     - 4. এর চেয়ে কম সমান`<=`
    
    
    ```
    此处省略
    ```
    
     - 5. সমান`=`
    
    
    ```
    A:=O=C;     // 判断开盘价是不是等于收盘价。
    ```
    
     - 6. সমান নয়`<>`
    
    
    ```
    1<>2       // 判断1是否不等于2,返回值为1(true)
    ```
    
    • ### লজিক্যাল অপারেটর

    রিটার্ন মানঃ বুল টাইপ, নাtrue(১)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,成立
    
     2. যুক্তি বা`||`ব্যবহার করা যাবে`or`প্রতিস্থাপন বা লিঙ্কের ডান ও বাম উভয় পাশে, একপাশে প্রতিষ্ঠিত ((true), এবং সামগ্রিকভাবে প্রতিষ্ঠিত ((return value true) ।
    
      cond_a:=1>2;
      cond_b:=4>3;
      cond_c:=5>6;
      cond_a || cond_b or cond_c;    // 返回值为1,成立
    
     3. `()`অপারেটর, গণনা করার সময় প্রথমে বন্ধনীগুলির অভিব্যক্তি গণনা করা হবে।
    
      1>2 AND (2>3 OR 3<5)    // 运算结果为假
      1>2 AND 2>3 OR 3<5      // 运算结果为真
    
    • ### অ্যালগরিদম অপারেটর
      返回值:数值类型
    

    অ্যালগরিদমিক অপারেটর হল অ্যালগরিদমিক অপারেটর চিহ্ন। এটি মৌলিক অ্যালগরিদমিক অপারেশনগুলি সম্পাদন করার জন্য ব্যবহৃত একটি চিহ্ন, যা চারটি অপারেশন পরিচালনা করতে ব্যবহৃত হয়।

     - **যোগ করুন +**
    
    
    ```
    A:=1+1;      // 返回 2
    ```
    
     - **কমানো -**
    
    
    ```
    A:=2-1;      // 返回 1
    ```
    
     - **গুণ করুন***
    
    
    ```
    A:=2*2;      // 返回 4
    ```
    
     - **বাদ /**
    
    
    ```
    A:=4/2;      // 返回 2
    ```
    
    • ফাংশন

      • ### ফাংশন

    প্রোগ্রামিংয়ের জগতে, ফাংশন কোড আসলে কোডের একটি অংশ যা একটি নির্দিষ্ট ফাংশন বাস্তবায়ন করে। এবং অন্যান্য কোডের জন্য কল করা যেতে পারে, সাধারণ ফর্মটি নিম্নরূপঃ

      function(param1,param2,...)
    
     - এর গঠনঃ
    
    
    ফাংশন নাম ((অ্যারেজিম ১, অ্যারেজিম ২,...), কোন অ্যারেজিম থাকতে পারে না বা একাধিক অ্যারেজিম থাকতে পারে। যেমন`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এটি একটি ফাংশন (যেমন, [] যেটি শুরু থেকে শেষ পর্যন্ত মূল্যের ক্রম প্রদান করে), কিন্তু এর কোন প্যারামিটার নেই। দ্বিতীয় প্যারামিটারটি হল ৫, ১০। এটিকে বলা হয়MA()ফাংশন, আমরা কয়েকদিনের মুভিং এভারেজ পেতে চাই, এবং প্যারামিটার দিয়ে, ফাংশনটি ব্যবহারে আরও নমনীয় হয়ে ওঠে।

    • কিভাবে শিখবেন

      • 1. প্রথমত, ফাংশনটি কী করে কাজ করে তা বোঝা দরকার, অর্থাৎ ফাংশনটি আমাদের কী তথ্য ফেরত দেয়।
      • 2. এবং সবশেষে, আমরা যে ফাংশন ব্যবহার করি তা হল রিটার্নের ধরন, যেহেতু আমরা ফাংশন ব্যবহার করি রিটার্নের জন্য।
      • 3. দ্বিতীয়ত, আমাদের জানতে হবে প্যারামিটারের ডাটা টাইপ।MA(x,n), যদি আমরা প্যারামিটার জানি নাxnএই ধরনের ডেটা টাইপ সঠিকভাবে রিটার্ন করতে পারে না।

    উপরের তিনটি নীতি অনুসরণ করে ফাংশনটি ব্যবহার করুন।

    • ভাষার উন্নতি

      • 麦语言এবং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`বস্তুর তথ্য <unk>
    
    
    নিচে`%%  %%`প্রতীক দ্বারা আবৃত`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-লাইন bar অ্যাক্সেস করুন।
    
    
    `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
    
    
    বর্তমান লেনদেনের জোড়া নামের স্ট্রিং পেতে <unk>
    
    
    ```
    %%
    scope.TEST = function(){
        Log(scope.symbol)
        throw "stop"
    }
    %%
    TEST;
    ```
    
     - scope.barPos
    
    
    K-লাইন বার অবস্থান পেতে <unk>
    
    
    ```
    %%
    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 VAR240২৪০ মিনিটের সময়কাল ((৪ ঘন্টা) কে লাইন ইত্যাদি তথ্য আমদানি করুন।

    কোড উদাহরণঃ

      // 本代码演示如何引用不同周期的公式在同一代码里
      // #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.REF1Cহল 5 মিনিটের K-লাইন ডেটা বর্তমান মুহুর্তের বিপরীত দ্বিতীয় BAR এর সমাপ্তি মান। REF(MIN5.C, 1)হল বর্তমান মডেলের K-লাইন সময়কাল ((উপরের কোডটি পুনরুদ্ধার করার সময়কাল 1 মিনিট সেট করা হয়েছে, অর্থাৎperiod: 1m), বর্তমান মুহুর্তের বিপরীতমুখী দ্বিতীয় BAR যেখানে 5 মিনিটের চক্রের সমাপ্তি মূল্য 。 এই দুটি সংজ্ঞা আলাদা এবং প্রয়োজন অনুসারে ব্যবহার করা যেতে পারে।

    • প্যাটার্ন বিবরণ

      • ### সিগন্যাল ফিল্টারিং মডেল

    মডেলের মধ্যে লিখেAUTOFILTERফাংশনটি নিয়ন্ত্রণ করে এবং এক-এক-একটি সংকেত ফিল্টারিং বাস্তবায়ন করে, যখন একাধিক খোলার সংকেত শর্ত পূরণ করে, প্রথম সংকেতটি কার্যকর সংকেত হিসাবে নেওয়া হয় এবং পরবর্তী k লাইনের একই সংকেতটি ফিল্টার করা হবে।

    ফিল্টার মডেল সমর্থিত নির্দেশাবলীঃ বি কে, বিপি, বিপিকে, এসকে, এসপি, এসপিকে, ক্লোজআউট, বি কে সমর্থন করে না ((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)), এবং অকার্যকর নির্দেশাবলী সমর্থন করে না। (১) নির্দেশাবলীর গ্রুপিং সমর্থন করুন। (২) একাধিক নির্দেশের শর্ত একই সাথে পূরণ হলে, শর্তের বিবৃতি অনুসারে লিখিত পূর্ববর্তী ক্রম অনুসারে সংকেত কার্যকর করা হবে। যেমন:

      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-লাইন একটি সংকেত মডেল

    K লাইন শেষ হয় কিনা তা নির্বিশেষে, সংকেতটি রিয়েল-টাইম অর্ডার করা হয়, অর্থাৎ K লাইন শেষ হয় না; 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 লাইন একাধিক সংকেত অর্ডার সমর্থন করে। গড় এবং বিয়োগের মডেল লিখুন।multsigফাংশন, একটি k লাইনের উপর একাধিক গ্যারান্টি, বা একাধিক গ্যারান্টি কমানোর জন্য।

    • ## কার্যকর মোড

    উদ্ভাবক Quantify My Language (Mylang) ডকুমেন্টেশন

    • ### সমাপনী মূল্য মডেল

    ক্লোজিং প্রাইস মডেলটি বর্তমান বার শেষ হওয়ার আগে মডেলটি সম্পাদন করে এবং নিম্নের বার শুরু হওয়ার পরে লেনদেন করে।

    • ### রিয়েল-টাইম দাম মডেল

    রিয়েল-টাইম মূল্য মডেল মানে হল যে প্রতিবার মূল্য পরিবর্তনের জন্য একটি মডেল কার্যকর করা হয়, যখন একটি সংকেত আসে তখনই ট্রেড করা হয়। রিয়েল-টাইম মূল্য মডেল পূর্বের দিনের সংকেত উপেক্ষা করে (যদিও পূর্বের দিনের সংকেতটি তাত্ক্ষণিকভাবে পূর্বের দিনে কার্যকর করা হয়), রিয়েল-টাইম মূল্য মডেল কেবলমাত্র বর্তমান পরিস্থিতির ডেটা দেখে সিদ্ধান্ত নেয় যে সংকেতটি ট্রিগার হয়েছে কিনা।

    • গ্রাফিক প্রদর্শন

      • ### প্রধান মানচিত্রের অতিরিক্ত সূচক

    অপারেটর ব্যবহার করুন^^, পরিবর্তনশীলকে মান প্রদানের সাথে সাথে, সেটিং সূচকটি মূল মানচিত্রে প্রদর্শিত হবে।

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

    উদ্ভাবক Quantify My Language (Mylang) ডকুমেন্টেশন

    • ### উপ-চিত্রের অতিরিক্ত সূচক

    অপারেটর ব্যবহার করুন:, একটি ভেরিয়েবলের মান নির্ধারণের সাথে সাথে, সেটিং সূচকটি উপ-চিত্রটিতে প্রদর্শিত হবে।

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

    উদ্ভাবক Quantify My Language (Mylang) ডকুমেন্টেশন

    যদি আপনি চান যে ছবিটি আপনার মেইন গ্রাফ বা সাবগ্রাফের মধ্যে না থাকে, তাহলে “”… অপারেটরটি ব্যবহার করুন।

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

    উদ্ভাবক Quantify My Language (Mylang) ডকুমেন্টেশন

    ব্যবহার করা যাবেDOTCOLORREDম্যাক ভাষার সাথে পরিচিত ব্যবহারকারীদের অভ্যাসের সাথে সামঞ্জস্য রেখে লাইনের ধরন, রঙ ইত্যাদি সেট করুন।

    • ## FAQ

    সূচক তৈরির ক্ষেত্রে সাধারণভাবে দেখা যায়প্রশ্ন, সাধারণত লেখার সময় যে বিষয়গুলো খেয়াল রাখতে হয় তা হলো ((সতত পরিপূরক) )

    • চিহ্নিত করুন;সমাপ্তি

    • সতর্কতাঃ সিস্টেম কীওয়ার্ডগুলি ভেরিয়েবলের বিবৃতি হিসাবে ব্যবহার করা যাবে না।

    • স্ট্রিং ব্যবহারে সতর্ক থাকুনএকক উদ্ধৃতি,উদাহরণস্বরূপ:'开仓'এই স্ট্রিংটি হলো:

    • মন্তব্য

    মন্তব্য

     - `// 注释内容`(ইংরেজি টাইপ করা যাবে ইনপুট পদ্ধতিতে), যার অর্থ কোডটি এক্সিকিউশন চলাকালীন কম্পাইল করা হয়নি, অর্থাৎ এক্সিকিউশন করা হয়নি`//`কোডের পরে, আমরা সাধারণত কোডের অর্থ চিহ্নিত করতে ব্যবহার করি, যাতে কোডটি পুনর্বিবেচনা করার সময় এটি দ্রুত বুঝতে এবং মনে রাখতে পারে।
    
     - `{ 注释内容 }`টীকা মন্তব্য
    
    
    ```
    A:=MA(C,10);
    {上一行代码是计算均线。}
    ```
    
     - `(* 注释内容 *)`টীকা মন্তব্য
    
    
    ```
    A:=MA(C,10);
    (*上一行代码是计算均线。*)
    ```
    
    • ### ইনপুট পদ্ধতি

    কোড লেখার সময়, প্রায়শই ইনপুট পদ্ধতিতে ইংরেজিতে স্যুইচ করার কারণে চিহ্নের ত্রুটি ঘটে। নিম্নলিখিতগুলি সাধারণঃ:সমাপ্তি;কমা,বন্ধনী()ইত্যাদি, এই চীনা-ইংরেজি ভাষার ভিন্ন অক্ষরগুলোর প্রতি নজর দিতে হবে।

    আপনি যদি সার্চ ডগ, বাইডো বা বিং টাইপ করে থাকেন, আপনি একবারে ক্লিক করেshiftইংরেজি থেকে চীনা ভাষায় দ্রুত পরিবর্তন করুন।

    • ভুল বোঝাবুঝি

      1. কমপক্ষে, সমানভাবে, সমানভাবেঃ সম্পর্কিত অপারেটর>=
      2. সর্বাধিক, সর্বাধিক, অতিক্রম নাঃ সম্পর্কিত অপারেটর<=
    • সমন্বয় শুরু করুন

    ফরওয়ার্ড কৌশলতে, যদি কৌশল রোবট চালু হওয়ার আগে, ম্যানুয়ালি পজিশন খোলা থাকে, তবে রোবট চালু হওয়ার সময়, পজিশন হোল্ডিংয়ের তথ্য সনাক্ত করা হবে, যা প্রকৃত পজিশন হোল্ডিংয়ের সাথে সিঙ্ক করা হবে। এবং এটি ব্যবহার করা যেতে পারে কৌশলগতভাবে।SPBPCLOSEOUTস্থগিত করার নির্দেশ।

      %%
      if (!scope.init) {
          var ticker = exchange.GetTicker();
          exchange.Buy(ticker.Sell+10, 1);
          scope.init = true;
      }
      %%
      C>0, CLOSEOUT;
    
    • ### দ্বিপাক্ষিক অবস্থান সমর্থন করে না

    ম্যাক ভাষা একই চুক্তি সমর্থন করে না এবং একই সময়ে অনেক খালি পজিশন রয়েছে।

  • K লাইন তথ্য উদ্ধৃতি

    • ## OPEN

    K-রেখাচিত্রের ওপেনিং মূল্য

    খোলার মূল্য

    ফাংশনঃ OPEN, সংক্ষিপ্ত 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简写)。
    
    • ## HIGH

    K-রেখাচিত্রের জন্য সর্বোচ্চ মূল্য

    সর্বোচ্চ মূল্য

    ফাংশনঃ HIGH, সংক্ষিপ্ত H

    প্যারামিটারঃ না

    ব্যাখ্যাঃ “চক্রের সর্বোচ্চ মূল্য”

    ক্রমিক তথ্য

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

    K-রেখাচিত্রের সর্বনিম্ন মূল্য

    সর্বনিম্ন মূল্য

    ফাংশনঃ LOW, সংক্ষিপ্ত L

    প্যারামিটারঃ না

    ব্যাখ্যাঃ “চক্রের সর্বনিম্ন মূল্য”

    ক্রমিক তথ্য

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

    K-রেখার মানচিত্রের সমাপ্তি মূল্য

    সমাপ্তি মূল্য

    ফাংশনঃ CLOSE, সংক্ষিপ্ত C

    প্যারামিটারঃ না

    ব্যাখ্যাঃ “চক্রের” সমাপ্তির মূল্য ফেরত

    ক্রমিক তথ্য

    ”` CLOSE取得K线图的收盘价

    注: 1、当盘中k线没有走完的时候,取得最新价。 2、可简写为C。

    例1: