Pengenalan
Pakejaiomql
ialah rangka kerja dagangan algoritma lanjutan yang meningkatkan dan memanjangkan fungsi perpustakaan bersepadu MetaTrader5 Python (metatrader5
). Tujuannya adalah untuk memudahkan proses membina bot dagangan tersuai sambil menyediakan set alat dan abstraksi yang kaya khusus untuk perdagangan algoritma. aiomql
Direka bentuk dengan mengambil kira fleksibiliti dan kebolehsuaian, rangka kerja ini boleh memenuhi keperluan pelbagai pengguna, daripada mereka yang mencari alternatif tak segerak yang ringan kepada integrasi MetaTrader5 Python, kepada pembangun membina robot perdagangan berbilang strategi yang kompleks.
Permintaan
Tutorial ini memperkenalkan versi keempat rangka kerja aiomql
, yang menawarkan peningkatan ketara berbanding versi sebelumnya dari segi kelajuan, kecekapan dan reka bentuk. Sorotan utama keluaran ini ialah kemasukan ciri ujian belakang yang berkuasa, membolehkan pengguna menguji strategi dagangan menggunakan data sejarah sebelum menggunakannya secara langsung.
Walaupun kebiasaan dengan aiomql
versi awal rangka kerja boleh meningkatkan pemahaman anda, ia bukanlah prasyarat. Tutorial ini direka bentuk untuk mudah difahami walaupun oleh pemula yang tidak pernah menggunakan rangka kerja. Walau bagaimanapun, memahami sepenuhnya dan menggunakan konsep yang diliputi memerlukan pengetahuan kerja Python dan pemahaman asas perdagangan algoritma.
Walaupun artikel ini bertujuan terutamanya sebagai pengenalan kepada rangka kerja dan bukannya tutorial langkah demi langkah, ia mengandungi coretan kod yang memerlukan Python 3.11. Jika anda menghadapi masalah keserasian dalam NumPy, anda boleh menyelesaikannya dengan memasang versi yang disokong menggunakan arahan berikut:
<code class="language-bash">pip install aiomql pip uninstall numpy pip install 'numpy<v2></v2></code>
aiomql
Rangka kerja dibahagikan kepada tiga sub-pakej utama (teras, sumbangan dan lib), serta modul peringkat atas utils.py
yang menyediakan fungsi utiliti yang digunakan sepanjang rangka kerja. Untuk kemudahan, semua kelas, fungsi, pemalar dan komponen lain boleh diakses secara langsung dari peringkat atas.
Seperti yang dinyatakan sebelum ini, pustaka aiomql
ialah rakan tak segerak bagi pakej metatrader5
. Fungsi ini dilaksanakan melalui kelas MetaTrader, yang merupakan komponen asas rangka kerja. Kelas ini mereplikasi kefungsian pustaka metatrader5
, menyediakan fungsi, pemalar dan jenis khusus sebagai kaedah dan sifat.
metatrader5
Fungsi dalam pakej diakses sebagai kaedah contoh tak segerak dalam kelas MetaTrader, mengekalkan nama asalnya. Reka bentuk ini memastikan integrasi yang lancar untuk pengguna yang biasa dengan perpustakaan asal, sambil mengambil kesempatan daripada faedah pengaturcaraan tak segerak.
Kelas MetaTrader direka bentuk sebagai pengurus konteks tak segerak, memudahkan pengurusan terminal MetaTrader. Selepas memasuki konteks, ia secara automatik memulakan terminal dan melaksanakan operasi log masuk. Semasa keluar, ia memastikan pembersihan dan pemotongan sumber yang betul walaupun ralat berlaku. Struktur ini menyediakan kaedah pengurusan kitaran hayat yang ringkas dan cekap, menjadikannya amat sesuai untuk aliran kerja tak segerak.
Versi bukan async bagi fungsi ini masih boleh diakses, tetapi diawali dengan garis bawah (_) untuk menunjukkan bahawa ia boleh dianggap sebagai kaedah peribadi.
MetaBackTester ialah subkelas MetaTrader yang digunakan khusus untuk ujian belakang. Ia menggunakan contoh BackTestEngine, yang boleh disediakan semasa permulaan atau diambil daripada konfigurasi. Apabila config.mode
ditetapkan kepada "ujian belakang", kelas ini secara automatik menggantikan MetaTrader dalam aplikasi yang bergantung pada sambungan terminal, memastikan penyepaduan lancar kefungsian ujian belakang.
Base
dan _Base
ialah komponen asas yang membentuk kelas lain dalam rangka kerja, menyediakan utiliti asas seperti pengesahan data, siri dan akses lancar kepada MetaTrader atau MetaBackTester bergantung pada sama ada sistem dalam perdagangan langsung atau mod ujian belakang Contoh. Walaupun kelas ini jarang digunakan secara langsung, ia memastikan kestabilan dan kebolehpercayaan keseluruhan sistem dengan berfungsi sebagai tulang belakang untuk fungsi yang lebih khusus.
Kelas Pangkalan menyediakan fungsi pemprosesan data yang berkuasa, memfokuskan pada pengesahan dan penyirian. Semasa instantiasi, hanya sifat yang dianotasi secara eksplisit dalam badan kelas atau diwarisi daripada kelas induk boleh diberikan nilai, dan nilai ini mesti mematuhi sepenuhnya jenis yang ditentukan, sekali gus memastikan pengurusan data berstruktur dan selamat jenis.
exclude
(set): Satu set nama sifat untuk dikecualikan apabila mengakses harta atau menjana perwakilan kamus objek. include
(set): Koleksi nama atribut untuk disertakan secara eksplisit. Koleksi ini mengatasi koleksi exclude
jika kedua-dua koleksi disediakan. dict
: Atribut yang mengembalikan semua atribut sebagai kamus, menggunakan penapis yang dinyatakan dalam koleksi exclude
dan include
. set_attributes(**kwargs)
: Kaedah untuk menetapkan sifat contoh secara dinamik. Ia mengesahkan input dan memastikan ia mempunyai jenis yang betul. get_dict(exclude: set = None, include: set = None)
: Kaedah yang mengembalikan sifat tika sebagai kamus, membenarkan penapisan exclude
dan include
ditentukan. Jika kedua-dua parameter dibekalkan, parameter include
diutamakan berbanding parameter exclude
. Kelas ini ialah subkelas Base
dengan sifat dan fungsi tambahan khusus untuk menyambung ke terminal.
config
: Mewakili contoh konfigurasi. Sifat ini mengandungi semua tetapan konfigurasi yang diperlukan yang diperlukan untuk kelas berjalan. mt5
(MetaTrader | MetaBackTester): Menyediakan contoh MetaTrader atau MetaBackTester, ditentukan oleh sifat config
objek mode
. Jenis contoh bergantung pada sama ada sistem berada dalam mod dagangan langsung (MetaTrader) atau mod ujian belakang (MetaBackTester). Pustaka MetaTrader5 menyusun sejumlah besar pemalarnya ke dalam penghitungan khusus, meningkatkan kejelasan dan kefungsian untuk pembangun. Penghitungan ini mewakili pelbagai operasi dagangan, jenis pesanan, jangka masa dan banyak lagi, memudahkan penggunaannya dengan mengumpulkan pemalar berkaitan di bawah kategori intuitif. Setiap penghitungan menyediakan sifat dan, jika berkenaan, kaedah atau sifat tambahan yang membolehkan kefungsian seperti menukar, membalikkan atau memperoleh nilai. Organisasi ini mengurangkan ralat, meningkatkan kebolehbacaan kod dan menjadikan pemalar lebih mudah untuk diurus, terutamanya dalam aplikasi perdagangan yang kompleks.
Enumerasi seperti TradeAction
, OrderFilling
dan TimeFrame
merangkum pemalar sebagai nilai integer sambil menyediakan perwakilan rentetan gaya Python untuk kebolehgunaan yang lebih baik. Sesetengah penghitungan (seperti TimeFrame
) mengandungi kaedah lanjutan untuk menukar saat kepada selang pratakrif atau mengakses semua nilai yang mungkin. Dengan menyusun pemalar ini secara sistematik, perpustakaan MetaTrader5 memastikan pengalaman yang lebih cekap dan mesra pembangun, memudahkan interaksi dengan operasi dagangan dan data platform.
Modul model menyediakan set kelas pemprosesan data yang teratur yang dibina pada struktur perpustakaan MetaTrader5. Semua kelas mewarisi daripada kelas Asas, yang menambahkan fungsi seperti pengesahan data, penyirian dan penapisan untuk memudahkan penggunaannya. Kelas ini mewakili pelbagai entiti berkaitan perdagangan seperti OrderSendResult
, SymbolInfo
dan TradeRequest
, membolehkan pembangun berinteraksi dengan cekap dengan persekitaran dagangan MetaTrader5.
Setiap kelas merangkum sifat dan ciri khusus yang berkaitan dengan entiti transaksinya yang sepadan, memastikan pengurusan data yang mantap dan berstruktur. Contohnya, SymbolInfo
menyediakan maklumat terperinci tentang instrumen kewangan, manakala TradeRequest
membenarkan penciptaan dan penyerahan operasi dagangan. Reka bentuk modular ini meningkatkan kebolehbacaan, memudahkan aliran kerja perdagangan yang kompleks dan memastikan ketekalan data dan kemudahan penggunaan untuk pembangun yang memanfaatkan MetaTrader5 dalam aplikasi mereka.
TaskQueue mengurus tugas latar belakang bot atau penguji belakang dengan cekap menggunakan contoh asyncio.PriorityQueue
untuk pelaksanaan serentak. Ia berjalan secara berterusan di latar belakang, membenarkan penyepaduan lancar dengan komponen lain seperti kelas Pedagang yang menggunakannya untuk merekodkan data pelaksanaan pasca perdagangan. Tugasan ditambahkan pada baris gilir melalui kaedah add
, tetapi tugasan itu mesti terlebih dahulu dibalut dengan QueueItem
yang mengandungi metadata tugasan seperti parameter, keutamaan dan keperluan penyiapan.
Dengan bilangan pekerja yang boleh dikonfigurasikan, tetapan tamat masa dan keutamaan tugas, TaskQueue memastikan pengurusan tugas yang mantap dan pengendalian ralat. Ia menyokong mod pelaksanaan terhad atau tidak terhingga dan dengan anggun boleh membersihkan tugas yang tinggal sebelum ditamatkan berdasarkan keutamaan. Reka bentuk ini meningkatkan aliran kerja dengan memunggah dan mengurus operasi latar belakang secara tidak segerak, memastikan kefungsian lancar dan boleh dipercayai bagi persekitaran perdagangan atau ujian yang kompleks.
Account
ialah singleton yang digunakan untuk mengurus butiran akaun broker, memastikan hanya satu contoh wujud sepanjang hayat permohonan. Ia mewarisi daripada Base
dan _AccountInfo
serta menyediakan antara muka berstruktur dan mesra pengguna untuk mengakses maklumat khusus akaun. Seni bina ini memastikan konsistensi dan menghalang contoh pendua, memusatkan pengurusan akaun dalam aplikasi.
Sebagai AsyncContextManager, kelas Account
memudahkan pengurusan sumber dengan mengautomasikan proses permulaan dan pembersihan. Apabila memasuki konteksnya, ia memulakan terminal MetaTrader dan log masuk ke akaun yang ditentukan. Semasa keluar, ia memastikan sumber ditutup dan dibersihkan dengan betul. Pendekatan yang dipermudahkan ini meningkatkan kebolehpercayaan pemprosesan sumber, menjadikan pengurusan akaun lebih intuitif dan mengurangkan kemungkinan ralat semasa operasi dagangan.
connected
(bool): Menunjukkan sama ada log masuk berjaya dan sambungan ke terminal aktif. Mengembalikan Benar jika akaun disambungkan. refresh()
: Mengemas kini contoh akaun dengan mendapatkan semula butiran akaun terkini daripada terminal, memastikan data akaun kekal terkini. RAM
bertanggungjawab untuk menguruskan penilaian risiko dan pengurusan risiko semasa aktiviti perdagangan. Ia mempunyai atribut seperti risk_to_reward
, fixed_amount
, min_amount
, max_amount
dan risk
, yang membolehkan peniaga mentakrif dan mengawal pendedahan risiko mereka dengan berkesan. Hartanah ini memberikan fleksibiliti untuk menetapkan parameter risiko, jumlah risiko minimum dan maksimum, dan nisbah risiko kepada ganjaran untuk setiap dagangan.
Kelas ini termasuk kaedah seperti get_amount
, yang mengira jumlah risiko untuk setiap dagangan berdasarkan margin dan peratusan risiko yang tersedia, dan check_losing_positions
dan check_open_positions
, yang memastikan kerugian atau jumlah kedudukan kekal dalam pratakrif dalam had. Dengan menyepadukan keupayaan ini, kelas RAM menyediakan pendekatan komprehensif kepada pengurusan risiko, meningkatkan keupayaan membuat keputusan dan mempromosikan amalan perdagangan yang lebih selamat.
risk
(terapung): Peratusan modal berisiko bagi setiap dagangan, dinyatakan sebagai integer (cth. 1 bermakna 1%). Lalai ialah 1. risk_to_reward
(terapung): Nisbah risiko-ganjaran, menunjukkan hubungan antara potensi risiko dan ganjaran. Lalai ialah 2. fixed_amount
(terapung): Amaun tetap kepada risiko setiap dagangan, jika ditetapkan, mengatasi pengiraan berasaskan peratusan. get_amount()
: Mengira dan mengembalikan jumlah risiko untuk setiap dagangan berdasarkan sifat yang dikonfigurasikan seperti risiko, fixed_amount
, min_amount
dan max_amount
. RAM
paling baik digunakan dalam kelas Trader, yang boleh digunakan sebelum membuat pesanan.
Candle
dan Candles
ialah alatan tersuai untuk mengurus bar harga yang diambil dari terminal. Kelas Candle
merangkum data bar harga tunggal, memastikan sifat yang diperlukan seperti buka, tinggi, rendah dan tutup (OHLC) hadir dalam setiap kejadian. Ia menyokong protokol Python, termasuk pencincangan, lelaran dan perbandingan, sambil menyediakan kaedah seperti keys()
dan values()
untuk mengurus sifat. Selain itu, ia secara dinamik menambah sifat yang diluluskan semasa instantiasi, membenarkan penyesuaian yang fleksibel.
Candles
bertindak sebagai bekas untuk berbilang objek Lilin, disusun dalam susunan kronologi. Ia menggunakan panda DataFrame
untuk menyimpan dan mengurus datanya, membenarkan penyepaduan yang lancar dengan alatan seperti panda-ta untuk analisis teknikal lanjutan. Kelas ini berfungsi sebagai asas yang kuat untuk membangunkan strategi dagangan dengan menyokong pelbagai protokol Python seperti penghirisan dan lelaran serta melanjutkan fungsi melalui sifat khusus seperti jangka masa. Fleksibilitinya memastikan penggunaan yang kerap dalam aliran kerja analisis yang kompleks.
time
(int): masa mula kitaran lilin. open
(terapung): Harga pembukaan lilin. high
(terapung): Harga tertinggi yang dicapai semasa tempoh lilin. low
(terapung): Harga terendah yang dicapai semasa tempoh lilin. close
(terapung): Harga penutup lilin. tick_volume
(terapung): Jumlah kutu dalam tempoh lilin. real_volume
(terapung): Jumlah dagangan sebenar semasa tempoh lilin. spread
(terapung): tersebar dalam tempoh lilin. Index
(int): Sifat tersuai yang menunjukkan kedudukan lilin dalam jujukan. set_attributes(**kwargs)
: Menetapkan sifat contoh lilin secara dinamik daripada hujah kata kunci yang dibekalkan. is_bullish()
: Mengembalikan Benar jika lilin adalah kenaikkan harga (harga penutup lebih besar daripada atau sama dengan harga pembukaan), False sebaliknya. is_bearish()
: Mengembalikan True jika candle menurun (harga penutup kurang daripada harga pembukaan), False sebaliknya. dict(exclude: set = None, include: set = None)
: Mengembalikan kamus atribut lilin Anda boleh menggunakan koleksi exclude
atau include
untuk menapis atribut. Index
(Siri[int]): Siri panda yang mengandungi indeks semua lilin dalam objek. time
(Siri[int]): Siri panda yang mengandungi semua masa lilin dalam objek. open
(Siri[float]): Siri panda yang mengandungi harga pembukaan semua lilin dalam objek. high
(Siri[float]): Siri panda yang mengandungi harga tertinggi bagi semua lilin dalam objek. low
(Siri[float]): Siri panda yang mengandungi harga terendah bagi semua lilin dalam objek. close
(Siri[float]): Siri panda yang mengandungi harga penutup semua lilin dalam objek. tick_volume
(Siri[float]): Siri panda yang mengandungi jumlah tanda semua lilin dalam objek. real_volume
(Siri[float]): Siri panda yang mengandungi isipadu sebenar semua lilin dalam objek. spread
(Siri[float]): Siri panda yang mengandungi semua hamparan lilin dalam objek. Candle
(Jenis[Candle]): Kelas yang digunakan untuk mewakili satu lilin dalam objek. timeframe
(Frame Masa): Rangka masa lilin, dikira daripada cap masanya. data
(DataFrame): panda DataFrame yang mengandungi data asas untuk semua lilin dalam objek. rename(inplace=True, **kwargs)
: Namakan semula lajur bagi DataFrame asas. ta
: akses perpustakaan panda-ta dengan melakukan analisis teknikal secara langsung pada lilin melalui atribut data
. ta_lib
: Menyediakan akses kepada perpustakaan ta untuk analisis teknikal tambahan, gunakannya dengan fungsi yang memerlukan anda menghantar objek Siri atau DataFrame sebagai hujah. columns
: Mengembalikan nama lajur bagi DataFrame asas.Ticks
dan Tick
direka untuk mengurus data Tick dari terminal dagangan, serupa dengan kelas Candle
. Kelas Tick
mewakili satu Tick dan sifatnya termasuk bida, tanya, harga terakhir dan volum, memastikan setiap tika merangkum data yang diperlukan untuk satu peristiwa Tick. Ia menyokong pengurusan atribut dinamik dan menyediakan akses seperti kamus, menjadikannya boleh disesuaikan dan mudah dikendalikan dalam konteks yang berbeza.
Ticks
bertindak sebagai bekas untuk berbilang objek Tick, menyimpan data dalam panda DataFrame
untuk manipulasi dan analisis yang cekap. Ia menyokong lelaran, penghirisan dan pelbagai operasi data, membenarkan penyepaduan yang lancar dengan alatan seperti panda-ta untuk analisis teknikal. Kelas ini penting untuk memproses sejumlah besar data tanda dalam sistem perdagangan, menyediakan struktur yang berkuasa untuk analisis data masa nyata atau sejarah.
_Symbol_
menyediakan struktur yang berkuasa untuk merangkum data instrumen kewangan, menyokong pengiraan dan operasi yang diperlukan sebelum memulakan transaksi. Sebagai subkelas _Base
dan SymbolInfo
, ia menyepadukan pelbagai jenis hartanah dan kaedah untuk mengendalikan instrumen kewangan dengan cekap. Kelas ini boleh disesuaikan untuk instrumen yang berbeza daripada broker yang berbeza, memastikan kebolehsuaian merentas platform dagangan.
Kelas Symbol
memudahkan tugas perdagangan yang kompleks dengan kaedah utiliti untuk mengakses data Tick semasa, mengurus kedalaman pasaran dan melaksanakan penukaran mata wang. Ia menyediakan fungsi untuk memulakan simbol, mengesahkan volum, dan mendapatkan semula kadar sejarah atau tanda, menjadikannya bahagian penting dalam membangunkan strategi perdagangan. Reka bentuknya memastikan bahawa pembangun boleh melanjutkan dan menyesuaikan tingkah lakunya untuk memenuhi keperluan perdagangan tertentu.
Symbol
ialah kelas yang kaya dengan ciri. Untuk tujuan artikel ini, saya hanya menyentuh beberapa yang penting yang paling mungkin anda gunakan. tick
dan account
ialah satu-satunya sifat kelas Symbol
, tidak seperti yang ditakrifkan dalam kelas induk SymbolInfo
.
tick
(Tick): Mewakili harga semasa Tick bagi instrumen kewangan, menyediakan data pasaran masa nyata. account
(Akaun): Contoh akaun dagangan semasa yang dikaitkan dengan simbol. __init__(*, name: str, **kwargs)
: Mulakan contoh simbol. Atribut name
diperlukan dan mesti sepadan dengan nama simbol yang ditentukan oleh broker dalam terminal. initialize()
: Mengisi contoh simbol dengan mendapatkan semula tanda harga dan butiran terkini daripada terminal. Jika berjaya, sifat select
ditetapkan kepada Benar dan semua sifat akan diisi dengan data pelayan. convert_currency(*, amount: float, from_currency: str, to_currency: str)
: Menukar amaun yang ditentukan daripada satu mata wang kepada mata wang lain. amount_in_quote_currency(*, amount: float)
: Menukar amaun daripada mata wang akaun kepada mata wang sebut harga jika mata wang akaun berbeza daripada mata wang sebut harga. Kaedah ini amat berguna untuk melaksanakan pengiraan pengurusan risiko. info_tick
: Dapatkan tanda harga semasa instrumen kewangan. symbol_select(enable: bool = True)
: Menambah simbol pada atau mengalih keluarnya daripada tetingkap MarketWatch. check_volume(volume: float)
: Sahkan bahawa volum transaksi yang ditentukan berada dalam had yang dibenarkan dan laraskan jika perlu. round_off_volume(volume: float, round_down: bool = False)
: Membundarkan kelantangan ke langkah sah terdekat. compute_volume
: Mengira volum yang sesuai untuk perdagangan. copy_rates_from_pos(timeframe, start_position=0, count=500)
: Dapatkan bar bermula daripada indeks tertentu. copy_rates_from(timeframe, date_from, count=500)
: Dapatkan semula kadar pertukaran sejarah (bar) bermula dari tarikh yang dinyatakan. copy_ticks_from(date_from, count=100, flags=CopyTicks.ALL)
: Dapatkan data Tandakan bermula dari tarikh yang ditentukan. Symbol
ialah alat serba boleh dan kaya dengan ciri yang direka untuk mengurus instrumen kewangan, menyediakan kaedah yang diperlukan untuk mendapatkan dan mengubah data. Walaupun pengenalan ini memfokuskan pada fungsi utama seperti permulaan, penukaran mata wang dan mendapatkan semula data Tick terkini, banyak lagi keupayaannya akan diterokai dalam perbincangan akan datang. Ini termasuk menyepadukannya ke dalam sistem perdagangan algoritma dan menunjukkan kesesuaiannya untuk pelbagai kes penggunaan.
Sumbangan yang ketara ialah kelas ForexSymbol
, yang merupakan lanjutan khusus daripada kelas Symbol
dan direka khusus untuk dagangan Forex. Subkelas ini direka bentuk untuk mengendalikan keperluan unik dagangan pasangan mata wang, seterusnya menunjukkan fleksibiliti dan potensi penyesuaian kelas Symbol
dalam senario dagangan yang berbeza.
Order
memudahkan pengurusan pesanan dagangan dengan menggabungkan hartanah dan kaedah yang berkaitan, menjadikannya lebih mudah untuk menyemak, mengesahkan dan menghantar pesanan. Sebagai subkelas _Base
dan TradeRequest
, ia mewarisi fungsi berkuasa sambil memberikan kemudahan tambahan. Dengan menetapkan nilai lalai yang wajar untuk sifat seperti action
, type_time
dan type_filling
, ia meminimumkan pertindihan kod semasa instantiasi, memastikan kecekapan dan kejelasan dalam operasi transaksi.
Kelas ini memudahkan tugas teras seperti mendapatkan semula pesanan yang belum selesai, menyemak kecukupan dana dan mengira margin, untung dan rugi. Penyepaduan kaedah seperti send()
dan check()
memastikan aliran kerja yang lancar untuk memulakan dan mengesahkan operasi dagangan, manakala utiliti seperti calc_margin()
dan calc_profit()
memudahkan analisis pra-dagang. Reka bentuknya menjadikannya alat penting untuk pelaksanaan strategi perdagangan algoritma yang cekap.
__init__
: Mulakan contoh tertib menggunakan hujah kata kunci yang mesti sah TradeRequest
atribut. Nilai lalai untuk action
ialah DEAL
, untuk type_time
ialah DAY
dan untuk type_filling
ialah FOK
, walaupun ia boleh disesuaikan semasa instantiasi. check(**kwargs)
: Sahkan pesanan anda sebelum meletakkannya. Sebarang hujah kata kunci yang disediakan akan mengemas kini objek permintaan. send
: Hantar pesanan ke terminal untuk dilaksanakan. calc_margin
: Mengira margin yang diperlukan untuk membuat dagangan. calc_profit
: Kira potensi keuntungan perdagangan. calc_loss
: Kira potensi kerugian perdagangan. request
: Sifat ini mengembalikan objek permintaan transaksi sebagai kamus. Trader
bertindak sebagai kelas asas abstrak yang kaya dengan utiliti untuk mengurus pesanan perdagangan. Ia menyediakan kaedah asas untuk mencipta dan mengurus pelbagai jenis pesanan, sambil mengendalikan proses utama seperti pengesahan, penghalaan dan rakaman transaksi. Kelas ini perlu melaksanakan place_trade
kaedah dalam subkelasnya untuk memastikan fleksibiliti dalam menyesuaikan diri dengan strategi dagangan tertentu.
Ciri utama termasuk cara untuk menetapkan tahap stop loss dan ambil untung berdasarkan pip atau pip, buat pesanan dengan atau tanpa tahap stop loss dan mengira jumlah yang sesuai untuk perdagangan. Kelas ini disepadukan dengan contoh Simbol yang dimulakan dengan betul dan contoh RAM
pilihan untuk penilaian risiko, membolehkan pengurusan transaksi yang lancar. Ia juga menyokong rakaman keputusan transaksi untuk memudahkan pengesanan dan analisis transaksi yang dilaksanakan.
modify_order(**kwargs)
: Ubah suai atribut pesanan menggunakan parameter kata kunci yang disediakan. modify_ram(**kwargs)
: Mengemas kini sifat contoh RAM (Penilaian dan Pengurusan Risiko) menggunakan hujah kata kunci yang dibekalkan. check_order
: Sahkan pesanan anda sebelum meletakkannya untuk memastikan ia memenuhi syarat yang diperlukan. send_order
: Hantar pesanan kepada broker untuk dilaksanakan. record_trade(*, result: OrderSendResult, parameters: dict = None, name: str = "")
: Log butiran transaksi ke fail CSV atau JSON dan wakilkan tugas kepada contoh config.task_queue
. Termasuk keputusan dagangan dan parameter strategi (jika disediakan). contrib
disertakan dengan dua peniaga mudah, ScalpTrader
dan SimpleTrader
, di mana ScalpTrader
ditunjukkan di bawah.
Session
dan Sessions
menyediakan rangka kerja yang berkuasa untuk mengurus dan melaksanakan masa dagangan. Session
mewakili tempoh masa yang ditakrifkan dalam UTC, dengan masa mula dan masa tamat, dan boleh ditentukan sebagai integer atau objek datetime.time
. Sesi ini boleh mencetuskan tindakan yang dipratentukan, seperti menutup semua dagangan atau hanya menguntungkan/kehilangan kedudukan, atau tindakan tersuai yang ditentukan pengguna. Ini membolehkan strategi mempunyai kawalan yang tepat ke atas aktiviti perdagangan dalam tempoh tertentu.
Sessions
mengumpulkan berbilang Session
kejadian ke dalam koleksi yang diisih, menjadikannya mudah untuk mengurus tempoh dagangan yang bertindih atau berturut-turut. Ia bertindak sebagai pengurus konteks tak segerak, memantau masa semasa secara berterusan untuk menentukan sesi aktif. Jika tiada sesi aktif, contoh Sessions
menjeda operasi dagangan sehingga sesi berjadual seterusnya bermula, memastikan pematuhan dengan tetingkap dagangan yang ditentukan.
Dengan menyepadukan kelas ini, strategi dagangan boleh dengan mudah menggabungkan peraturan berasaskan masa, dengan itu meningkatkan ketepatan dan kebolehpercayaan mereka. Ciri ini amat berguna dalam sistem automatik yang memerlukan pematuhan ketat pada waktu dagangan (seperti Forex atau dagangan pasaran saham) atau dalam sistem automatik yang memerlukan operasi diselaraskan dengan selang masa yang telah ditetapkan.
start
(datetime.time): Masa mula sesi dalam UTC. end
(datetime.time): Masa tamat sesi dalam UTC. on_start
(str): Menentukan tindakan untuk dilakukan apabila sesi bermula, seperti "close_all"
, "close_win"
, "close_loss"
atau tindakan tersuai. on_end
(str): Menentukan tindakan yang akan dilakukan apabila sesi tamat, serupa dengan on_start
. custom_start
(Boleh Dipanggil): Fungsi tersuai pilihan untuk dilaksanakan apabila sesi bermula. custom_end
(Boleh Dipanggil): Fungsi tersuai pilihan untuk dilaksanakan apabila sesi tamat. name
(str): Nama sesi, jika tidak diberikan, lalai kepada gabungan masa mula dan masa tamat. in_session
: Semak sama ada masa semasa berada dalam sesi. begin
: Lakukan tindakan yang ditentukan oleh on_start
atau custom_start
pada permulaan sesi. close
: Lakukan tindakan yang ditentukan oleh on_end
atau custom_end
pada akhir sesi. duration
: Mengembalikan tempoh sesi sebagai objek Tempoh dengan jam, minit dan saat. close_all
: Tutup semua kedudukan terbuka. close_win
: Tutup semua kedudukan yang menguntungkan. close_loss
: Tutup semua kedudukan yang kalah. action(action: str)
: Lakukan tindakan yang ditentukan, seperti menutup kedudukan atau mencetuskan fungsi tersuai. until
: Mengira masa dalam saat dari masa semasa hingga permulaan sesi. sessions
(senarai[Sesi]): Senarai Session
objek yang diisih mengikut masa mulanya. current_session
(Sesi | Tiada): Sesi yang sedang aktif (jika ada). find(moment: datetime.time = None)
: Cari dan kembalikan perbualan yang mengandungi masa yang ditentukan. Jika tiada masa disediakan, masa semasa digunakan. find_next(moment: datetime.time = None)
: Cari dan kembalikan sesi seterusnya selepas masa yang ditetapkan. Jika tiada masa disediakan, ia lalai kepada masa semasa. check
: Pantau sesi semasa. Jika tiada sesi aktif, ia akan menunggu sehingga sesi seterusnya bermula. config
: Contoh konfigurasi yang dikaitkan dengan sesi, menentukan mod (langsung atau ujian belakang). Strategy
ialah rangka kerja asas untuk membangunkan strategi dagangan dan boleh disepadukan dengan lancar dengan Bot
dan Backtester
. Sebagai kelas asas abstrak, ia dilengkapi dengan banyak ciri tetapi perlu melaksanakan kaedah trade
dalam kelas terbitan. Kaedah ini berfungsi sebagai logik perdagangan teras strategi. Kelas Strategy
bertindak sebagai pengurus konteks tak segerak dan melaksanakan dasar menggunakan kaedah run_strategy
, memanggil kaedah live_strategy
atau backtest_strategy
bergantung pada mod operasi.
Dengan atribut seperti symbol
, sessions
dan parameters
, kelas ini memastikan bahawa strategi boleh disesuaikan dan disesuaikan dengan instrumen kewangan dan sesi dagangan tertentu. Penyepaduan kaedah multi-tugas kolaboratif seperti sleep
dan delay
memastikan strategi kekal cekap dan selari dengan kemas kini pasaran dalam persekitaran langsung atau backtest. Ini menjadikan kelas Strategy
alat yang berkuasa dan fleksibel untuk membina sistem perdagangan yang kompleks.
name
(str): Nama strategi. Jika tidak diberikan secara eksplisit, lalai kepada nama kelas. symbol
(Simbol): Instrumen kewangan yang dikaitkan dengan strategi. parameters
(dikt): Kamus parameter khusus dasar. sessions
(Sesi): Sesi dagangan di mana strategi aktif. mt5
(MetaTrader | MetaBackTester): Contoh MetaTrader
atau MetaBackTester
berdasarkan mod (langsung atau backtest). config
: Tetapan konfigurasi dasar. running
(bool): Menunjukkan sama ada strategi sedang berjalan. backtest_controller
(BackTestController): Pengawal digunakan untuk mengurus operasi ujian belakang. current_session
(Sesi): Sesi dagangan yang sedang aktif. __init__(symbol: Symbol, params: dict = None, sessions: Sessions = None, name: str = "")
: Gunakan simbol, parameter dan strategi permulaan sesi yang diberikan. Atas ialah kandungan terperinci AIOMQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!