MyLanguage Doc

Penulis:Mimpi kecil, Dibuat: 2022-06-30 18:24:06, Diperbarui: 2024-02-06 17:36:19

[TOC]

img

MyLanguage adalah bahasa perdagangan programmatic yang kompatibel dan ditingkatkan dengan MyLanguage. MyLanguage dari FMZ Quant akan menjalani pemeriksaan sintaksis yang ketat.%%operator akan menyebabkan kesalahan dilaporkan.

  • Instruksi dasar

    • Kontrak

      Kontrak cryptocurrency

      Kontrak cryptocurrency

      this_week     cryptocurrency futures contract this week
      next_week     cryptocurrency futures contract next week
      month         cryptocurrency futures contract month
      quarter       cryptocurrency futures contract quarter
      next_quarter  cryptocurrency futures contract next quarter
      third_quarter cryptocurrency futures contract third quarter
      last_quarter  contract last quarter
      
      XBTUSD        BITMEX perpetual contract
      swap          cryptocurrency futures perpetual contracts other than BITMEX exchange
      
      For details, please refer to the exchange.SetContractType() function section of the JavaScript/Python/C++ documentation
      

      img

    • Variabel

      Variabel adalah ruang yang terbuka di memori komputer untuk menyimpan data.

      Buka variabel pertama

      // assign 1 to variable a
      a:=1;
      

      Di dalamMyLanguage, mudah dibedakan daridata volume:

      1. Data dengan nilai tunggal: Hanya ada satu nilai, seperti:0, 1, 'abc'.
      2. Data urutan: urutan data yang terdiri dari sekelompok data dengan nilai tunggal, sepertiClose(harga penutupan), dimanaCloseberisi harga penutupan darin periods. [ 10.1 , 10.2 , 10.3 , 10.4 , 10.5 ...]

      Membedakan dari tipe variabel

      1. Tipe string: harus dibungkus dengan ````, jenis string tidak diizinkan untuk digunakan secara langsung, dan harus keluar ke tampilan dengan fungsi.
      INFO(CLSOE>OPEN,'OK!');
      
      1. Tipe nilai: termasuk bilangan bulat, angka tanda mengapung (desimal).
      // integer
      int:=2;
      
      // decimal
      float:=3.1;
      
      1. Tipe Boolean, menggunakan 1 (untuk benar) atau 0 (untuk salah): 1, 0, benar atau salah. Misalnya:A:=1>0;Setelah kode ini dijalankan, nilai dariAadalah 1.
      // The closing price of the current period is greater than -999, you will find that the return value of each period is 1, which means true, because the closing price is almost impossible to be negative.
      is_true:=Close>-999;
      
      1. Variabel global
      VARIABLE:VALUE1:10;     // Declare a global variable, assign the value 10, and execute it only once.
      

      Perhatikan bahwa ketika backtesting:

      VARIABLE:NX:0;    // The initial global variable NX is 0
      NX..NX+1;         // Accumulate 1 each time
      INFO(1,NX);       // Print NX every time
      

      Awalnya,INFOcetakan pernyataan101, mungkin tidak0Pada awalnya? Alasannya adalah bahwa ada 100 garis K awal dalam backtest, dan 100 garis K telah berjalan melalui, yang telah terkumpul 100 kali. Harga sebenarnya tergantung pada berapa banyak K-line yang awalnya diperoleh.

      • Aturan penamaan

        Dalam sebagian besar sistem, penamaan variabel tidak memungkinkan penggunaan sistem kata-kata yang disediakan (nama variabel bawaan, nama fungsi).Close, CSelain itu, bilangan murni atau bilangan utama tidak diizinkan. Akhirnya, tidak diizinkan untuk sangat panjang, dan sistem yang berbeda memiliki batasan panjang yang berbeda. Pada kenyataannya, Anda tidak perlu khawatir tentang efisiensi sistem mainstream yang menganalisis bahasa Cina. Saya percaya bahwa MyLanguage sangat ramah untuk bahasa Cina. Untuk programmer berpengalaman, disarankan Anda menggunakan dua aturan penamaan berikut:

        1. Nama Cina
        // elegant output
        5-day moving average:=MA(C,5);
        
        1. Bahasa Inggris + digariskan
        // Output
        move_avg_5:=MA(C,5);
        

        Jika Anda lebih suka bahasa Inggris, cobalah untuk membuat arti variabel Anda semudah mungkin.A1, AAA, BBB... Percayalah ketika Anda meninjau kode indikator Anda lagi dalam beberapa hari, Anda akan sangat sengsara karena kehilangan memori.

        Jadi mulai sekarang, gunakan MyLanguage sepenuhnya! Saya berharap itu bisa menjadi alat yang ampuh untuk analisis dan pengambilan keputusan Anda.

    • Jenis Data

      Jenis data adalah konsep dasar. ketika kita menetapkan data yang jelas untuk variabel secara tertulis, variabel juga menjadi jenis data itu sendiri.

        1. Jenis Nilai:
        1.2.3.1.1234.2.23456 ...
        
        1. Tipe string:
        '1' .'2' .'3' ,String types must be wrapped with ''
        
        1. Data urutan:
        A collection of data consisting of a series of single-valued data
        
        1. Tipe Boolean (Boolean):

        Penggunaan1mewakilitruedan0untukfalse.

        Contoh

        // declare a variable of value type
        var_int := 1;
        // Declare a variable for sequence data
        var_arr := Close;
        // The string type cannot be declared alone, it needs to be combined with the function
        INFO(C>O, 'positive line');
        
    • Operator

      Operasi dan perhitungan yang digunakan untuk menjalankan kode indikator hanyalah simbol yang terlibat dalam operasi.

      • Operator penugasan

        untuk menugaskan nilai ke variabel

          1. :

          :, mewakili penugasan dan output ke grafik (subgraph).

          Close1:Close;      // Assign Close to the variable Close1 and output to the figure
          
          1. :=

          :=, mewakili penugasan, tetapi tidak output ke grafik (grafik utama, subgrafik...), juga tidak ditampilkan dalam tabel bar status.

          Close2:=Close;     // Assign Close to the variable Close2
          
          1. ^^

          ^^Dua.^simbol mewakili penugasan, menetapkan nilai untuk variabel dan output ke grafik (grafik utama).

          lastPrice^^C;
          
          1. ..

          .., dua.simbol mewakili penugasan, menetapkan nilai untuk variabel dan menampilkan nama variabel dan nilai dalam grafik, tetapi tidak menggambar gambar ke grafik (gambar utama, sub-gambar...).

          openPrice..O
          
      • Operator relasional

        Operator relasional adalah operator biner yang digunakan dalam ekspresi bersyarat untuk menentukan hubungan antara dua data.

        Nilai pengembalian: Tipe Boolean, baiktrue(1) ataufalse(0).

          1. lebih dari>
          // Assign the operation result of 2>1 to the rv1 variable, at this time rv1=1
          rv1:=2>1;
          
          1. kurang dari<
          // Returns false, which is 0, because 2 is greater than 1
          rv3:=2<1;
          
          1. lebih dari atau sama dengan>=
          x:=Close;
          // Assign the result of the operation that the closing price is more than or equal to 10 to the variable rv2
          // Remark that since close is a sequence of data, when close>=10 is performed, the operation is performed in each period, so each period will have a return value of 1 and 0
          rv2:=Close>=10;
          
          1. kurang dari atau sama dengan<=
          omitted here
          
          1. sama dengan=
          A:=O=C;     // Determine whether the opening price is equal to the closing price.
          
          1. Tidak sama dengan<>
          1<>2       // To determine whether 1 is not equal to 2, the return value is 1 (true)
          
      • Operator Logis

        Nilai pengembalian: Tipe Boolean, baiktrue(1) ataufalse(0).

        1. Logis dan&&, dapat diganti denganand, dan sisi kiri dan kanan dari dan koneksi harus dibuat pada saat yang sama.
        // Determine whether cond_a, cond_b, cond_c are established at the same time
        cond_a:=2>1;
        cond_b:=4>3;
        cond_c:=6>5;
        cond_a && cond_b and cond_c;    // The return value is 1, established
        
        1. Logis atau||, Anda dapat menggunakanoruntuk mengganti sisi kiri dan kanan dari atau link, satu sisi adalah benar (benar), keseluruhan adalah benar (mengembalikan nilai benar).
        cond_a:=1>2;
        cond_b:=4>3;
        cond_c:=5>6;
        cond_a || cond_b or cond_c;    // The return value is 1, established
        
        1. ()operator, ungkapan dalam tanda kurung akan dievaluasi terlebih dahulu.
        1>2 AND (2>3 OR 3<5)    // The result of the operation is false
        1>2 AND 2>3 OR 3<5      // The result of the operation is true
        
      • Operator aritmatika

        Return value: numeric type
        

        Operator aritmatika adalah simbol untuk menyelesaikan operasi aritmatika dasar (operator aritmatika), yang merupakan simbol yang digunakan untuk memproses empat operasi aritmatika.

        • ditambah +

          A:=1+1;      // return 2
          
        • minus -

          A:=2-1;      // return 1
          
        • *perkalian *

          A:=2*2;      // return 4
          
        • membagi /

          A:=4/2;      // return 2
          
    • Fungsi

      • Fungsi

        Dalam dunia pemrograman, function adalah sepotong kode yang mengimplementasikan fungsi tertentu.

        function(param1,param2,...)
        
        • Komposisi:

          Nama fungsi (parameter1, parameter2,...), mungkin tidak memiliki parameter atau memiliki beberapa parameter.MA(x,n);berarti untuk kembali ke rata-rata bergerak sederhana darixDalamndi antaranya,MA()adalah fungsi,xdannadalah parameter fungsi.

          Ketika menggunakan fungsi, kita perlu memahami definisi dasar fungsi, yaitu, data apa yang dapat diperoleh dengan memanggil fungsi. Secara umum, fungsi memiliki parameter. Ketika kita melewati parameter, kita perlu memastikan bahwa jenis data yang masuk konsisten. Pada tahap ini, fungsi petunjuk kode dari sebagian besar IDE sangat tidak sempurna. Ada jenis data parameter yang diberikan, yang membawa beberapa kesulitan untuk penggunaan kita, danMA(x,n);ditafsirkan sebagai:

          Return to simple moving average
          Usage:
          AVG:=MA(X,N): N-day simple moving average of X, algorithm (X1+X2+X3+...+Xn)/N, N supports variables
          

          Ini sangat tidak ramah untuk pemula, tapi selanjutnya, kita akan membedah fungsi secara menyeluruh, mencoba untuk menemukan cara cepat untuk belajar dan menggunakan fungsi.

      • Nilai kembali

        Untuk mempelajari fungsi dengan cepat, kita perlu memahami konsep pertama, itu disebut return value, Kembali, seperti namanya, berarti kembali kembali; Nilai mewakili nilai tertentu, maka arti dari nilai kembali adalah: data yang dapat diperoleh.

        // Because it will be used in the following code, the variable return_value is used to receive and save the return value of function()
        // retrun_value := function(param1,param2);
        // For example:
        AVG:=MA(C,10);     // AVG is retrun_value, function is MA function, param1 parameter: C is the closing price sequence data, param2 parameter: 10.
        
      • Parameter

        Kedua, konsep penting kedua dari fungsi adalah parameter, dan nilai pengembalian yang berbeda dapat diperoleh dengan melewati parameter yang berbeda.

        // The variable ma5 receives the 5-day moving average of closing prices
        ma5:=MA(C,5);
        // The variable ma10 receives the 10-day moving average of closing prices
        ma10:=MA(C,10);
        

        Parameter pertamaXdari variabel di atasma5, ma10adalahC(harga penutupan), sebenarnya,Cadalah juga fungsi (memberi kembali urutan harga penutupan dari pembukaan untuk saat ini), tetapi tidak memiliki parameter.MA()Fungsi ini menjadi lebih fleksibel untuk digunakan melalui parameter.

      • Cara belajar

          1. Pertama, kita perlu memahami apa fungsi, yaitu, apa data fungsi ini dapat kembali kepada kita.
          1. Hal terakhir adalah memahami jenis nilai yang dikembalikan. setelah semua, kita menggunakan fungsi untuk mendapatkan nilai yang dikembalikan.
          1. Selain itu, kita perlu tahu jenis data dari parameterMA(x,n), jika Anda tidak tahu jenis data parameterx, n, itu tidak akan bisa mendapatkan nilai kembali dengan benar.

        Dalam pengenalan dan penggunaan fungsi berikut, ikuti tiga prinsip di atas.

    • Peningkatan bahasa

      • MyLanguagedanJavaScriptpemrograman bahasa campuran

        %%
        // This can call any API quantified of FMZ
        scope.TEST = function(obj) {
            return obj.val * 100;
        }
        %%
        Closing price: C;
        Closing price magnified 100 times: TEST(C);
        The last closing price is magnified by 100 times: TEST(REF(C, 1)); // When the mouse moves to the K-line of the backtest, the variable value will be prompted
        
        • scopeobjek

          Peraturanscopeobject dapat menambahkan atribut dan menetapkan fungsi anonim untuk atribut, dan fungsi anonim yang dirujuk oleh atribut ini dapat dipanggil dalam bagian kode MyLanguage.

        • scope.getRefs(obj)fungsi

          Di dalamJavaScriptBlok kode, hubungiscope.getRefs(obj)fungsi untuk mengembalikan data yang dilewati diobj object.

          PeraturanJavaScriptkode yang dibungkus dengan:%% %%akan mendapatkanCdiumumkan pada saatTEST(C)Fungsi dalam kode MyLanguage disebut Close price. Peraturanscope.getRefsFungsi ini akan mengembalikan semua harga penutupan dari data K-line ini.throw "stop"untuk mengganggu program, variabelarrberisi harga penutupan bar pertama saja.throw "stop", itu akan melaksanakanreturndi akhirJavaScriptkode, dan mengembalikan semua data harga penutupan.

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

          Akses semua K-line bar diJavaScriptblok kode.

          PeraturanTEST1 adalah garis negatif dan 0 adalah garis positif.

          %%
          scope.TEST = function(){
              var bars = scope.bars
              return bars[bars.length - 1].Open > bars[bars.length - 1].Close ? 1 : 0    // Only numeric values can be returned
          }
          %%
          arr:TEST;                                                                      
          
          # Attention:
          # An anonymous function received by TEST, the return value must be a numeric value.
          # If the anonymous function has no parameters, it will result in an error when calling TEST, writing VAR:=TEST; and writing VAR:=TEST(); directly.
          # TEST in scope.TEST must be uppercase.
          
        • scope.bar

          DalamJavaScriptBlok kode, akses bar saat ini.

          Hitung rata-rata harga pembukaan tinggi dan harga penutupan rendah.

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

          Akses ke data kedalaman pasar (buku pesanan).

          %%
          scope.TEST = function(){
              Log(scope.depth)
              throw "stop"             // After printing the depth data once, throw an exception and pause
          }
          %%
          TEST;
          
        • scope.symbol

          Dapatkan string nama dari pasangan perdagangan saat ini.

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

          Dapatkan posisi Bar dari K-line.

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

          Fungsi ini digunakan untuk mendapatkan variabel di bagian kode MyLanguage.

          V:10;
          %%
          scope.TEST = function(obj){
              return scope.get_locals('V')
          }
          %%
          GET_V:TEST(C);
          
          # Attention:
          # If a variable cannot calculate the data due to insufficient periods, call the scope.get_locals function in the JavaScript code at this time
          # When getting this variable, an error will be reported: line:XX - undefined locals A variable name is undefined
          
        • scope.canTrade

          PeraturancanTradetanda atribut apakah bar saat ini dapat diperdagangkan (apakah Bar saat ini adalah yang terakhir)

          Misalnya, menilai bahwa data pasar dicetak ketika strategi berada dalam keadaan di mana pesanan dapat diperdagangkan

          %%
          scope.LOGTICKER = function() {
              if(exchange.IO("status") && scope.canTrade){
                  var ticker = exchange.GetTicker();
                  if(ticker){
                      Log("ticker:", ticker);
                      return ticker.Last;
                  }
              }
          }
          %%
          LASTPRICE..LOGTICKER;
          
      • Contoh aplikasi:

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

        Hentikan strategi setelah membuka dan menutup posisi sekali.

    • Referensi multi-periode

      Sistem akan memilih periode K-line yang sesuai secara otomatis, dan menggunakan data periode K-line yang mendasari ini untuk mensintesis semua data K-line yang dirujuk untuk memastikan keakuratan data.

      • Penggunaan:#EXPORT formula_name ... #ENDJika rumus tidak dihitung hanya untuk mendapatkan data dari periode yang berbeda, Anda juga dapat menulis rumus kosong.

        Rumus kosong adalah:

        #EXPORT TEST 
        NOP;
        #END           // end
        
      • Penggunaan:#IMPORT [MIN,period,formula name] AS variable valueDapatkan berbagai data periode yang ditetapkan (harga penutupan, harga pembukaan, dll., diperoleh dengan nilai variabel).

        PeraturanMINdalamIMPORTperintah berartitingkat menit.MyLanguage dari platform FMZ Quant, dan hanyaMINtingkat yang didukung diIMPORTPerintah. Periode non-standar sekarang didukung.#IMPORT [MIN, 240, TEST] AS VAR240untuk mengimpor data seperti K-line periode 240 menit (4 jam).

        Contoh kode:

        // This code demonstrates how to reference formulas of different periods in the same code
        // #EXPORT extended grammar, ending with #END marked as a formula, you can declare multiple
        #EXPORT TEST 
        Mean value 1: EMA(C, 20);
        Mean value 2: EMA(C, 10);
        #END // end
        
        #IMPORT [MIN,15,TEST] AS VAR15 // Quoting the formula, the K-line period takes 15 minutes
        #IMPORT [MIN,30,TEST] AS VAR30 // Quoting the formula, the K-line period takes 30 minutes
        CROSSUP(VAR15.Mean value is 1, VAR30.Mean value is 1),BPK;
        CROSSDOWN(VAR15.Mean value is 2, VAR30.Mean value is 2),SPK;
        The highest price in fifteen minutes:VAR15.HIGH;
        The highest price in thirty minutes:VAR30.HIGH;
        AUTOFILTER;
        
      • Penting untuk berhati-hati saat menggunakanREF, LLV, HHVdan instruksi lain untuk mereferensikan data ketika mereferensikan data dalam beberapa periode.

        (*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 // end      
        
        #IMPORT [MIN,5,TEST] AS MIN5
        INFO(1, 'C:', C, 'MIN5.REF1C:', MIN5.REF1C, 'REF(MIN5.C, 1):', REF(MIN5.C, 1), 'Trigger BAR time:', BARTIME, '#FF0000');
        INFO(1, 'L:', L, 'MIN5.REF1L:', MIN5.REF1L, 'REF(MIN5.L, 1):', REF(MIN5.L, 1), 'Trigger BAR time:', BARTIME, '#32CD32');
        AUTOFILTER;
        

        Membandingkan perbedaan antaraMIN5.REF1CdanREF(MIN5.C, 1),kita bisa menemukan:MIN5.REF1Cadalah nilai harga penutupan BAR penutupan terakhir pada saat data K-line 5 menit.REF(MIN5.C, 1)adalah periode K-line dari model saat ini (periode backtest kode di atas ditetapkan menjadi 1 menit, yaitu ```period: 1m``), harga penutupan periode 5 menit di mana BAR penutupan berada pada saat ini. Kedua definisi ini dibedakan, dan dapat digunakan sesuai kebutuhan.

    • Deskripsi Mode

      • Model penyaringan sinyal dengan satu bukaan dan satu leveling

        Dalam model,AUTOFILTERFungsi ini ditulis untuk mengontrol dan mewujudkan penyaringan sinyal dari satu pembukaan dan satu penutupan. Ketika ada beberapa sinyal pembukaan yang memenuhi kondisi, sinyal pertama diambil sebagai sinyal yang valid, dan sinyal yang sama pada garis K akan disaring.

        Instruksi yang didukung oleh model penyaringan: BK, BP, BPK, SK, SP, SPK, CLOSEOUT, dll. Instruksi dengan nomor lot seperti BK ((5) tidak didukung.

        Misalnya

        MA1:MA(CLOSE,5);
        MA2:MA(CLOSE,10);
        CROSSUP(C,MA1),BK;
        CROSSUP(MA1,MA2),BK;
        C>BKPRICE+10||C<BKPRICE-5,SP;
        AUTOFILTER;
        
        Comprehension:
        As in the above example, when AUTOFILTER is not set, the third row BK, the fourth row BK and the fifth row SP are triggered in sequence, and each K-line triggers a signal once. After opening the position, and closing the position, the model state is reset.      
        If AUTOFILTER is set, after triggering BK, only SP is triggered, other BK signals are ignored, and each K-line triggers a signal once.
        
      • Model posisi peningkatan dan penurunan

        PeraturanAUTOFILTERfungsi tidak ditulis dalam model, memungkinkan sinyal pembukaan terus menerus atau sinyal penutupan terus menerus, yang dapat meningkatkan dan mengurangi posisi.

        Instruksi yang didukung: BK(N), BP(N), SK(N), SP(N), CLOSEOUT, BPK(N), SPK(N), perintah buka dan tutup tanpa ukuran lot tidak didukung. (1) Pengelompokan instruksi didukung. (2) Ketika beberapa kondisi instruksi terpenuhi pada saat yang sama, sinyal dieksekusi dalam urutan di mana pernyataan bersyarat ditulis. Misalnya:

        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);
        

        PenggunaanTRADE\_AGAINHal ini mungkin untuk membuat baris perintah yang sama, beberapa sinyal berturut-turut.

        Comprehension:
        The above example is executed one by one, and the signal after execution is no longer triggered. Reset the model status after closing the position. A K -line triggers a signal once.
        
      • Model dengan satu garis K dan satu sinyal

        Terlepas dari apakah garis K selesai, sinyal dihitung dalam urutan real-time, yaitu, garis K ditempatkan sebelum pesanan selesai; garis K ditinjau di akhir.

        Misalnya:

        MA1:MA(CLOSE,5);
        MA2:MA(CLOSE,10);
        CROSSUP(MA1,MA2),BPK;    //The 5-period moving average crosses up, and the 10-period moving average goes long.
        CROSSDOWN(MA1,MA2),SPK;  //The 5-period moving average crosses down, and the 10-period moving average goes short.
        AUTOFILTER;
        
      • Sebuah model dari beberapa sinyal pada satu K-line

        Model ini menggunakanmultsiguntuk mengontrol dan menerapkan beberapa sinyal dari satu K-line.

        Terlepas dari apakah garis K selesai, sinyal dihitung secara real-time.

        Sinyal tidak ditinjau, tidak ada hilangnya sinyal, dan arah sinyal selalu konsisten dengan arah posisi.

        Jika beberapa kondisi sinyal terpenuhi dalam satu K-line, dapat dieksekusi berulang kali.

        For example:
        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);
        

        MULTSIGdapat menjalankan beberapa baris perintah dalam satu K-line. Sebuah baris perintah hanya ditandai sekali.

        O<C,BK;            // These conditions may all be executed in a K-line Bar, but only one signal per line
        10+O<C,BK;         // Strategy plus TRADE_AGAIN(10);it can make multiple signals per line
        20+O<C,BK;
        40+O<C,BK;
        MULTSIG(1,1,10);
        

        Suplemen: 1.Model penjumlahan dan pengurangan posisi, dua cara satu sinyal dan satu K-line: menempatkan order pada harga penutupan dan menempatkan order pada harga order, keduanya didukung. 2.Model penjumlahan dan pengurangan posisi juga mendukung pemesanan beberapa sinyal dari satu K-line. Model penjumlahan dan pengurangan posisi, tulismultsigfungsi untuk mewujudkan beberapa penambahan atau beberapa pengurangan pada satu K-line.

    • Mode pelaksanaan

      img

      • Model batang

        Model Bar mengacu pada model yang dieksekusi setelah BAR saat ini selesai, dan perdagangan dieksekusi ketika BAR berikutnya dimulai.

      • Model Tick

        Model Tick berarti bahwa model dieksekusi sekali untuk setiap pergerakan harga dan diperdagangkan segera ketika ada sinyal. Model Tick mengabaikan sinyal hari sebelumnya (sinyal hari sebelumnya dieksekusi segera pada hari yang sama), dan model Tick hanya berfokus pada data pasar saat ini untuk menentukan apakah sinyal dipicu.

    • Tampilan grafik

      • Indikator tambahan untuk bagan utama

        Gunakan operator^^, indikator yang ditetapkan ditampilkan pada grafik utama saat menetapkan nilai untuk variabel.

        MA60^^MA(C, 60);  // Calculate the average indicator with the parameter of 60
        

        img

      • Indikator tambahan untuk sub-grafik

        Gunakan operator:, indikator yang ditetapkan ditampilkan pada sub-chart sambil menetapkan nilai untuk variabel.

        ATR:MA(MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)),26);    // Assign a value to the ATR variable, the ":" symbol is followed by the formula for calculating the ATR
        

        img

        Jika Anda tidak ingin ditampilkan pada grafik utama atau subchart, gunakan operator ....

        MA60..MA(C, 60);  // Calculate the average indicator with the parameter of 60
        

        Kau bisa menggunakanDOTdanCOLORREDuntuk mengatur jenis baris dan warna baris, dll, sesuai dengan kebiasaan pengguna yang akrab dengan MyLanguage.

    • Masalah umum

      Memperkenalkanmasalahsering ditemui dalam proses penulisan indikator, biasanya poin yang perlu diperhatikan saat menulis (terus ditambahkan).

      • Perhatikan titik koma;di akhir.

      • Perhatikan bahwa kata kunci sistem tidak dapat dinyatakan sebagai variabel.

      • Perhatikan bahwa string menggunakankutipan tunggal, misalnya: string'Open position'.

      • Pernyataan

        Anotasi

        • // The Remark content(metode input dapat diketik dalam bahasa Cina dan Inggris) berarti bahwa kode tidak dikompilasi selama proses eksekusi, yaitu konten setelah//Biasanya kita menggunakannya untuk menandai makna kode, ketika nyaman untuk review kode, itu dapat dengan cepat dipahami dan diingat.

        • { Remark content }Catatan blok.

          A:=MA(C,10);
          {The previous line of code is to calculate the moving average.}
          
        • (* Remark content *)Catatan blok.

          A:=MA(C,10);
          (*The previous line of code is to calculate the moving average.*)
          
      • Input

        Ketika menulis kode, karena metode input sering beralih antara bahasa Cina dan bahasa Inggris, yang mengakibatkan kesalahan simbol.:, Terminator;, koma,, tanda kurung(), dll. Karakter-karakter ini dalam keadaan yang berbeda dari bahasa Cina dan bahasa Inggris membutuhkan perhatian.

        Jika Anda menggunakan metode input Sogou, Baidu, atau Bing, Anda dapat dengan cepat beralih antara Cina dan Inggris dengan menekan tombolshiftKunci sekali.

      • Logika yang rentan terhadap kesalahan

        1. Setidaknya, tidak kurang dari, tidak kurang dari: operator relasional yang sesuai>=.
        2. Sampai, tidak lebih dari: operator relasional yang sesuai<=.
      • Sinkronisasi peluncuran strategi

        Dalam strategi berjangka, jika ada posisi terbuka secara manual sebelum robot strategi memulai, ketika robot memulai, ia akan mendeteksi informasi posisi dan menyinkronkannya dengan status posisi aktual. Dalam strategi, Anda dapat menggunakanSP, BP, CLOSEOUTperintah untuk menutup posisi.

        %%
        if (!scope.init) {
            var ticker = exchange.GetTicker();
            exchange.Buy(ticker.Sell+10, 1);
            scope.init = true;
        }
        %%
        C>0, CLOSEOUT;
        
      • Posisi dua arah tidak didukung

        MyLanguage tidak mendukung kontrak yang sama dengan posisi panjang dan pendek.

  • Kutipan data K-line

    • Terbuka

      Dapatkan harga pembukaan grafik garis K.

      Harga pembukaan

      Fungsi: OPEN, singkatan dari O

      Parameter: tidak ada

      Penjelasan: Mengembalikan harga pembukaan periode ini

      Data urutan

      OPEN gets the opening price of the K-line chart.
      
      Remark:
      1.It can be abbreviated as O.
      
      Example 1:
      OO:=O;           //Define OO as the opening price; Remark that the difference between O and 0.
      Example 2:
      NN:=BARSLAST(DATE<>REF(DATE,1));
      OO:=REF(O,NN);   //Take the opening price of the day
      Example 3:
      MA5:=MA(O,5);    //Define the 5-period moving average of the opening price (O is short for OPEN).
      
    • Tinggi

      Dapatkan harga tertinggi pada grafik K-line.

      Harga tertinggi

      Fungsi: HIGH, disingkat H

      Parameter: tidak ada

      Penjelasan: Kembalikan harga tertinggi dari periode ini

      Data urutan

      HIGH achieved the highest price on the K-line chart.
      
      Remark:
      1.It can be abbreviated as H.
      
      Example 1:
      HH:=H;         // Define HH as the highest price
      Example 2:
      HH:=HHV(H,5);  // Take the maximum value of the highest price in 5 periods
      Example 3:
      REF(H,1);      // Take the highest price of the previous K-line
      
    • Rendah

      Dapatkan harga terendah di grafik K-line.

      Harga terendah

      Fungsi: LOW, disingkat L

      Parameter: tidak ada

      Penjelasan: Kembalikan harga terendah dari periode ini

      Data urutan

      LOW gets the lowest price on the K-line chart.
      
      Remark:
      1.It can be abbreviated as L.
      
      Example 1:
      LL:=L;            // Define LL as the lowest price
      Example 2:
      LL:=LLV(L,5);     // Get the minimum value of the lowest price in 5 periods
      Example 3:
      REF(L,1);         // Get the lowest price of the previous K-line
      
    • Dekat

      Dapatkan harga penutupan grafik K-line.

      Harga penutupan

      Fungsi: CLOSE, disingkat sebagai C

      Parameter: tidak ada

      Penjelasan: Mengembalikan harga penutupan periode ini

      Data urutan

      CLOSE Get the closing price of the K-line chart
      
      Remarks:
      1.Obtain the latest price when the intraday K-line has not finished.
      2.It can be abbreviated as C.
      
      Example 1:
      A:=CLOSE;          //Define the variable A as the closing price (A is the latest price when the intraday K-line has not finished)
      Example 2:
      MA5:=MA(C,5);      //Define the 5-period moving average of the closing price (C is short for CLOSE)
      Example 3:
      A:=REF(C,1);       //Get the closing price of the previous K-line
      
    • VOL

      Dapatkan volume perdagangan grafik garis K.

      Volume perdagangan

      Fungsi: VOL, disingkat sebagai V

      Parameter: tidak ada

      Penjelasan: Mengembalikan volume perdagangan periode ini

      Data urutan

      VOL obtains the trading volume of the K-line chart.
      
      Remarks:
       It can be abbreviated as V.
      The return value of this function on the current TICK is the cumulative value of all TICK trading volume on that day.
      
      Example 1:
      VV:=V;       // Define VV as the trading volume
      Example 2:
      REF(V,1);    // Indicates the trading volume of the previous period
      Example 3:
      V>=REF(V,1); // The trading volume is greater than the trading volume of the previous period, indicating that the trading volume has increased (V is the abbreviation of VOL)
      
    • OPI

      Ambil total posisi saat ini di pasar berjangka (kontrak).

      OpenInterest:OPI;
      
    • REF

      Setuju.

      Reference the value of X before N periods.
      
      Remarks:
      1.When N is a valid value, but the current number of K-lines is less than N, returns null;
      2.Return the current X value when N is 0;
      3.Return a null value when N is null.
      4.N can be a variable.
      
      Example 1:
      REF(CLOSE,5);Indicate the closing price of the 5th period before the current period is referenced
      Example 2:
      AA:=IFELSE(BARSBK>=1,REF(C,BARSBK),C);//Take the closing price of the K-line of the latest position opening signal
      // 1)When the BK signal is sent, the bar BARSBK returns null, then the current K-line REF(C, BARSBK) that sends out the BK signal returns null;
      // 2)When the BK signal is sent out, the K-line BARSBK returns null, and if BARSBK>=1 is not satisfied, it is the closing price of the K-line.
      // 3)The K-line BARSBK after the BK signal is sent, returns the number of periods from the current K-line between the K-line for purchasing and opening a position, REF(C,BARSBK)
      Return the closing price of the opening K-line.
      // 4)Example: three K-lines: 1, 2, and 3, 1 K-line is the current K-line of the position opening signal, then returns the closing price of the current K-line, 2, 3
      The K-line returns the closing price of the 1 K-line.
      
    • Unit

      Dapatkan unit perdagangan kontrak data.

      Get the trading unit of the data contract.
      Usage:
      UNIT takes the trading unit of the loaded data contract.
      

      Cryptocurrency spot

      Nilai UNIT adalah 1.

      Futures Cryptocurrency

      Nilai UNIT terkait dengan mata uang kontrak.

      OKEX futures currency standard contracts: 1 contract for BTC represents $100, 1 contract for other currencies represents $10
      
    • Harga Min

      Harga variasi minimum dari kontrak data.

      Take the minimum variation price of the data contract.
      Usage:
      MINPRICE; Take the minimum variation price of the loaded data contract.
      
    • MINPRICE1

      Harga variasi minimum dari kontrak perdagangan.

      Take the minimum variation price of a trading contract.
      Usage:
      MINPRICE1; Take the minimum variation price of a trading contract.
      
  • Fungsi waktu

    • BARPOS

      Ambil posisi garis K.

      BARPOS, Returns the number of periods from the first K-line to the current one.
      
      Remarks:
      1.BARPOS returns the number of locally available K-line, counting from the data that exists on the local machine.
      2.The return value of the first K-line existing in this machine is 1.
      
      Example 1:LLV(L,BARPOS);        // Find the minimum value of locally available data.
      
      Example 2:IFELSE(BARPOS=1,H,0); // The current K-line is the first K-line that already exists in this machine, and it takes the highest value, otherwise it takes 0.
      
    • Daybarpos

      DAYBARPOS K-line BAR saat ini adalah K-line BAR hari ini.

    • Periode

      Nilai periode adalah jumlah menit.

      1, 3, 5, 15, 30, 60, 1440
      
    • Tanggal

      TanggalFungsi DATE, Dapatkan tahun, bulan, dan hari periode sejak 1900.

      Example 1:
      AA..DATE;                  // The value of AA at the time of testing is 220218, which means February 18, 2022
      
    • Waktu

      Waktu untuk mengambil K-line.

      TIME, the time of taking the K-line.
      
      Remarks:
      1.The function returns in real time in the intraday, and returns the starting time of the K-line after the K-line is completed.
      2.This function returns the exchange data reception time, which is the exchange time.
      3.The TIME function returns a six-digit form when used on a second period, namely: HHMMSS, and displays a four-digit form on other periods, namely: HHMM.
      4.The TIME function can only be loaded in periods less than the daily period, and the return value of the function is always 1500 in the daily period and periods above the daily period.
      5. It requires attention when use the TIME function to close a position at the end of the day
      (1).It is recommended to set the time for closing positions at the end of the market to the time that can actually be obtained from the return value of the K-line (for example: the return time of the last K-line in the 5-minute period of the thread index is 1455, and the closing time at the end of the market is set to TIME>=1458, CLOSEOUT; the signal of closing the position at the end of the market cannot appear in the effect test)
      (2).If the TIME function is used as the condition for closing the position at the end of the day, it is recommended that the opening conditions should also have a corresponding time limit (for example, if the condition for closing the position at the end of the day is set to TIME>=1458, CLOSEOUT; then the condition TIME needs to be added to the corresponding opening conditions. <1458; avoid re-opening after closing)
      
      Example 1:
      C>O&&TIME<1450,BK;
      C<O&&TIME<1450,SK;
      TIME>=1450,SP;
      TIME>=1450,BP;
      AUTOFILTER;
      // Close the position after 14:50.
      Example 2:
      ISLASTSK=0&&C>O&&TIME>=0915,SK;
      
    • Tahun

      Year.

      YEAR, year of acquisition.
      
      Remark:
      The value range of YEAR is 1970-2033.
      
      Example 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);                               // Take the highest price, lowest price, opening price, and closing price of the previous year
      Example 2:
      NN:=IFELSE(YEAR>=2000 AND MONTH>=1,0,1);
      
    • Bulan

      Ambil bulan ini.

      MONTH, returns the month of a period.
      
      Remark:
      The value range of MONTH is 1-12.
      
      Example 1:
      VALUEWHEN(MONTH=3&&DAY=1,C);                // Take its closing price when the K-line date is March 1
      Example 2:
      C>=VALUEWHEN(MONTH<REF(MONTH,1),O),SP;
      
    • Hari

      Dapatkan jumlah hari dalam periode

      DAY, returns the number of days in a period.
      
      Remark:
      The value range of DAY is 1-31.
      
      Example 1:
      DAY=3&&TIME=0915,BK;                      // 3 days from the same day, at 9:15, buy it
      Example 2:
      N:=BARSLAST(DATE<>REF(DATE,1))+1;
      CC:=IFELSE(DAY=1,VALUEWHEN(N=1,O),0);      // When the date is 1, the opening price is taken, otherwise the value is 0
      
    • Jam

      Hour.

      HOUR, returns the number of hours in a period.
      
      Remark:
      The value range of HOUR is 0-23
      
      Example 1:
      HOUR=10;                                   // The return value is 1 on the K-line at 10:00, and the return value on the remaining K-lines is 0
      
    • Menit

      Minute.

      MINUTE, returns the number of minutes in a period.
      
      Remarks:
      1: The value range of MINUTE is 0-59
      2: This function can only be loaded in the minute period, and returns the number of minutes when the K-line starts.
      Example 1:
      MINUTE=0;                                 // The return value of the minute K-line at the hour is 1, and the return value of the other K-lines is 0
      Example 2:
      TIME>1400&&MINUTE=50,SP;                   // Sell and close the position at 14:50
      
    • Hari Minggu

      Dapatkan nomor minggu ini.

      WEEKDAY, get the number of the week.
      
      Remark:
      1: The value range of WEEKDAY is 0-6. (Sunday ~ Saturday)
      
      Example 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;                               // Automatically close positions at the end of the monthly delivery day
      Example 2:
      C>VALUEWHEN(WEEKDAY<REF(WEEKDAY,1),O)+10,BK;
      AUTOFILTER;
      
  • Fungsi penilaian logis

    • BARSTATUS

      Kembalikan status posisi untuk periode saat ini.

      BARSTATUS returns the position status for the current period.
      
      Remark:
      The function returns 1 to indicate that the current period is the first period, returns 2 to indicate that it is the last period, and returns 0 to indicate that the current period is in the middle.
      
      Example:
      A:=IFELSE(BARSTATUS=1,H,0);              // If the current K-line is the first period, variable A returns the highest value of the K-line, otherwise it takes 0
      
    • Diantara

      Between.

      BETWEEN(X,Y,Z) indicates whether X is between Y and Z, returns 1 (Yes) if established, otherwise returns 0 (No).
      
      Remark:
      1.The function returns 1(Yse) if X=Y, X=Z, or X=Y and Y=Z.
      
      Example 1:
      BETWEEN(CLOSE,MA5,MA10);                // It indicates that the closing price is between the 5-day moving average and the 10-day moving average
      
    • BARSLASTCOUNT

      BARSLASTCOUNT(COND) menghitung jumlah periode berturut-turut yang memenuhi kondisi, menghitung ke depan dari periode saat ini.

      Remark:
      1. The return value is the number of consecutive non zero periods calculated from the current period
      2. the first time the condition is established when the return value of the current K-line BARSLASTCOUNT(COND) is 1
      
      Example:
      BARSLASTCOUNT(CLOSE>OPEN);
      //Calculate the number of consecutive positive periods within the current K-line
      
    • Silang

      Fungsi silang.

      CROSS(A,B) means that A crosses B from bottom to top, and returns 1 (Yes) if established, otherwise returns 0 (No)
      
      Remark:
      1.To meet the conditions for crossing, the previous k-line must satisfy A<=B, and when the current K-line satisfies A>B, it is considered to be crossing.
      
      Example 1:
      CROSS(CLOSE,MA(CLOSE,5));              // Indicates that the closing line crosses the 5-period moving average from below
      
    • TEMPAT

      Crossdown

      CROSSDOWN(A,B): indicates that when A passes through B from top to bottom, it returns 1 (Yes) if it is established, otherwise it returns 0 (No)
      
      Remark:
      1.CROSSDOWN(A,B) is equivalent to CROSS(B,A), and CROSSDOWN(A,B) is easier to understand
      
      Example 1:
      MA5:=MA(C,5);
      MA10:=MA(C,10);
      CROSSDOWN(MA5,MA10),SK;               // MA5 crosses down MA10 to sell and open a position
      // CROSSDOWN(MA5,MA10),SK; Same meaning as CROSSDOWN(MA5,MA10)=1,SK;
      
    • CROSSUP

      Crossup.

      CROSSUP(A,B) means that when A crosses B from the bottom up, it returns 1 (Yes) if it is established, otherwise it returns 0 (No)
      
      Remark:
      1.CROSSUP(A,B) is equivalent to CROSS(A,B), and CROSSUP(A,B) is easier to understand.
      
      Example 1:
      MA5:=MA(C,5);
      MA10:=MA(C,10);
      CROSSUP(MA5,MA10),BK;                 // MA5 crosses MA10, buy open positions
      // CROSSUP(MA5,MA10),BK;与CROSSUP(MA5,MA10)=1,BK; express the same meaning
      
    • Semua

      Tentukan apakah itu terus-menerus terpenuhi.

      EVERY(COND,N), Determine whether the COND condition is always satisfied within N periods. The return value of the function is 1 if it is satisfied, and 0 if it is not satisfied.
      
      Remarks:
      1.N contains the current K-line.
      2.If N is a valid value, but there are not so many K-lines in front, or N is a null value, it means that the condition is not satisfied, and the function returns a value of 0.
      3.N can be a variable.
      
      Example 1:
      EVERY(CLOSE>OPEN,5);                // Indicates that it has been a positive line for 5 periods
      Example 2:
      MA5:=MA(C,5);                       // Define a 5-period moving average
      MA10:=MA(C,10);                     // Define a 10-period moving average
      EVERY(MA5>MA10,4),BK;               // If MA5 is greater than MA10 within 4 periods, then buy the open position
      // EVERY(MA5>MA10,4),BK; has the same meaning as EVERY(MA5>MA10,4)=1,BK;
      
    • Ada

      Tentukan apakah ada kepuasan.

      EXIST(COND, N) judges whether there is a condition that satisfies COND within N periods.
      
      Remarks:
      1.N contains the current K-line.
      2.N can be a variable.
      3.If N is a valid value, but there are not so many K-lines in front, it is calculated according to the actual number of periods.
      
      Example 1:
      EXIST(CLOSE>REF(HIGH,1),10);     // Indicates whether there is a closing price greater than the highest price of the previous period in 10 periods, returns 1 if it exists, and returns 0 if it does not exist
      Example 2:
      N:=BARSLAST(DATE<>REF(DATE,1))+1;
      EXIST(C>MA(C,5),N);              // Indicates whether there is a K-line that satisfies the closing price greater than the 5-period moving average on the day, returns 1 if it exists, returns 0 if it does not exist
      
    • Jika

      Fungsi kondisi.

      IF(COND,A,B)Returns A if the COND condition is true, otherwise returns B.
      
      Remarks:
      1.COND is a judgment condition; A and B can be conditions or values.
      2.This function supports the variable circular reference to the previous period's own variable, that is, supports the following writing Y: IF(CON,X,REF(Y,1)).
      Example 1:
      IF(ISUP,H,L);                   // The K-line is the positive line, the highest price is taken, otherwise the lowest price is taken
      Example 2:
      A:=IF(MA5>MA10,CROSS(DIFF,DEA),IF(CROSS(D,K),2,0));     // When MA5>MA10, check whether it satisfies the DIFF and pass through DEA, otherwise (MA5 is not greater than MA10), when K and D are dead fork, let A be assigned a value of 2, if none of the above conditions are met, A is assigned a value of 0
      A=1,BPK;                                                // When MA5>MA10, the condition for opening a long position is to cross DEA above the DIFF
      A=2,SPK;                                                // When MA5 is not greater than MA10, use K and D dead forks as the conditions for opening short positions
      
    • IFELSE

      Fungsi kondisi.

      IFELSE(COND,A,B) Returns A if the COND condition is true, otherwise returns B.
      
      Remarks:
      1.COND is a judgment condition; A and B can be conditions or values.
      2.This function supports variable circular reference to the previous period's own variable, that is, supports the following writing Y: IFELSE(CON,X,REF(Y,1));
      Example 1:
      IFELSE(ISUP,H,L);                                             // The K-line is the positive line, the highest price is taken, otherwise the lowest price is taken
      Example 2:
      A:=IFELSE(MA5>MA10,CROSS(DIFF,DEA),IFELSE(CROSS(D,K),2,0));   // When MA5>MA10, check whether it satisfies the DIFF and pass through DEA, otherwise (MA5 is not greater than MA10), when K and D are dead fork, let A be assigned a value of 2, if none of the above conditions are met, A is assigned a value of 0
      A=1,BPK;                                                      // When MA5>MA10, the condition for opening a long position is to cross DEA above the DIFF
      A=2,SPK;                                                      // When MA5 is not greater than MA10, use K and D dead forks as the conditio

Berkaitan

Lebih banyak