PDA

View Full Version : Fungsi Alternatif untuk Tidur () di MT4 yang boleh diuji?



yoyhhe13z
08-24-2015 16:14, 04:14 PM
Adakah terdapat alternatif untuk tidur () kod dalam MT4 yang boleh digunakan untuk ujian dalam Tester Strategi?

Menurut dokumentasi MT4, fungsi Sleep () Tidak menggantung pelaksanaan Penasihat Pakar dalam Penguji Strategi.

Saya ingin melihat bagaimana prestasi keputusan ujian EA berubah jika saya menggantung dagangan selepas TP besar untuk jumlah masa X.

Sebarang petua mengenai cara terbaik untuk melaksanakannya supaya dapat diuji?

yoyhhe13z
11-08-2021 20:55, 08:55 PM
Sebarang penyelesaian akan dihargai. Pada dasarnya saya mempunyai sesuatu seperti ini. . . Sehingga saya faham ia tidak melakukan apa-apa dalam mod penilaian. Saya ingin sesuatu yang akan mensimulasikan fungsi tidur ATAU membekukan atau berhenti seketika dan akan beroperasi dalam mod penilaian juga. Saya mempunyai fungsi yang akan menutup semua urus niaga terbuka jika kedudukan terbuka melebihi julat keuntungan maksimum yang dilanjutkan. Saya ingin menguji apa-apa transaksi prospektif untuk jumlah masa X dan saya memerlukannya untuk muncul dalam mod ujian juga. Kod dimasukkan tidak sah PipMaxCloseOut () int totalorders = OrdersTotal (); untuk (int I = totalorders-1; igt; = 0; I--) jika (! OrderSelect (i, SELECT_BY_POS)) Cetak (TimeToStr (TimeCurrent (), TIME_SECONDS), CHECK CHECK Gt ;, __FUNCTION__, !!!! !, OrderMagicNumber (), Kod ralat, GetLastError ()); hasil int yang lain; jika ((OrdersTotal () gt; 0) (OrderMagicNumber () == Trade1L)) RefreshRates (); Cetak (TimeToStr (TimeCurrent (), TIME_SECONDS), PELANGGAN Trade1L PipMax CLOSE OUT, Order PL :, OrderProfit (), Tawaran:, MarketInfo (Perdagangan, MODE_BID), Buka Dagangan:, OrdersTotal ()); hasil = OrderClose (OrderTicket (), OrderLots (), MarketInfo (Perdagangan, MODE_BID), MaxSlippage * 2, CLR_NONE); jika (hasil lt; = -1) Cetak (RALAK SELESAI MELAKUKAN MENUJU Trade1L PADA PIPMax CLOSE OUT! CODE ERROR #, GetLastError ()); jika ((OrdersTotal () gt; 0) (OrderMagicNumber () == Trade1S)) RefreshRates (); Percetakan (TimeToStr (TimeCurrent (), TIME_SECONDS), CLOSING Trade1S PipMax CLOSE OUT, Order PL :, OrderProfit (), Tanya :, MarketInfo (Perdagangan, MODE_ASK), Terbuka Perdagangan:, OrdersTotal ()); hasil = OrderClose (OrderTicket (), OrderLots (), MarketInfo (Perdagangan, MODE_ASK), MaxSlippage * dua, CLR_NONE); jika (hasil lt; = -1) Cetak (RALAK SELESAI MELAKUKAN MENUJU Trade1S PADA PIPMax CLOSE OUT! CODE ERROR #, GetLastError ()); Tidur (MilliSecs);

yewzussnachwz
11-08-2021 22:16, 10:16 PM
Sebelum memasuki perdagangan baru, hanya semak waktu tutup perdagangan terakhir dan jika sudah cukup masa berlalu (penangguhan anda sebelum memulakan perdagangan).

yoyhhe13z
11-08-2021 23:37, 11:37 PM
Jadi inilah yang saya lakukan sehingga kini, ia sedang diuji. Malangnya tidak seperti yang saya harapkan, ia menapis lebih banyak perdagangan yang baik daripada yang miskin ... Sekurang-kurangnya ia sedang menguji masa ini. Boleh tweak nanti atau hanya keluarkannya. Ditambah dual TimeMicroSecNow; dual TimeMicroSecAfterEQP; extern int MicroSecAfterEQP = 60000000; Menggantikan Tidur dengan: TimeMicroSecAfterEQP = GetMicrosecondCount (); Dan Sebelum perdagangan baru: TimeMicroSecNow = GetMicrosecondCount (); RefreshRates (); jika (TimeMicroSecNow gt; TimeMicroSecAfterEQP MicroSecAfterEQP) PERDAGANGAN;