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.