FMZ Mengukur Platform Strategi Menulis tutorial pemula (mesti lihat)

Penulis:Rumput, Dicipta: 2019-08-13 17:47:27, Dikemas kini: 2021-08-06 10:29:46

Maklumat garis K sejarah. Kelemahan mekanisme ini adalah jelas: pada garis K, hanya satu jualan yang boleh dihasilkan, dan harga yang biasanya berdasarkan adalah harga penutupan garis K. Dan satu garis K hanya dapat memperoleh empat harga, mengenai bagaimana harga berubah dalam satu garis K, apakah harga tertinggi berlaku terlebih dahulu, atau harga terendah berlaku terlebih dahulu, dan sebagainya.

FMZ platform mengulangi dua jenis pengulingan peringkat analog dan pengulingan peringkat cakera sebenar. Pengulingan peringkat analog akan menghasilkan 14 titik masa pengulingan pada setiap kitaran garis K bawah, berdasarkan tik yang dihasilkan secara analog.Tingkat cakera sebenar adalah tik yang dikumpulkan secara sebenar, kira-kira sekali setiap beberapa saat, dan pada masa ini sebahagian menyokong kedalaman sebenar (mengandung 20 file), transaksi satu per satu sebenar.Jumlah data yang besar dan kelajuan yang lambat, oleh itu tidak dapat diulang dalam masa yang sangat lama. FMZ's mechanism diulang boleh membuat strategi berdagang beberapa kali dalam satu garis K, mengelakkan keadaan yang hanya boleh menutup urus niaga harga, lebih tepat dan mengambil kira kelajuan diulang.https://www.fmz.com/digest-topic/4009

Rangka kerja dasar untuk ulangan adalah sama dengan cakera sebenar, ia adalah pusingan mati. Oleh kerana ulangan melompat pada titik ulangan yang berbeza, pada masa ini tidak boleh menggunakan tidur, pada akhir satu pusingan akan melompat secara automatik ke titik masa seterusnya. Tetapi Python memerlukan untuk memaksa satu pusingan kerana mekanisme program.Sleep(10)"Saya tidak mahu mereka membunuh saya", katanya.

Pengambilan gambar semula

Enjin ulasan akan mengambil gambar berdasarkan harga pesanan pengguna dan harga tinjauan pada masa ulasan, jika harga beli lebih tinggi daripada satu jual, untuk menjual satu urus niaga. Jika tidak dapat diselesaikan, ia akan menghasilkan daftar tanggungan. Untuk memastikan urus niaga memerlukan titik peluncur. Jika keadaan tidak dapat dibuka atau tidak dapat diselesaikan semasa ulasan, ia memeriksa sama ada terdapat pembekuan kedudukan yang disebabkan oleh pesanan yang tidak diselesaikan.

Tetapan halaman penyesuaian

img

  • 1.回测页面的选择,左侧是策略编辑页面。
  • 2.回测起始结束时间,由于数据不完整,回测可能直接从有数据的时间开始。
  • 3.回测GetRecords()Tempoh lalai fungsi juga boleh ditetapkan dalam kod sebagai parameter tempoh.
  • 4.回测机制的选择。
  • 5.展示或隐藏跟多回测设置。
  • 6.最大日志数、收益数据数、图表数据数等,为了防止数据量过大导致浏览器卡死。
  • 6.底层tick生成依据K线周期。
  • 7.交易滑点。
  • 7.容错,会模拟API请求出错情况,检查策略容错能力。
  • 8.是否绘制行情图标,回测中如果使用了TA指标函数,会自展示在图标上,买卖也会标记。
  • 9.手续费设置
  • 10. Tambah bursa-pasangan dagangan dan aset.
  • 11.回测参数设置,如果参数是数字还支持一键优化参数,自动按照一定范围遍历参数回测。

Perbezaan antara rekod dan cakera sebenar

  • 1.回测时有效的行情只有GetTicker和GetRecords,其它如获深度、成交历史都不是真实的(因为数据量太大,实盘级回测目前已经支持这些数据,但只有最近数据)。
  • 2.回测添加的交易所都是独立账户,目前不支持切换交易对。因此无法在一个账户里操作两个交易对。
  • 3.回测中无法使用网络请求。
  • 4.回测无法使用IO扩展,只能操作最基础的API。
  • 5.回测只能获取标准的数据,像Info之类的牵扯到实盘的数据不存在。
  • 6.回测中也有可能不成交,注意冻结订单情况。
  • 7.商品期货回测不支持市价单。

Kesilapan dan kesilapan yang biasa berlaku

Sebelum ini, terdapat kemungkinan akses gagal dan kembali dengan menggunakan API pada cakera sebenar.nullDalam kes ini, data yang digunakan akan membuat kesalahan dan menyebabkan cakera sebenar berhenti, jadi strategi harus dilakukan dengan baik.

Perbuatan yang salah

Penyebab kesilapan yang biasa:

  • Kesilapan akses rangkaian API, masa lapang akses antara muka akan kembali kepada null, apabila digunakan akan melaporkan kesalahan.
  • Pertukaran akan mengehadkan kesilapan seperti had ip, ketepatan pesanan, kekerapan akses, kesilapan parameter, kekurangan aset, pasaran tidak dapat berdagang, membatalkan pesanan yang telah ditandatangani, dan lain-lain.
  • Pertukaran mengembalikan kesilapan data yang kadang-kadang berlaku, seperti kedalaman yang dikembalikan kosong, maklumat akaun yang ditangguhkan, status pesanan yang ditangguhkan, dan sebagainya.
  • Kesilapan logik prosedur.

Sebelum menggunakan API untuk mengembalikan data, anda perlu membuat keputusan sama ada ia adalah null atau tidak. Berikut adalah kaedah yang biasa digunakan untuk mengumpulkan:

//1.判断为null进行处理
var ticker = exchange.GetTicker();
while(ticker == null){
     Log('ticker 获取出错');
     ticker = exchange.GetTicker();
 }
 Log(ticker.Last);
 // 2.判断不为null再进行引用
 var ticker = exchange.GetTicker();
 if(!ticker){
     Log(ticker.Last);
 }
 // 3._C()函数重试
 var ticker = _C(exchange.GetTicker);
 Log(ticker.Last);
 // 4. try catch容错
 try{
     var ticker = exchange.GetTicker();
     Log(ticker.Last);
 }
 catch(err){
     Log('ticker 获取出错');
 } 

Jika anda ingin mendapatkan maklumat yang salah, anda boleh menggunakannya.GetLastError(), akan mengembalikan strings maklumat yang salah pada masa lalu, yang boleh digunakan untuk memproses perbezaan pada kesalahan.

Soalan Lazim

Di mana-mana blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog, blog.https://www.fmz.com/bbs-topic/1427▽ Berikut adalah beberapa ringkasan, jika anda menghadapi masalah, anda boleh mencari Ctrl + F di bawah.

Bagaimana untuk meletakkan pengurus?

Untuk maklumat lanjut, lihat bahagian Tambah Pengurus

Adakah anda boleh mencari strategi penulisan manusia?

https://www.fmz.com/marketsAda yang menawarkan perkhidmatan penulisan, atau berunding dalam kumpulan, dan memerlukan hubungan mereka sendiri, dengan risiko mereka sendiri.

Mengakses semua antara muka akan meminta masa tamat

Ini bermaksud bahawa akses ke antara muka bursa terlewat, jika kadang-kadang berlaku tidak menjadi masalah, jika selalu diberi isyarat bahawa rangkaian di mana ia tidak dapat diakses, perlu menggunakan pelayan luar negara.

Kesilapan ERR_INVALID_POSITION

Kesalahan sistem pengesanan, yang biasanya ditulis sebagai kesilapan untuk strategi, akan menyebabkan kesalahan ini apabila anda cuba untuk meletakkan kedudukan yang sama tanpa pemegang saham atau jumlah pemegang saham yang tidak mencukupi.

simbol tidak ditetapkan

Bursa niaga hadapan mengulang, tiada kontrak ditetapkan dalam kod, lihat fungsi exchange.SetContractType

BITMEX 429 error, {error:{message:Rate limit exceeded retry in 1 seconds......}}

Perkhidmatan ini juga mempunyai ciri-ciri yang berbeza.

{status:6004,msg:timestamp adalah di luar julat}

Waktu pelayan di luar jangkauan memerlukan kemas kini masa pelayan, tidak boleh terlalu jauh

GetOrder ((455284455): ralat: id pesanan tidak sah atau pesanan dibatalkan.

Beberapa pertukaran telah membatalkan pesanan, dan maklumat pesanan tidak dapat diakses oleh pertukaran kerana tidak dipelihara.

GetOrders: 400: {code:-1121,msg:Invalid simbol.}

Pasangan urus niaga yang tidak sah, diperiksa sama ada pasangan urus niaga ditetapkan dengan salah.

Penyahkodean kunci rahsia gagal

API KEY gagal diselesaikan, jika anda telah mengubah kata laluan FMZ selepas mengkonfigurasi APIKEY, cuba tambahkan halaman pertukaran di FMZ dan persiapkan semula APIKEY pertukaran.

Signature not valid: Invalid submission time or incorrect time format (Tanda tangan tidak sah: masa penyerahan tidak sah atau format masa tidak betul)

Ia disyorkan untuk menggunakan pelayan Linux, atau memasang perisian sinkronisasi masa pada sistem windows yang mengalami masalah ini.

Mengapa perantara global disiapkan dan pengurus tidak dapat mengakses API pertukaran?

Agen global tidak mempunyai port rangkaian hos agen, kerana masalah kelewatan, lebih baik hos yang menggunakan pelayan luar negara

Bagaimana untuk mengekalkan strategi di tempat dan bukannya di FMZ yang dimuat naik?

Dengan menggunakan Python, anda boleh mengimport fail tempatan, menyimpan dasar yang biasanya ditulis berdasarkan API FMZ sebagai fail di bawah laluan pelaksanaan pada pelayan anda sendiri, dan langsung membaca pelaksanaan.

#!python2.7

def run(runfile):
      with open(runfile,"r") as f:
            exec(f.read())
            
def main():
    run('my.py')

Cara menggunakan rangkaian ujian pertukaran atau menukar alamat pangkalan API

Dengan menggunakan exchange.SetBase ((() anda boleh beralih langsung ke alamat pangkalan API yang sesuai; seperti:

exchange.SetBase("https://www.okex.me")

Lebih lanjut

Gaoencheerapi

SainsBagaimana untuk melaksanakan dasar yang dijalankan secara tempatan? Saya menulis output log yang mudah dan mengikuti operasi di akhir ayat. Langkah pertama adalah menggunakan komputer riba sebagai pelayan untuk menjalankan program pengurus. Langkah kedua, tulis program test.py yang menghasilkan maklumat Log yang mudah (fungsi API FMZ); Langkah ketiga, seperti pada akhir teks, menulis runfile yang dijalankan melalui run.py dengan panggilan test.py. /upload/asset/1add39483ef82d45b3ce3.png

Gyp9Saya telah membeli kursus kuantiti perdagangan awan yang mudah, dan saya tidak tahu di mana untuk pergi sekarang.

MonuRajakbanyak

MonuRajakHai

Berjaya.Belajar

wqyTerdapat satu kesalahan teks kecil, GetAccount mendapatkan akaun dalam penerangan, FrozenStocks sepatutnya menjadi baki beku dan bukan baki yang boleh digunakan.

Encik Yang Muliagetorder outtime mendapatkan pesanan terlewat masa, pertukaran okx, bagaimana?

Uji 12 Rukun TinggiApakah kadar aset yang dijamin tidak boleh didapati, sehingga 0% akan dipaksa rata aset yang dijamin

Shifeng2020Saya melihat 1 minit k operasi grafik, jadi masa tidur kitaran mati Python boleh ditetapkan kepada 0.1s, iaitu tidur ((100) Adakah saya melihat anda menulis satu tidur ((10) di dalamnya, iaitu 0.1s tidak akan melebihi had API huobi HM?

Rumah Jiwa Timurexchange.SetDirection (("closebuy"); // Jika kontrak kekal, letakkan langsung exchange.SetDirection (("sell") Di sini saya cuba kontrak kekal OKex, jika anda menetapkannya sebagai jual, ia akan terbuka dengan segera, tidak begitu murah.

Rumah Jiwa Timurexchange.SetDirection (("closebuy"); // Jika kontrak kekal, letakkan langsung exchange.SetDirection (("sell") Di sini saya cuba kontrak kekal OKex, jika anda menetapkannya sebagai jual, ia akan terbuka dengan segera, tidak begitu murah.

Rumah Jiwa TimurTerdapat dua kesalahan ejaan dalam kod GetOrders..............

Rumah Jiwa TimurAdakah saya yang silap? exchange.Buy ((-1, 0.5), pasangan dagangan adalah ETH_BTC, dan senarai harga mewakili pembelian ETH sebanyak 0.5BTC exchange.Buy ((price, 0.5), jika ini adalah senarai harga terhad, mewakili pembelian 0.5ETH dengan harga

Rumah Jiwa Timurexchange.Buy ((-1, 0.5), pasangan dagangan adalah ETH_BTC, yang mewakili pembelian ETH sebanyak 0.5BTC pada harga pasaran Di sini anda akan melihat bahawa anda membeli 0.5 ETH untuk harga pasaran.

Gyp9Terima kasih.

RumputSudah lama di laman web ini https://study.163.com/course/courseMain.htm?share=2&shareId=400000000602076&courseId=1006074239&_trace_c_p_k2_=c3f5d238efc3457d93c8b92c0398d2b2

RumputTambah WeChat di halaman utama, menarik anda ke dalam kumpulan

wqyKadang-kadang saya mengalami masalah dan tidak tahu di mana untuk bertanya.

Rumputdiubah.

RumputDapatkan semula

RumputAnda boleh menggunakan GetRawJSON atau melihat maklumat di dalam medan

Rumah Jiwa TimurSaya mendapati banyak kesalahan ejaan dalam kod, haha.

RumputOh, sudah diperbetulkan, terima kasih kerana menunjukkan kesilapan.

RumputBeberapa kontrak kekal membenarkan pemegang dua hala, perlu menetapkan kedudukan. Saya mengemas kini, pada asalnya hanya bitmex.