[TOC]
Cari FAQ untuk mudah dilihat. Bagaimana untuk mencari kata kunci di jawatan?
PenggunaanCtrl + f
untuk membuka halaman dan mencari; masukkan kata kunci, contohnya:
Pada masa ini Stesen Antarabangsa FMZ hanya menyokong perniagaan cryptocurrency. Masa hadapan komoditi, sekuriti saham dan perniagaan lain disokong oleh stesen domestik FMZ, anda boleh log masuk:https://www.fmz.cn.
Weixin:
Kenapa?Beli satu hargadanjual satu hargadiperolehi denganGetTicker
dan yang diperolehi denganGetDepth
Berbeza?
Data daripadaGetTicker
danGetDepth
mungkin tidak dapat diperoleh pada masa yang sama. terdapat kelewatan masa cetrain, jadi data akan berubah.GetTicker
akan sedikit lebih cepat, untuk data adalah kurang daripada data yang diperoleh olehGetDepth
.
exchang.GetOrders
mendapat perintah yang belum selesai, jadi di mana untuk mendapatkan perintah yang dilaksanakan?
Terdapat satu lagi API untuk pertanyaan perintah, iaitu,exchange.GetOrder
. Ia menyoal semua jenis pesanan, mengikutID
Masukkan urutanID
Oleh itu, untuk mendapatkan perintah yang dilaksanakan, anda perlu melihat sama ada platform menyediakan jenis antara muka; antara muka yang disediakan oleh setiap platform agak berbeza.
DalamJavaScript
Strategi, hasil string masa menukar kepada timestamp adalah salah.
Anda perlu mengambil kira zon waktu dalam tetapan masa sistem.
Kenapa harga buka dan harga tutup yang saya cetak adalah sama?
1.Mungkin pada masa anda mencetak, memang tidak ada perdagangan di platform, jadi harga buka, tutup, tertinggi dan terendah BAR adalah sama sepanjang masa. 2.Anda perlu memeriksa sama ada BAR yang anda amati adalah BAR terakhir, kerana harga buka, tutup, tertinggi dan terendah BAR terakhir adalah sama.
Kesalahan mengesahkan masa dengan pelayan, sepertiSignature not valid:Invalid submission time or incorrect time format
Kesilapan ini adalah masalah sistem operasi lama sepertiwindows2000/2003/XP
, sila rujuk:
Kami mencadangkan anda menggunakanLinux
pelayan, atau anda boleh memasang perisian penyegerakan masa dalam iniwindows
sistem di mana kesilapan berlaku, untuk menyegerakkan masa pada frekuensi tinggi dan mencegah kesilapan pengesahan masa berlaku.
ATR
(TR
) daripada Mylanguage dan yang dikira olehTA
/talib
Perpustakaan?Sebabnya adalah bahawa kaedah pengiraan penunjuk Mylanguage tidak konsisten dengan algoritma asasTA
/talib
Perpustakaan. kedua-duanya betul, tetapi algoritma yang berbeza.MACD
, ada yang menggunakan satuDIF-DEA
, dan beberapa menggunakan dua kaliDIF-DEA
, yang kedua-duanya betul.
Apa yang ia mewakili, jika nama platform adalahFutures_Esunny
?
Ia mewakili objek pertukaranProtokol Esunny, yang boleh dikembalikan oleh fungsiexchange.GetName()
.
Pada masa ini, stesen antarabangsa FMZ hanya menyokong perniagaan cryptocurrency. Masa hadapan komoditi, sekuriti saham dan perniagaan lain disokong oleh stesen domestik FMZ, anda boleh log masuk:https://www.fmz.cn.
#EXPORTTEST...#END
menyatakan pembolehubah dalam rujukan blok kod pelbagai tempoh. ApabilaREF
digunakan apabila merujuk dalam strategi, data akan dirujuk mengikut tempoh semasa, yang berbeza dari apa yang anda jangkakan.Data pelbagai tempoh yang anda perlukan akan diproses di#EXPORTTEST...#END
, jadi anda boleh menggunakannya secara langsung di luar.
Saya tidak dapat mencari dokumentasi FMZ API.
Anda boleh masukkan alamat halaman secara langsung:https://www.fmz.com/api, atau klik pautan seperti gambar berikut:
Kenapa?MACD
yang dikira oleh FMZ berbeza dengan yang dikira oleh platform?
Apabila membandingkan, adalah perlu untuk memberi perhatian kepada sama ada tempoh K-garis adalah sama, sama adaMACD
parameter penunjuk adalah sama, tempoh masa adalah sama, dan simbol adalah sama.MACD
; ada yangDIF-DEA
, dan ada juga yang2*(DIF-DEA)
; DIF
danDEA
harus konsisten.
Apa yang berkaitan dengan nombor K-line yang diperoleh, apabila data K-line sejarah diperoleh?
Apabila mengaksesexchange.GetRecords
Antara muka untuk mendapatkan data K-line, bilangan K-line yang dikembalikan oleh antara muka tertentu ditentukan oleh platform. Mungkin bilangan K-line yang dikembalikan oleh setiap platform tidak konsisten (walaupun beberapa platform tidak menyediakan antara muka K-line. Dalam kes ini, docker akan memanggil antara muka untuk mendapatkan data sejarah perdagangan platform apabila strategi memanggilexchange.GetRecords
. Antara muka data menyintesis K-garis mengikut sejarah dagangan). K-garis yang diterima oleh docker akan terus terkumpul bersama-sama, dan ia adalah perlu untuk mengaksesexchange.GetRecords
antara muka dengan frekuensi tertentu, jika tidak, kesinambungan data mungkin terjejas.
Saya mendapati bahawa memanggil fungsiexchange.Buy
Hanya pulanganID
dalam dokumentasi API, tetapi mengapa ia mengembalikan begitu banyak maklumat apabila saya beroperasi?
Fungsi yang boleh menjana eksport log dalam fungsi FMZ API, sepertiLog
, exchange.Buy
, exchange.CancelOrder
, dan lain-lain, semua boleh diikuti oleh beberapa parameter tambahan selepas parameter yang diperlukan.exchange.CancelOrder(orders[i].Id, orders[j])
tambahan mengeksport maklumat pesanan apabila membatalkanorders[j]
.
Bagaimana untuk melakukan mesej WeChat Push dalam bot?
WeChat push hanya sah pada bot; tambah'@'
pada akhirLog
fungsi, dan kemudian maklumat cetakLog
boleh didorong; anda boleh mencari butiran dalam dokumen API di:https://www.fmz.com/api#LogPada masa ini Stesen Antarabangsa FMZ hanya menyokong perniagaan cryptocurrency. Masa hadapan komoditi, sekuriti saham dan perniagaan lain disokong oleh stesen domestik FMZ, anda boleh log masuk:https://www.fmz.cn.
Push WeChat hanya disokong di stesen domestik FMZ.
Bolehkah komoditi niaga hadapan menggunakan kontrak utama berterusan dan kontrak indeks?
Ia menyokong kontrak berterusan utama dan kontrak indeks niaga hadapan komoditi. Pada masa ini Stesen Antarabangsa FMZ hanya menyokong perniagaan cryptocurrency. Masa hadapan komoditi, sekuriti saham dan perniagaan lain disokong oleh stesen domestik FMZ, anda boleh log masuk:https://www.fmz.cn.
var records = exchange.GetRecords(PERIOD_D1)
adalah untuk mendapatkan K-garis harian, jadi jika saya beroperasi niaga hadapan dalam bot, apa K-garis harian kontrak yang diperoleh? apa yang harus saya tulis jika saya mahu mendapatkan kontrak tertentu harian K-garis data, seperti data K-garis RB atau saya?
Anda harus menetapkanKod kontraksebelum mendapatkan TAQ (sekurang-kurangnya menetapkan kod kontrak sekali sejak program bermula).SetContractType("rb1805")
, Tetapkan kontrak yang dikendalikan semasa untukrb1805
Hubungi lagi API yang mendapatkan TAQ, anda boleh mendapatkan data TAQ kontrak rb1805.
Pada masa ini Stesen Antarabangsa FMZ hanya menyokong perniagaan cryptocurrency. Masa hadapan komoditi, sekuriti saham dan perniagaan lain disokong oleh stesen domestik FMZ, anda boleh log masuk:https://www.fmz.cn.
Bagaimana untuk menulis kod kontrak niaga hadapan komoditi?
Anda boleh merujuk kepada dokumentasi FMZ API. Pada masa ini Stesen Antarabangsa FMZ hanya menyokong perniagaan cryptocurrency. Masa hadapan komoditi, sekuriti saham dan perniagaan lain disokong oleh stesen domestik FMZ, anda boleh log masuk:https://www.fmz.cn.
Will.exchange.GetAccount
gagal mendapatkan maklumat kerana masalah rangkaian dan lain-lain, dan adakah lapisan bawah sistem FMZ sudah memproses kegagalan? atau pengguna perlu menangani kegagalan permintaan itu sendiri? Mengapa pegawai FMZ tidak mengendalikannya?
Terdapat kegagalan yang memerlukan pengguna untuk melakukan toleransi ralat. Lapisan bawah FMZ tidak memproses data, dan data yang dikembalikan kepada pengguna adalah data yang tidak diproses. Kaedah toleransi ralat atau logik tertentu dirumuskan oleh strategi tertentu. Kerana jika diproses, ia mungkin mempengaruhi keputusan pengguna, dan keputusan akan diproses oleh strategi, yang secara khusus merujuk kepadamaklumat ralat penapisanataucuba lagidan kaedah pemprosesan lain.
Apakah unit jumlah pesanan kontrak OKEX? Adakah jumlah syiling atau jumlah kontrak?
Jumlah pesanan kontrak OKEX dikira dengan jumlah kontrak; contohnya,exchange.Buy(1000,1)
bermaksud meletakkan pesanan pada harga 1000, dengan jumlah kontrak 1.
Adakah ia bermakna untuk membuat perintah had apabila saya memanggilexchange.Sell
danexchange.Buy
di FMZ?
Untuk butiran, anda perlu melihat parameter pertama yang dihantar (parameter pertama adalah harga pesanan).-1
untuk meletakkan pesanan pasaran. makna jumlah beli dan jualan jumlah adalah entah bagaimana berbeza (parameter kedua), dan jika harga tidak-1
Dalam kebanyakan antara muka pesanan platform spot, jumlah pesanan pesanan beli pasaran adalahJumlah asetTidakJumlah syiling. Dalam antara muka pesanan platform niaga hadapan cryptocurrency, jumlah pesanan biasanya bilangan bulat jumlah kontrak.
Periksa antara muka perintah:https://www.fmz.com/api#exchange.buyprice-amount https://www.fmz.com/api#exchange.sellprice-amount
Fungsi Mail
Mail("smtp.qq.com", "xxxx@qq.com", "xxx", "xxx@qq.com", "test title", "test body")
Akses kepada QQ
Parameter templat untuk Pine language, Mylanguage: bilangan tempoh maksimum pembolehubah mempengaruhi pengiraan penunjuk
Secara lalai,
Periksa kawasan penyuntingan kod strategi untuk sebarang isyarat ralat. Semak sama ada terdapat nama pembolehubah yang hilang semasa mengisytiharkan pembolehubah, seperti lupa menulis nama dalam
BITMEX
429 kesilapan,{"error":{"message":"Rate limit exceeded retry in 1seconds……"}}
Apabila anda melihat ralat 429, itu bermakna kekerapan mengakses platform terlalu tinggi.
Only support CTP
Kesilapan
Itu bermakna awak memanggilCTP niaga hadapan komoditiantara muka atau perpustakaan dalamStrategi mata wang kripto. Pada masa ini Stesen Antarabangsa FMZ hanya menyokong perniagaan cryptocurrency. Masa hadapan komoditi, sekuriti saham dan perniagaan lain disokong oleh stesen domestik FMZ, anda boleh log masuk:https://www.fmz.cn.
Bittrex
Kesilapan dalam bot:{"success":false,"message":"NOT_ALLOWED","result":null}
Ia menunjukkan platform had keistimewaan.Bittrex
, dan lihat sama ada perlu memeriksa maklumat, seperti perjanjian pengguna.
Kesalahan operasi bot:TypeError:value has no property at
Kerana kesilapan yang dilaporkan dalam backtest dan bot adalah berbeza, kesilapan ini tidak dapat dikesan semasa backtest.
unable to open database
Kesilapan
Jika sistem adalahMac OS
Sistem, perhatikan untuk memeriksa sama ada ia adalah masalah izin.
Atau, ia boleh menjadi kesilapan yang disebabkan oleh ruang penuh cakera keras peranti, yang melumpuhkan penciptaan fail pangkalan data bot.
Kesalahan:do not support the function
Ia merujuk kepada keadaan bahawa objek pertukaran yang ditambahkan semasa backtest adalah platform spot cryptocurrency, tetapi fungsi API niaga hadapan dipanggil dalam kod.
Kesalahan:in SetCurrency OSError: exception: access violation reading 0x000000FCF25F0000
Dalam niaga hadapan cryptocurrencyPython
strategi, sistem backtest menggunakan docker peribadi, dan pasangan dagangan ditukar dalam kod, yang menyebabkan ralat dilaporkan.
Sebabnya adalah bahawa sistem backtest tidak menyokong backtest niaga hadapan cryptocurrency untuk menukar pasangan perdagangan.
Kesilapan
Python
Laporan ujian semula enjin tempatanEOFerror
.
EOF
Catch pengecualian adalah cukup dan anda boleh memanggilnya di mana sahajaPython
disokong.
# encoding: utf-8
'''backtest
start: 2021-08-30 00:00:00
end: 2022-09-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''
from fmz import *
task = VCtx(__doc__) # initialize backtest engine from __doc__
def main():
while not exchange.IO("status"):
Sleep(1000)
exchange.SetContractType("swap")
while True:
bars_1min = _C(exchange.GetRecords, PERIOD_M1) # Get 1min K-line
print(len(bars_1min))
_CDelay(2000)
# Calling the main function
try:
main()
except:
print(task.Join(False))
Mylanguage melibatkan kesilapan yang sangat tersembunyi dalam pengiraan tempoh, dan nilai yang dikira mungkin N / A, seperti contoh berikut:
Sebabnya ialah parameter tempoh pengiraan melebihi julat data, mengakibatkan pengiraan nilai N/A. Kaedah pemprosesan:
Kesilapan berlaku di Mylanguage: kesilapan parsing, dan strategi hanya mempunyai kod mudah, bilangan baris ralat sangat panjang, dan punca ralat tidak dapat dijumpai.
Ia mungkin adalah kesilapan yang disebabkan oleh masalah templat awal Mylanguage. Penyelesaian: 1. Ekspor strategi sebagai fail xml. 2. Buat strategi Mylanguage kosong baru. 3. Import fail xml ke dalam strategi kosong yang baru dicipta. 4. Tambah bot untuk menguji.
Kesalahan:fatal error:unexpected signal during runtime execution...go routine 11[syscall,locked to thread]
Periksa sama ada strategi yang ditulis dalamC++
menggunakan penunjuk sifar, dan mencadangkan anda menggunakan mode kesalahan toleransi backtest untuk mengesan.
Kesalahan panggilanexchange.SetMarginLevel(10)
: Futures_OP 0:403:{"error":{"message":"Access Denied","name":"HTTPError"}}
Periksa sama ada keistimewaan yang berkaitanAPI KEY
yang digunakan oleh platform dihidupkan.
Kesalahan Ujian Balik:symbol not set
Ia adalah kerana anda tidak menetapkan kontrak dalam kod semasa backtest platform niaga hadapan; anda boleh merujuk kepadaexchange.SetContractType
fungsi dalam dokumentasi API.
KesilapanERR_INVALID_POSITION
Jika sistem backtest melaporkan ralat, biasanya ia adalah ralat yang disebabkan oleh kesilapan menulis strategi. Jika anda cuba meletakkan pesanan untuk menutup kedudukan apabila tidak ada kedudukan atau jumlah kedudukan tidak mencukupi, ralat akan dilaporkan. Periksa sama ada terdapat pembekuan kedudukan yang disebabkan oleh pesanan yang tidak selesai.
KesilapanERR_INVALID_ORDER
Jika sistem backtest melaporkan ralat, biasanya ia adalah ralat yang disebabkan oleh kesilapan menulis strategi. Anda harus memperhatikan untuk memeriksa harga pesanan (masa hadapan cryptocurrency dalam sistem backtest sementara tidak menyokong pesanan pasaran), sama ada jumlah pesanan adalah 0, nombor negatif atau pecahan perpuluhan (volume pesanan kontrak niaga hadapan dikira dengan jumlah kontrak, yang adalah bilangan bulat).
KesilapanERR_INSUFFICIENT_ASSET
Jika backtest melaporkan ralat, ia biasanya menunjukkan jumlah aset yang tersedia sudah tidak mencukupi untuk meletakkan pesanan semasa.
Binding Error:Cannot passnon-string to std::string
Maklumat ralat
Dalam kod strategi, ralat biasanya disebabkan oleh panggilan yang salah dari nama atribut (menggunakan atribut yang tidak ditakrifkan).
Kesilapan{"status":6004,"msg":"timestamp is out of range"}
Kesilapan ini bermakna timestamp pelayan adalah di luar julat, dan anda perlu mengemas kini tiem pelayan, tanpa penyimpangan yang besar.
Kesilapantimeout
Kesalahan ini adalah kesalahan masa lapang, yang menunjukkan kesalahan yang dilaporkan kerana tidak mendapatkan data tindak balas dari antara muka platform untuk tempoh masa tertentu selepas mengakses antara muka platform. Secara amnya, ia adalah masalah akses rangkaian sistem di mana docker terletak (banyak masalah disebabkan oleh dinding), atau masalah antara muka platform. Penyelesaian umum: gunakan pelayan luar negara untuk menjalankan docker.
Kesilapan dalam bot yang berjalan selepas menulis strategi:syntax error invalid label
Sumber ralat:
function main(){
if(1){
continue
}
}
//That will cause the error during operation
continue
Pernyataan mesti digunakan dalam gelung!
Kesalahan:(CTP_T@9999)Error:140CTP:change the password when first log in, and please log in again after changing
Kata laluan yang diubah?
Di sini ia menunjukkan untuk mengubah suaisimnow
kata laluan akaun; apabila anda menggunakan akaun syarikat niaga hadapan tertentu untuk log masuk, anda juga perlu mengubah kata laluan untuk log masuk pertama (satu akaun baru mempunyai kata laluan awal, dan anda tidak boleh menggunakan akaun tanpa mengubah kata laluan awal).
Pada masa ini Stesen Antarabangsa FMZ hanya menyokong perniagaan cryptocurrency. Masa hadapan komoditi, sekuriti saham dan perniagaan lain disokong oleh stesen domestik FMZ, anda boleh log masuk:https://www.fmz.cn.
Kesalahan:400:{"error":{"message":"Nonce is not increasing.This nonce:1523891993165,last nonce:1523891993165","name":"HTTPError"}}
Ia adalahnonce
kesalahan pengesahan, dan maklumat kesilapan yang berkaitan dengannonce
Anda boleh cuba untuk menyegerakkan masa sistem di mana bot docker terletak.
KesilapanSecretkey decrypt failed
Kesalahan menunjukkan kegagalan untuk menyahsulitAPI KEY
. Periksa jika anda mengubah suai laluan akaun FMZ selepas anda mengkonfigurasiAPI KEY
Cuba untuk mengkonfigurasiAPI KEY
pada halaman
Posisi berjangka komoditi terbuka Kesilapan:CTP: only close position
Terdapat banyak sebab mengapa laporan menunjukkan statuscan only close position
. Ia mungkin bahawa akaun telah dibekukan (ia tidak digunakan untuk masa yang lama, lebih daripada 1 tahun), atau ia mungkin log masuk ke saluran yang salah (CTP mempunyai banyak tempat duduk).
Pada masa ini Stesen Antarabangsa FMZ hanya menyokong perniagaan cryptocurrency. Masa hadapan komoditi, sekuriti saham dan perniagaan lain disokong oleh stesen domestik FMZ, anda boleh log masuk:https://www.fmz.cn.
Apa sebabnya jika silapannya:GetOrder(455284455):Error:invalid order id or order canceled.
sentiasa meningkat apabila saya memanggilexchange.Getorder
?
Arti harfiah: pesanan telah dibatalkan atau ID pesanan tidak sah. Sebab: dalam beberapa platform, jika anda membatalkan pesanan, maklumat pesanan tidak akan dikekalkan, dan ia akan dihapuskan. Oleh itu, apabila anda menanyakan pesanan diexchange.GetOrder
, kesilapan akan dilaporkan, atau ID pesanan yang anda tanyakan pada asalnya salah.
Kesilapan: had kadar, 429 Terlalu banyak permintaan
rate limit, 429 Too Many Requests
menunjukkan kekerapan mengakses antara muka platform terlalu tinggi, jadi anda perlu mengurangkan kekerapan mengakses antara muka platform.
Sentiasa menaikkanInvalid order price/amount
dalam bot dan backtest
Kesilapan jenis ini disebabkan oleh harga yang salah dan jumlah pesanan dihantar dalam apabila memanggil fungsi pesananexchange.Buy
atauexchange.Sell
Untukjumlah pesanan negatif, 0dan kaedah pengesanan ralat yang lain: anda boleh menghubungiLog
untuk mengeksport parameter harga atau parameter jumlah yang akan diteruskan sebelum meletakkan pesanan olehexchange.Buy
atauexchange.Sell
, untuk menentukan masalah.
Apa jenis kesilapanGetOrders:400:{"code":-1121,"msg":"Invalid symbol."}
?
Kesilapan itu bermaksud:Pasangan dagangan yang tidak sahAnda perlu memeriksa jika tetapan pasangan dagangan adalah salah.
Apa maksudnya jika terdapat beberapa kod ralat apabila log bot melaporkan ralat?
Anda boleh melihat penjelasan untuk kod ralat yang dikembalikan oleh antara muka platform yang berbeza dalam dokumentasi API platform tersebut.
Masa cetak kurva hasil pasaran sebenar bahasa Pine dan Mylanguage Mencetak secara berkala mengikut tetapan pada parameter templat bahasa Pine/Mylanguage, dan cetak apabila strategi ditutup sepenuhnya.
Bot Mylanguage mencetak bilangan garis pemicu isyarat, tetapi tidak ada operasi perintah.
Mungkin tetapan parameter templat Mylanguage tidak sesuai, seperti ketepatan, jumlah pesanan minimum dan parameter lain. Sebabnya adalah bahawa lapisan pemicu isyarat dinilai berjaya, dan pada lapisan pelaksanaan perdagangan, dinilai bahawa pesanan tidak dapat diletakkan kerana beberapa masalah dengan parameter, dan tidak ada pesanan yang sebenarnya diletakkan. Anda boleh merujuk kepada catatan berkaitan Mylanaguage:https://www.fmz.com/bbs-topic/9788 https://www.fmz.com/bbs-topic/9791
Kenapa bot tidak boleh menerima isyarat permintaan apabila saya sudah menetapkan webhook url amaran di Tradingview?
Periksa sama ada API KEY adalah betul dalam alamat url webhook. API KEY di sini merujuk kepada API KEY diperluaskan FMZ, yang ditetapkan dalam tetapan akaun di sudut kanan atas FMZ. Periksa sama ada ID bot dalam url webhook diisi dengan betul. Periksa sama ada hak istimewa API KEY diperluaskan FMZ diberikan dengan betul. Hak istimewa dipisahkan dengan koma dalam bahasa Inggeris. lalai adalah *, yang bermaksud semua hak istimewa. Jangan menulis nama fungsi dengan hak istimewa terus selepas *.
Mengapa simbol pasangan mata wang terhad dalam konfigurasi pasangan platform perdagangan apabila menambah bot? sejauh yang saya tahu, sebenarnya platform menyokong beberapa pasangan perdagangan.
Anda boleh menetapkan kawalan tersuai pasangan dagangan (ia hanya boleh ditetapkan dalam bot; untuk simbol di pusat data backtest terhad, ia tidak boleh ditetapkan dalam backtest), seperti berikut:
Mengapa ticker tidak boleh diperoleh apabila saya menjalankan FutuOpenD pada pelayan, dan boleh ticker diperoleh pada peranti tempatan?
Anda perlu memeriksa sama ada alamat IP pelayan berada di luar negara, kerana FutuOpenD mempunyai had pada alamat IP luar negara. Pada masa ini Stesen Antarabangsa FMZ hanya menyokong perniagaan cryptocurrency. Masa hadapan komoditi, sekuriti saham dan perniagaan lain disokong oleh stesen domestik FMZ, anda boleh log masuk:https://www.fmz.cn.
Tiada tindakan apabila strategi Mylanguage beroperasi, dan ia hanya mengemas kini TAQ pada mulanya.
Periksa sama ada anda menggunakan model harga dekat, yang boleh diperiksa oleh parameter templat strategi Mylanguage.
Komoditi niaga hadapan
Dalam CTP, hanya Bursa niaga hadapan Shanghai yang boleh digunakan untuk menutup kedudukan hari ini dan kedudukan semalam.
Ujian belakang tidak membezakankedudukan hari inidaripadaPosisi semalam, jadi ia tidak boleh menentukan untuk menutup kedudukan hari ini atau posisi semalam.
Beberapa simbol dalam bot, sepertiIF
, mempunyai lalai bahawa jika terdapat hari ini kedudukan, ia akan menutup hari ini kedudukan pertama. pada kesempatan ini, anda tidak boleh menentukan, dan anda hanya boleh menutup hari ini kedudukan pertama. oleh itu, maklumat kedudukan hari ini dan semalam kedudukan digabungkan menjadi satu.
Pada masa ini Stesen Antarabangsa FMZ hanya menyokong perniagaan cryptocurrency. Masa hadapan komoditi, sekuriti saham dan perniagaan lain disokong oleh stesen domestik FMZ, anda boleh log masuk:https://www.fmz.cn.
Kenapa cap masa Bar diBITMEX
Data K-line mempunyai satu tempoh lebih daripada lokasi yang sama dalam data K-line platform lain?
Sebabnya ialahBITMEX
mengambil masa akhir Bar semasa sebagai timestamp K-garis (beberapa tempoh K-garis tidak disokong olehBITMEX
antara muka, jadi cap masa tempoh itu dihasilkan oleh masa permulaan Bar).
Dalam strategi niaga hadapan komoditi,Profit
dalam data yang dikembalikan oleh fungsiexchange.GetPosition
Berbeza dengan keuntungan dan kerugian berubah yang dikira?
Sila rujuk dokumentasi API:https://www.fmz.com/api#exchange.getposition. Profit
dalamCTP protocol
didefinisikan sebagaiKeuntungan dan kerugian mengikut nilai pasaran, yang mewakili keuntungan dan kerugian kedudukan semasa anda berbanding harga penyelesaian hari dagangan sebelumnya.
Pada masa ini Stesen Antarabangsa FMZ hanya menyokong perniagaan cryptocurrency. Masa hadapan komoditi, sekuriti saham dan perniagaan lain disokong oleh stesen domestik FMZ, anda boleh log masuk:https://www.fmz.cn.
Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.
Periksa sama ada ciri
/*backtest
start: 2022-11-08 00:00:00
end: 2023-02-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
function main() {
var t = exchange.GetTicker()
exchange.Buy(t.Last - 10, 100/(t.Last - 10))
while(1){
t = exchange.GetTicker()
Sleep(1000)
}
}
Dalam backtest niaga hadapan Binance danBITMEX
Apakah kadar pembiayaan dikira dalam keluk keuntungan & kerugian yang dihasilkan oleh sistem backtest?
Kadar pembiayaan dikira dalam lengkung keuntungan & kerugian yang dihasilkan oleh sistem backtest.
Tombol
Anda perlu memeriksa jika proksi diaktifkan, yang akan mempengaruhi penyelesaian memuatkan fail di halaman
DalamTick sebenarbacktest, kenapa ada had 50MB?
Ujian belakang tahap pasaran sebenar menunjukkan dalam Tick sebenar, TAQ sebenarnya direkodkan detik demi detik. Di samping itu, terdapat gambaran pasaran dan data aliran pesanan, yang bervolume besar, jadi hanya 50MB jumlah data yang disokong.
Kenapa ia tidak berfungsi apabila saya mengubah suai parameter yuran dalam sistem backtest?
Dalam sistem backtest, apabila anda menetapkan semula parameter yuran, ia akan sah selepas anda memadamkan pasangan platform-dagang lama dan menambah pasangan platform-dagang lagi; pasangan platform-dagang yang telah ditambah sebelumnya tidak boleh diubah oleh kawalan di halaman.
Bagaimana untuk membuat gambar tersuai backtest memaparkan lebih banyak data?
Apabila anda melukis carta tersuai (olehChart
fungsi), jumlah data lukisan yang dipaparkan dalam backtest adalah berkaitan dengancartaparameter dalam tetapan backtest, dan parameter mengawal bilangan bar maksimum carta.chart.reset
fungsi digunakan untuk membersihkan sebahagian daripada data lama.
C++
backtest tidak memaparkan apa-apa, tidak ada kesalahan dilaporkan dan tiada log, dan tiada apa-apa pada halaman berubah selepas saya mengklik butang.
Beberapa kesilapanC++
contohnya: dalam pengiraan penunjuk, bilangan K-line yang tidak mencukupi membawa kepada perbandingan dan penghakimanNAN
dan jenis nombor selepasNAN
adalah dikira, yang akan menyebabkan kerosakan program.
python
Ujian belakang tersumbat!
Anda tidak boleh menulis fungsiSleep
dalamtry
pengesanan ralat, dan tulisan dalam imej akan menyebabkan jem.
Dalam backtest, mengapa hanya terdapat beberapa pilihan untuk platform, dan simbol untuk pasangan perdagangan juga terhad?
Terdapat terlalu banyak pasangan dagangan di platform, jadi hanya beberapa pasangan dagangan perwakilan dipilih untuk ujian dalam sistem backtest.kawalan adatuntuk menetapkan pasangan dagangan yang disokong oleh platform tersebut dalam bot.
Kenapa backtest tidak menyokong lebih banyak pasangan perdagangan?
Sistem backtest, buat masa ini, hanya menyokong mata wang arus perdana beberapa platform yang agak besar, dan beberapa mata wang belum disokong. Jika anda perlu menguji strategi, anda boleh mengganti mata wang dengan mata wang lain yang serupa dalam backtest. Sebenarnya, kecuali kutipan pasaran mungkin terjejas, menggunakan mata wang kripto lain yang serupa untuk backtest strategi adalah baik. Secara ringkasnya, sistem backtest cuba menyokong pasangan perdagangan arus perdana, dan backtest tidak harus sepadan dengan simbol tertentu. Maksudnya, jika strategi itu berkesan, walaupun ia adalah satu siri perubahan kutipan pasaran yang dijana secara rawak dengan peraturan perdagangan, atau kutipan pasaran mata wang lain, pada dasarnya harus ada keuntungan positif. Ini adalah universaliti strategi. Jika ia hanya dapat sepadan dengan tempoh sejarah atau berfungsi dengan baik pada simbol tertentu, maka strategi ini sebenarnya mempunyai risiko atau kelemahan yang berpotensi.
Dalam sistem backtest:P&L penutupan, P&L Holding, Margin, Harapan pulangan, USDT yang sedia ada
Penutupan P&L: Ia adalah keuntungan dan kerugian terkumpul daripada semua transaksi yang dibuka dan ditutup sebelum kedudukan semasa. Holding P&L: Ia adalah keuntungan dan kerugian kedudukan semasa, jika kedudukan semasa tidak dipegang, ia adalah 0, Margin: Jumlah margin yang diduduki oleh kedudukan semasa. Hasil yang dianggarkan: Keuntungan dan kerugian yang dihasilkan dengan menutup kedudukan semasa pada harga semasa (hipotetik) kemudian ditambahkan kepada keuntungan dan kerugian kumulatif kedudukan tertutup untuk mengira pulangan yang dianggarkan. USDT yang sedia ada: Jumlah USDT yang sedia ada untuk membuka kedudukan.
Pengiraan kadar kemenangan dalam sistem backtest
for (var i = 0; i < profits.length; i++) {
if (i == 0) {
if (profits[i][1] > 0) {
winningResult++
}
} else {
if (profits[i][1] > profits[i - 1][1]) {
winningResult++
}
}
if ((profits[i][1] + totalAssets) > maxAssets) {
maxAssets = profits[i][1] + totalAssets
maxAssetsTime = profits[i][0]
}
if (maxAssets > 0) {
var drawDown = 1 - (profits[i][1] + totalAssets) / maxAssets
if (drawDown > maxDrawdown) {
maxDrawdown = drawDown
maxDrawdownTime = profits[i][0]
maxDrawdownStartTime = maxAssetsTime
}
}
}
Di atas adalah algoritma kadar kemenangan, yang dikira seperti berikut: Selepas sistem backtest secara berkala mengira keuntungan dan kerugian terapung, kurva keuntungan dan kerugian terapung dikira. Mula dari titik pertama untuk membandingkan dengan titik seterusnya. Jika lebih tinggi, ia akan direkodkan sebagai kemenangan, dan jika lebih rendah, ia akan direkodkan sebagai kerugian, dan kemudian meneruskan perbandingan dengan titik seterusnya.
Di mana video pengajaran penggunaanLinux
Docker?
Bilibili:https://www.bilibili.com/video/BV1eZ4y1c73v?share_source=copy_web
Adakah perlu untuk menghentikan yang lama apabila saya mengemas kini docker, dan memadamkanrobot
program, dan jalankan lagi?
Anda boleh terus memadamkan lamarobot
fail program tanpa menghentikan docker, kemudian memuat turun pakej yang dikompres baru, dekompres barurobot
Pada masa ini, docker dikemas kini, tetapi bot yang sedang berjalan masih menggunakan versi lama dalam memori, dan versi terbaru hanya akan digunakan apabila bot dimulakan semula.
Pengerahan DockerLinux
pelayan
Langkah-langkah untuk memasang docker padaLinux
: https://www.bilibili.com/video/BV1eZ4y1c73v?share_source=copy_web
Apabila digunakanscreen
untuk menjalankan program dockerrobot
, -bash:screen:command not found
berlaku, dan docker tidak boleh berjalan.
Linux
Sistem tidak memasangscreen
Perisian, dan pemasangan umum sudah cukup.CentOS
perintah pemasangan sistem:yum install screen
.
Docker semasa sudah menyokongSSH
untuk mematikan suis untuk berjalan di latar belakang.screen
, anda boleh terus menggunakan perintah dalamrobot
direktori program docker:./robot -s node.fmz.com/xxxxxxx
, dan masukkan kata laluan akaun FMZ; apabilaLogin OK
Dilihat pada gambar di atas, ia bermakna penyebaran berjaya../robot -s node.fmz.com/xxxxxxx
adalah kod pengenalan unik setiap akaun FMZ, dan hanya memasukkan anda sendiri (selepas akaun masuk, melompat ke halaman docker, klik xxxxxxx
.
Di mana log bot apabila pelabuhan menjalankan bot?
DalamDB3
fail pangkalan data dalamlogs
direktori di mana program docker terletak, nama fail pangkalan data adalahid
bot, dan sambungan adalahdb3
.
DalamLinux
sistem, penggunaan./robot -l
untuk melihat nama-nama platform yang disokong oleh docker, platform mana yangexchange
Antara nama-nama?
Objek pertukaran yangnamaadalahexchange
merujuk kepada platform yangProtokol ambutiran protokol umum:https://www.fmz.com/api#通用协议
Halaman dok tidak memaparkan dok dalam format senarai.
Jika lebih daripada 5 pelabuhan ditambahkan, kawalan untuk memaparkan dalam format senarai akan muncul.
Adakah ia adalah normal terdapat docker tidak digunakan oleh saya dalam kotak combo parameter docker apabila membuat bot?
Docker awam yang disediakan oleh FMZ adalah alat permulaan cepat tambahan untuk pemula, jadi pengguna tidak perlu menggunakan docker semasa belajar, dan mudah bagi pemula untuk memulakan. Walau bagaimanapun, disyorkan untuk menggunakan docker peribadi untuk ujian bot sebenar. Lagipun, sumber perkakasan dan rangkaian docker awam dikongsi; platform akan mengekalkan docker awam ini dari semasa ke semasa.
Adakah rentetan alamat (./robot -s node.fmz.com/1234567
) eksklusif untuk saya atau orang lain, apabila menggunakan doker?
Alamat ini adalah pengenalan alamat setiap pengguna sendiri, dan nilai/1234567
Apabila menggunakan docker, klik butang
Variabel persekitaran sistem di mana doker terletak telah ditambahpython2.7
, tetapi mengapa ia masih diminta bahawa pembolehubah persekitaran tidak dapat dijumpai?
Bilakahwindows
sistem pertama memasangpython
, anda perlu menetapkan pembolehubah persekitaran dan mulakan semula untuk menjadikannya sah.
Kesilapan EOF
Python backtest diakhiri oleh pengecualian EOF (kerana kadang-kadang strategi mungkin gelung tanpa akhir).
Berapa banyak bot yang boleh dijalankan oleh pelabuhan?
Tidak ada had kepada jumlahnya, bergantung pada konfigurasi pelayan dan kerumitan strategi. Secara khusus, perlu dipertimbangkan sama ada beberapa bot ini mengakses antara muka platform yang sama (mengambil kira kekerapan panggilan antara muka, kerana lebih banyak bot bermakna kekerapan yang lebih tinggi); secara amnya 5 hingga 6 bot baik-baik saja.
Docker, Bot dan penjelasan konsep asas yang lain
Kandungan halaman
Jika kandungan bot dan halaman docker telah hilang, apabila bot dan docker berjalan dengan normal di pelayan, anda perlu membaca mesej laporan ralat penyemak imbas, untuk melihat sama ada penyemak imbas mempunyai pemalam yang dipasang, yang menyebabkan masalah pencemaran pembolehubah global.
Untuk strategi rasmi untuk menyewa dan menyewa pelayan dok dengan satu klik, adakah yuran akan diperbaharui secara automatik, selagi baki akaun FMZ mencukupi?
Strategi yang disewa tidak akan secara automatik mengenakan bayaran semula, dan sewa satu klik doker akan secara automatik mengenakan semula.
Di mana fungsi templat? Saya mahu memisahkan beberapa fungsi ke dalam templat, supaya strategi lain juga boleh menggunakannya.
Penerangan dalamFMZ API
Dokumen:https://www.fmz.com/api#模板类库
AdakahwexApp
platform simulasi FMZ simulasi bot hanya menyediakanBTC_USDT
Bagaimana saya boleh menyesuaikan pasangan perdagangan lain?
wexApp
robot simulasi hanya menyokong beberapa pasangan perdagangan arus perdana buat masa ini, dan tidak semua pasangan perdagangan disimulasikan.
Saya mempunyai masalah panggilan serentak ke API yang dilanjutkan, iaitu, kesilapan pengesahan
Anda boleh mencipta pelbagai platform FMZ meluasAPI KEY
s untuk permintaan serentak.
Adakah utas debug yang dicipta pada docker merekod status log apabila menggunakan alat debug?
Apabila alat debug dijalankan, jika tidak ada yang diubah buat kali kedua, objek pertukaran yang dicipta sebelum ini akan dikekalkan dan tidak akan dibebaskan.mod mata wangatauMod leverage.
Kenapa apabila saya mendaftarkanwexApp
simulasi platform dan log masuk, tidak ada aset, kedua-dua dalam dompet dan bahagian mata wang?
Selepas mendaftar, anda perlu mengesahkan e-mel anda untuk mengaktifkan akaun anda, dan anda boleh mengaktifkan akaun anda di pusat peribadi.
Maklumat log agak panjang dan terputus, dan pada akhirnya ia menunjukkan "... Tetapi saya perlu melihat struktur data, apa yang perlu saya lakukan?
Penyelesaiannya ialah menggunakanAlat DebugpadaDasbor, dan gunakanreturn
pernyataan dalam alat debugging untuk mengembalikan kandungan yang akan dipaparkan, dan paparan kandungan tidak akan dipotong.
Apakah fungsi yang bermula dengan$.
dalamJavaScript
Maksud strategi?
Fungsi dengan permulaan$.
adalah fungsi eksport templat, serupa dengan fungsi antara muka modul. Lihat penerangan dalam dokumentasi API:https://www.fmz.com/api#模板类库
Fungsi eksportpython
strategi yang diisytiharkan denganext.
Pada mulanya.
Bagaimana untuk melukis garis lurus pada carta pasaran hasil backtest?
Terdapat dua jenis carta yang akhirnya dipaparkan dalam backtest: satu dihasilkan oleh sistem, yang tidak boleh dikawal oleh strategi.Chart
fungsi antara muka API FMZ dalam kod strategi.https://www.fmz.com/api#chart...
Saya telah memadam Google validator pada telefon saya secara tidak sengaja, bagaimana untuk menetapkan semula Google validator? Pada halaman tetapan akaun di platform, saya tidak dapat mencari tempat untuk menetapkan semula melalui e-mel.
Anda boleh log masuk ke platform FMZ dengan penyemak imbas lain, dan apabila anda perlu memasukkan kod pengesahan Google, klik
PlatformAPI KEY
kawalan keselamatan
PeraturanAPI KEY
FMZ tidak menyimpan maklumat teks biasa akaun platform pengguna, dan menggunakanHttps
protocol.
Isu keselamatan strategi
Untuk itu, anda boleh merujuk kepada:https://www.fmz.com/bbs-topic/1657.
Sistem bil FMZ
Standard bil untuk perdagangan langsung:
Waktu penagihan yang disebutkan merujuk kepada masa pemprosesan untuk operasi penagihan. Oleh kerana masa yang diperlukan untuk operasi pemprosesan ini, masa potongan mungkin ditangguhkan. Sebagai contoh, jika masa penagihan semasa adalah 9:00, mungkin masa pemprosesan untuk operasi penagihan ini adalah 9:02 (seperti yang ditunjukkan dalam tangkapan skrin). Ini akan diselaraskan semasa operasi penagihan seterusnya (waktu pengurangan seterusnya akan menjadi 10:00, bukan penagihan terlebih dahulu).
Perpustakaan talib mengendalikan data dengan ketepatan yang terhad
Jika data sangat kecil ia akan dipotong dan akhirnya dipaparkan sebagai 0. Sila rujuk:https://github.com/TA-Lib/ta-lib-python/issues/157