[FX581 Original] "lubang" rekod sejarah kemahiran pembangunan MT4

Penunjuk MT4, kumpulan perbincangan EA
fx58

Kami sering menghadapi keperluan untuk mengira bilangan tangan dalam rekod transaksi sejarah, atau untuk mendapatkan maklumat tentang pesanan transaksi sejarah terakhir. Fungsi sedemikian tidak sukar untuk kami, berikut adalah contoh kod mudah:

lot berganda = 0;

for(int i=0;i < OrdersHistoryTotal();i++)

{

 jika(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) == palsu) teruskan;

   lot += OrderLots();

}

Print("Jumlah lot:",lot);

Kod ini adalah untuk mengira semua nombor lot sejarah melalui gelung. Sebenarnya, kod ini hanyalah untuk menukar kod yang bergelung melalui semua pesanan sedia ada. Tukar fungsi OrdersTotal() kepada OrdersHistoryTotal(), dan tambahkan parameter pada fungsi OrderSelect: MODE_HISTORY. Jadi adakah terdapat masalah dengan program yang begitu mudah? Jawapannya ya.

Mari jalankan program EA ini, hasil yang dipaparkan di terminal ialah:

Jumlah bilangan tangan sebenarnya adalah 0! Ia luar biasa, jelas saya mempunyai banyak rekod transaksi.

Sekarang mari kita lakukan beberapa operasi dengan editor, dan kemudian jalankan program untuk melihat hasil akhir

Klik kanan dalam sejarah akaun, pilih semua rekod transaksi, dan kini semua rekod sejarah transaksi sebelumnya muncul dalam sejarah akaun

Kemudian kami menjalankan program EA dan mencubanya, dan hasilnya akan menjadi normal:

Ini adalah "lubang" untuk mendapatkan rekod sejarah melalui program. Dalam MT4, perisian hanya akan memaparkan rekod sejarah bulan semasa secara lalai, dan program hanya akan mencari berdasarkan rekod sejarah semasa perisian apabila mendapatkan sejarah Oleh kerana saya tidak melakukan sebarang transaksi, jadi apabila anda mengira jumlah bilangan tangan, anda mendapat 0, dan jika semua rekod transaksi dipaparkan dalam perisian, program akhirnya boleh berfungsi seperti biasa.

Sebab mengapa kami jarang menemui masalah ini ialah ketepatan masa akaun demo platform MT4 am adalah sangat singkat. Selepas mendaftar akaun demo, ia akan tamat tempoh tidak lama lagi, jadi hanya sedikit orang yang dapat menemui masalah ini. Oleh itu, adalah sangat penting untuk mempunyai platform yang boleh membuka akaun simulasi jangka panjang. Kami mengesyorkan menggunakan platform xxx, yang boleh menyediakan akaun simulasi sehingga xx hari.

Pengguna simulasi jangka panjang itu sendiri sangat membantu kami untuk membangunkan dan menguji program EA. Seperti yang kita sedia maklum, tidak cukup menggunakan simulasi sejarah selepas membangunkan program EA baharu. Ia juga perlu menutup ujian. Jika ujian tamat tempoh dalam beberapa hari, ia akan menjadi seperti ini Ia sangat menyusahkan untuk membangunkan EA.

"pit" kedua mengenai rekod sejarah ini ialah jika kita ingin mendapatkan rekod sejarah, kita hanya boleh menggunakan program EA untuk mendapatkannya. Jika kita menulis program skrip, kita tidak akan dapat rekod sejarah, malah jika kita sudah memaparkannya dalam sejarah akaun.semua rekod.

Jadi bagaimana kita boleh mengelakkan masalah ini? Kerana pelanggan tidak menyedari masalah ini semasa menggunakan program EA kami, jika pelanggan tidak tahu atau tidak akan melakukan ini langsung, bagaimana kami boleh mengelakkan masalah ini dalam program? Cara yang agak mudah ialah menyimpan semua rekod pesanan dalam fail semasa menjalankan program EA anda, supaya maklumat rekod sejarah boleh diperolehi walaupun pelanggan tidak melakukan sebarang operasi. Berikut ialah contoh kod mudah untuk menyimpan fail :

//content ialah kandungan yang akan disimpan

fail set kosong (kandungan rentetan)

{

   string filename = "Nama fail untuk disimpan";

   int filehandle = FileOpen(nama fail,FILE_WRITE|FILE_TXT);//Ia juga boleh disimpan sebagai fail CSV dan menggantikan FILE_TXT dengan FILE_CSV, supaya beberapa maklumat boleh disimpan

   if(filehandle == INVALID_HANDLE) // menilai sama ada terdapat ralat dalam membaca fail

   {

      FileClose(filehandle);

      Print("Ralat telah berlaku semasa menyimpan fail");

   }

   else//Buka seperti biasa, anda boleh menulis kandungan

   {

      FileWriteString(failhandle, kandungan);

      FileClose(filehandle);

   }

}

Melalui kaedah di atas, semua orang mesti faham, dan program kami akan menjadi lebih sempurna dan mantap dalam pembangunan masa depan.

Hak cipta milik pengarang

Terakhir diedit pada 24/08/2023 08:10

18 Setuju
33 Komen
Mengumpul
Asal
cadangan berkaitan
Tentang kita Perjanjian PenggunaDasar PrivasiPendedahan RisikoPerjanjian Program Rakan KongsiGaris Panduan Komuniti Pusat Bantuan Maklum balas
App Store Android

Pendedahan Risiko

Berdagang dalam instrumen kewangan melibatkan risiko tinggi termasuk risiko kehilangan sebahagian, atau semua, daripada jumlah pelaburan anda, dan mungkin tidak sesuai untuk semua pelabur. Sebarang pendapat, sembang, mesej, berita, penyelidikan, analisis, harga, atau maklumat lain yang terkandung di Laman Web ini disediakan sebagai maklumat pasaran umum untuk tujuan pendidikan dan hiburan sahaja, dan tidak membentuk nasihat pelaburan. Pendapat, data pasaran, cadangan atau apa-apa kandungan lain tertakluk kepada perubahan pada bila-bila masa tanpa notis. Trading.live tidak akan bertanggungjawab untuk sebarang kehilangan atau kerosakan yang mungkin timbul secara langsung atau tidak langsung daripada penggunaan atau pergantungan pada maklumat tersebut.

© 2024 Tradinglive Limited. All Rights Reserved.