Ok, saya telah bekerja di sini beberapa hari sekarang. Inilah yang saya dapat setakat ini: Pertama, saya mempunyai contoh pemasangan SEPARATE MT4 dengan ketat untuk ujian ini SAHAJA. Jadi memadamkan sejarah bukan masalah untuk saya. Langkah ujian: buka MT4 dan tutup semua carta. tutup MT4. padam semua fail .hst. ambil kod yang saya telah tambah dan buat EA dengannya. Buka MT4. Buka sebarang carta KECUALI AUDUSD. Gunakan bingkai masa 5m (hanya perlu lebih kecil daripada 15 kerana itulah yang kami uji). jatuhkan EA di atasnya. Biarkan EA berjalan selama kira-kira satu jam atau lebih Sekali masa yang telah ditetapkan, tutup carta. tutup MT4. padam semua sejarah. Buka MT4 membuka carta AUDUSD 15 min. bandingkan OHLC pada carta untuk OHLC pada fail CSV yang dicipta oleh EA. Anda akan perhatikan bahawa nilai tidak bersegerakkan. Lebih banyak lagi kerana saya mempunyai idea lain. Kod: Kod Tersembunyi/ ------------------------------------------- ----------------------- /| Blank.mq4 |/| Hak Cipta 2013, Penemuan semula |/| http:/no.link.yet |/ ----------------------------------------------- ------------------- #property copyright Copyright 2013, pautan #property pautan: http:/no.link.yet int intHandle = 0; string strFileName;/ ----------------------------------------------- ------------------- /| fungsi permulaan pakar |/ ----------------------------------------------- ------------------- int init () {//---- strFileName = StringConenate (AUDCAD, 15, .csv); intHandle = FileOpen (strFileName, FILE_CSV | FILE_WRITE, ','); FileWrite (intHandle, Tarikh Sebenar, Tarikh Sejarah, Terbuka, Tinggi, Rendah, Tutup, MA); bool bolNoHistory = true; int intCount = 1; = (iOpen (AUDCAD, 15,0)! = 0 iHigh (AUDCAD, 15,0)! = 0 iLow (AUDCAD, 15,0)! = 0 iClose (AUDCAD, 15,0)! = 0 iMA (AUDCAD, 15,50,0, MODE_SMA, PRICE_MEDIAN, 1)! = 0 TimeYear (iTime (AUDCAD, PERIOD_M15,0)) gt; 1970) {Comment (history donwloaded! untuk memuat turun sejarah); bolNoHistory = false; pecah; } Ulasan (tiada sejarah yang dimuat turun pada percubaan #, intCount, Menunggu satu saat.); intCount ; Tidur (1000); }/---- kembali (0); }/ ---------------------------------------------- -------------------- /| fungsi deinitialization pakar |/ ----------------------------------------------- ------------------- int deinit () {//---- FileClose (intHandle);///kembali (0); }/ ---------------------------------------------- -------------------- /| fungsi permulaan pakar |/ ----------------------------------------------- ------------------- int start () {//---- bool bolNewBar = funcIsNewBar (15); jika (bolNewBar){FileWrite (intHandle, TimeToStr (Masa # 91; 0 # 93;, TIME_DATE | TIME_MINUTES), TimeToStr (iTime (AUDCAD, PERIOD_M15,0), TIME_DATE | TIME_MINUTES), iOpen (AUDCAD, 15,0), iHigh (AUDCAD, 15,0), iLow (AUDCAD, 15,0), iClose (AUDCAD, 15,0), iMA (AUDCAD, 15,50,0, MODE_SMA, PRICE_MEDIAN, 0)); FileFlush (intHandle); }/---- kembali (0); }/ ---------------------------------------------- -------------------- bool funcIsNewBar (int timeFrame) {bool res = false;/array mengandungi masa buka bar semasa (sifar)/untuk 7 (tujuh) masa jadual statik stats _sTime # 91; 7 # 93 ;; int i = 6;Nota: i di bawah akan menjadi 6 atau jangka masa akan menjadi hari. suis (timeFrame) {kes 1: i = 0; pecah; kes 5: i = 2; pecah; kes 15: i = 3; pecah; kes 30: i = 4; pecah; kes 60: i = 5; pecah; kes 240: pecah; kes 1440: pecah; lalai: timeFrame = 1440; }/---- jika (_sTime == 0 || _sTime! = iTime (Simbol (), timeFrame, 0)) {_sTime = iTime (Simbol (), timeFrame, 0); res = benar; }/---- kembali (res); }