Trade Functions

Semua fungsi perdagangan boleh dibahagikan kepada dua kumpulan – fungsi yang membentuk pesanan perdagangan dan fungsi yang mengembalikan beberapa pesanan yang mencirikan nilai-nilai. MQL4 hanya mempunyai lima fungsi yang membentuk dan menghantar pesanan perdagangan ke server :

  • OrderSend () – pembukaan pesanan pasaran dan penempatan pesanan tertunda;
  • OrderClose () – penutupan pesanan pasaran;
  • OrderCloseBy () – penutupan pesanan pasaran yang bertentangan;
  • OrderDelete () – memadam pesanan yang belum selesai;
  • OrderModify () – mengubahsuai semua jenis pesanan.

Perintah menggunakan fungsi yang disenaraikan di atas diterangkan dalam bahagian Pengaturcaraan Operasi Perdagangan secara terperinci. Semua fungsi lain tidak membentuk pesanan dagangan tetapi penggunaannya sering diperlukan.

Sebagai contoh, kadang-kadang perlu untuk menutup pesanan dalam beberapa urutan keutamaan. Untuk melakukannya, anda harus menganalisis ciri-ciri setiap pesanan dalam program, iaitu – jenis pesanan, jumlah banyak, lokasi stop-order, dan lain-lain. Mari kita periksa beberapa fungsi yang membolehkan untuk mendapatkan maklumat tentang pesanan.

Fungsi OrderTotal ()

int OrdersTotal ()
Fungsi ini mengembalikan jumlah pesanan yang dibuka dan tertunda.

Fungsi OrderTakeProfit ()

double OrderTakeProfit ()
Fungsi ini mengembalikan nilai harga yang diisytiharkan apabila tahap keuntungan (mengambil untung) pesanan terpilih semasa dicapai. Pesanan mesti dipilih sebelum menggunakan fungsi OrderSelect ().

Fungsi OrderProfit ()

double OrderProfit ()
Mengembalikan nilai keuntungan bersih (tanpa mengambil kira swap dan komisen) pesanan yang dipilih. Ia adalah untung yang belum direalisasikan untuk pesanan yang dibuka dan keuntungan tetap bagi pesanan tertutup. Pesanan mesti dipilih sebelum menggunakan fungsi OrderSelect ().

Fungsi OrderLots ()

double OrderLots ()
Mengembalikan jumlah banyak pesanan yang dipilih. Pesanan mesti dipilih sebelum menggunakan fungsi OrderSelect ().

Serpihan program yang menghitung mengumumkan kenaikan harga TakeProfit, keuntungan pesanan dan jumlah lot ditunjukkan di bawah:

for (int i = 0; i <OrdersTotal (); i ++) // Untuk semua pesanan
  {
   if ((OrderSelect (i, SELECT_BY_POS) == true) // Jika seterusnya wujud
     {
      double ТР = OrderTakeProfit (); // TakeProfit of order
      double Profit = OrderProfit (); / / Perolehan pesanan
      double Lots = OrderLots (); // Jumlah lot
      //……TP dan penggunaan nilai keuntungan dalam program …..
     }
  } // Akhir badan kitaran

Jelas sekali bahawa setiap fungsi yang dipertimbangkan (OrderTakeProfit (), OrderProfit () dan OrderLots ()) tidak mempunyai sebarang parameter laras, iaitu denotasi, sebagai contoh, bilangan pesanan, untuk mengembalikan nilai yang sepadan dengan ciri-ciri individu ini pesanan tidak terlibat.

Untuk menghitung ciri-ciri pesanan individu (harga yang dinyatakan sebagai salah satu perintah berhenti, pesanan pesanan dan jumlah banyak dalam konteks ini) anda harus memilih pesanan yang diperlukan terlebih dahulu; ini akan memaklumkan kepada program mengenai perintah untuk melakukan pengiraan dengan. Untuk melakukannya, anda perlu melaksanakan fungsi OrderSelect () sebelum memulakan pengiraan (lihat Menutup dan Memadamkan Pesanan). Fungsi perdagangan yang dilaksanakan selepas itu akan mengembalikan nilai-nilai yang sesuai dengan ciri-ciri pesanan yang dipilih.

Penilaian yang betul terhadap satu atau satu lagi ciri-ciri pesanan oleh pengaturcara tidak begitu penting. Contohnya, apabila menyelesaikan masalah susunan pesanan tertutup, anda harus menetapkan kriteria pengiraan yang mana pesanan harus ditutup lebih awal dan yang mana satu – selepasnya. Mari kita lihat kepada tugas yang mudah.

Masalah 40. Dua pesanan Buy kini dibuka pada simbol tunggal. Yang pertama dibuka pada harga 1.2000 pada 0.5 lot, yang kedua dibuka dengan harga 1.3000 pada 1 lot. Harga semasa ialah 1.3008. Kriteria perdagangan untuk pembelian pesanan tutup telah mencetuskan. Adalah perlu untuk membuat keputusan yang tepat, iaitu untuk memutuskan perintah mana yang harus ditutup sebagai yang pertama dan mana yang kedua.

Jelas sekali, keuntungan dari urutan pertama membuat 108 mata, sedangkan yang kedua ialah 8 mata. Walaupun pesanan pertama dibuka pada jumlah lot yang lebih kecil, ia mempunyai keuntungan yang lebih besar daripada yang kedua, iaitu keuntungan pesanan pertama ialah $ 540 dan keuntungan pesanan kedua ialah $ 80. Menutup perintah pertama mungkin kelihatan lebih baik, pada pandangan pertama, kerana ia mempunyai keuntungan yang lebih besar. Walau bagaimanapun, ia adalah salah faham. Adalah perlu untuk memeriksa senario kes yang mungkin untuk membuat keputusan yang betul.

Urutan penutup pesanan tidak akan menjadi masalah, jika harga diketahui tidak berubah semasa tempoh pesanan ditutup. Walau bagaimanapun, harga mungkin berubah semasa pelaksanaan arahan untuk menutup salah satu pesanan. Oleh itu perintah yang boleh membawa lebih banyak kerugian, pada senario negatif, harus ditutup terlebih dahulu. Sekiranya harga menyusut satu mata ke bawah, keuntungan pesanan pertama akan berkurang sebanyak $ 5, manakala yang kedua akan dilakukan dengan $ 10. Jelas sekali, pesanan kedua akan membawa lebih banyak kerugian, jadi ia perlu ditutup terlebih dahulu. Dengan cara sedemikian, jumlah lot mempunyai kepentingan yang dominan apabila membuat keputusan mengenai urutan penutup pesanan. Senario kes yang menguntungkan tidak boleh dipertimbangkan di sini, kerana perdagangan berkembang dengan kriteria perdagangan dalam program ini, dan kali ini kriteria penutupan pesanan Beli telah mencetuskan.

Anda harus mempertimbangkan ciri-ciri pesanan lain jika perlu memilih antara dua pesanan dengan jumlah lot yang sama. Sebagai contoh, anda boleh mempertimbangkan jarak antara harga semasa dan nilai StopLoss setiap pesanan. Pada masa yang sama, anda harus menganalisis mana dari pesanan akan membawa lebih banyak kerugian, sekiranya harga bergerak pantas. Jawapannya jelas, juga: satu (dari kedua-dua pesanan yang dibuka pada jumlah lot yang sama) yang mempunyai tahap StopLoss dari harga semasa.

Oleh itu, anda boleh menganalisis keutamaan dan semua parameter pesanan yang lain dan menyusun senarai kriteria berorientasikan keutamaan untuk dipertimbangkan apabila membuat keputusan mengenai pesanan penutupan. Tidak sukar untuk mengenal pasti kriteria yang tidak perlu dipertimbangkan. Ia adalah harga terbuka (dan keuntungan yang berkaitan dari pesanan), contohnya. Jumlah wang yang ada pada peniaga pada masa ini ditunjukkan dalam lajur Ekuiti terminal klien. Sumber dari nilai ini tidak penting karena itu, bukan hasil dari kerugian dari satu pesanan bijih lagi, ataupun hasil keuntungan.
Semua ciri-ciri yang diperlukan untuk pesanan boleh diterima menggunakan fungsi perdagangan yang sepadan:

Trade Functions

Fungsi Maklumat ringkasan
Execution ErrorsMana-mana operasi perdagangan (Pesanan OrderSend, OrderClose, OrderCloseBy, OrderDelete atau OrderModify) boleh tidak berjaya menamatkan skor alasan dan mengembalikan sama ada nombor tiket negatif atau FALSE. Anda boleh mengetahui sebab kegagalan dengan menggunakan fungsi GetLastError. Setiap kesilapan perlu diproses dengan cara tersendiri. Jadual di bawah mengandungi cadangan umum.
OrderCloseIa menutup kedudukan. Ia mengembalikan TRUE, jika fungsi telah berjaya berjaya. Ia mengembalikan FALSE, jika fungsi gagal berakhir.

OrderCloseBy
Ia menutup satu posisi terbuka dengan yang lain yang dibuka dalam arah yang bertentangan untuk simbol yang sama. Ia kembali TRUE. jika fungsi telah berjaya berjaya. Ia mengembalikan FALSE, jika fungsi gagal berakhir.
OrderClosePriceIa mengembalikan harga tutup pesanan yang dipilih.
OrderCloseTimeIa mengembalikan masa tutup untuk pesanan yang dipilih.
OrderCommentIa mengembalikan komen pesanan yang dipilih.
OrderCommissionIa mengembalikan nilai komisen yang dikira bagi pesanan yang dipilih.
OrderDeleteIa memadamkan perintah yang telah ditunda sebelum ini. Ia mengembalikan TRUE, jika fungsi telah berjaya berjaya. Ia mengembalikan FALSE, jika fungsi gagal berakhir.
OrderExpirationIa mengembalikan tarikh tamatnya pesanan tertunda terpilih.
OrderLotsIa mengembalikan jumlah banyak pesanan yang dipilih.
OrderMagicNumberIa mengembalikan nombor identifikasi (“magic”) bagi pesanan yang dipilih.
OrderModifyIa mengubah parameter pesanan yang telah dibuka sebelum ini dan pesanan yang belum selesai. Ia mengembalikan TRUE jika fungsi telah berjaya berjaya. Ia mengembalikan FALSE, jika fungsi gagal berakhir.
OrderOpenPriceIa mengembalikan harga terbuka bagi pesanan yang dipilih.
OrderOpenTimeIa mengembalikan masa pembukaan pesanan yang dipilih.
OrderPrintIa memasuki maklumat pesanan kepada jurnal.
OrderProfitIa mengembalikan keuntungan bersih (tanpa mengambil kira swap dan komisen) dari pesanan yang dipilih. Ia adalah untung yang belum direalisasikan untuk pesanan yang dibuka dan keuntungan tetap bagi pesanan tertutup.
OrderSelectFungsi ini memilih perintah untuk berfungsi dengan seterusnya. Ia mengembalikan TRUE jika fungsi telah berjaya berjaya. Ia mengembalikan FALSE, jika fungsi gagal berakhir.
OrderSendFungsi utama untuk membuka pesanan dan meletakkan pesanan yang belum selesai. Ia mengembalikan bilangan tiket yang diberikan kepada pesanan oleh pelayan dagangan, atau -1, sekiranya gagal menamatkan operasi.
OrdersHistoryTotalIa mengembalikan bilangan kedudukan tertutup dan pesanan yang dihapuskan dalam sejarah akaun semasa, dimuatkan ke terminal pelanggan.
OrderStopLossIa mengembalikan harga penutupan kedudukan apabila ia mencapai tahap kerugian (stop loss) dari pesanan yang sedang dipilih.
OrdersTotalIa mengembalikan jumlah pesanan terbuka dan tertunda.
OrderSwapIa mengembalikan nilai pertukaran pesanan yang dipilih pada masa ini.
OrderSymbolIa mengembalikan nama simbol untuk pesanan yang sedang dipilih.
OrderTakeProfitIa mengembalikan harga penutup apabila ia mencapai tahap keuntungan (mengambil keuntungan)


Leave a Reply

Your email address will not be published. Required fields are marked *