Perdagangan Sistem

Raymond Cloudy Day: EA Hebat untuk MetaTrader 5
MetaTrader5
Raymond Cloudy Day: EA Hebat untuk MetaTrader 5

Raymond Cloudy Day adalah alat yang direka khusus untuk membantu pedagang dalam membuat keputusan yang lebih bijak di pasaran. Mari kita lihat ciri-ciri dan kelebihan yang ditawarkannya. Ciri-Ciri Utama: Kaedah Pengiraan Inovatif: Indikator Raymond Cloudy Day menggunakan kaedah pengiraan unik yang memberikan titik-titik yang tepat dan boleh dipercayai untuk membantu pedagang dalam membuat keputusan yang berinformasi. Pengembangan untuk Beli/Jual: Indikator ini mengesahkan potensi pengembangan trend untuk Beli atau Jual, atau kembali ke titik pengiraan utama, memberikan pandangan strategik kepada pedagang. Titik Ambil Untung (TP): Titik TP boleh digunakan untuk mengamankan keuntungan atau sebagai titik biasa, memberikan fleksibiliti dalam pelaksanaan strategi. Garisan Sokongan/Perlawanan: Semua titik yang dikira berfungsi sebagai garisan sokongan atau perlawanan, memberikan pandangan lebih mendalam tentang kemungkinan pergerakan harga dan tingkah laku pasaran. Manfaat: Ketepatan yang Ditingkatkan: Gabungan kaedah pengiraan baru dan algoritma canggih menghasilkan pengenalan trend yang lebih tepat, memperbaiki proses pengambilan keputusan anda. Fungsi yang Pelbagai: Sesuai untuk pemula dan pedagang berpengalaman, indikator Raymond Cloudy Day menyesuaikan diri dengan keperluan anda, menyediakan kemudahan serta ciri-ciri canggih. Strategi Perdagangan Tersuai: Harap maklum bahawa strategi semasa yang disertakan dalam EA ini hanya merupakan demo dan belum diuji secara menyeluruh. Kami menggalakkan anda untuk mengintegrasikan strategi perdagangan anda sendiri untuk memanfaatkan indikator Raymond Cloudy Day sepenuhnya. Cuba pelbagai pendekatan dan sesuaikan indikator ini agar sesuai dengan gaya perdagangan anda untuk hasil yang optimum. Rasai kuasa visi Raymond dan kepakaran pengkodan kami dengan indikator Raymond Cloudy Day. Optimumkan strategi perdagangan anda dan maksimakan kejayaan pasaran anda dengan alat canggih ini.

2024.07.14
Panduan Pemula: Crossover Moving Average dengan dan Tanpa Martingale untuk MetaTrader 5
MetaTrader5
Panduan Pemula: Crossover Moving Average dengan dan Tanpa Martingale untuk MetaTrader 5

Selamat datang semua trader! Hari ini kita akan membincangkan tentang dua Expert Advisor (EA) yang menggunakan crossover moving average sebagai isyarat masuk. Mari kita lihat dengan lebih mendalam! Semua fungsi yang digunakan dalam Expert Advisor ini terdapat dalam fail ImportantFunctions.mqh. Di sini terdapat dua EA yang berbeza, di mana kedua-duanya menggunakan isyarat harga yang melintasi moving average. Perbezaannya, satu menggunakan strategi Martingale apabila mengalami kerugian, manakala yang satu lagi tidak. Saya tidak mengesyorkan penggunaan EA ini di akaun live, kerana ia hanya dibuat untuk tujuan demonstrasi. Input EA Moving Average yang Ringkas: MAPeriod: Tempoh indikator Moving Average. LotSize: Saiz lot yang digunakan untuk memasuki perdagangan. TPPoints: Titik take profit. SLPoints: Titik stop loss. Input EA Moving Average dengan Martingale: MAPeriod: Tempoh indikator Moving Average. StartingLot: Saiz lot yang digunakan untuk perdagangan pertama; nilai ini akan meningkat selepas kerugian. MaxLot: Saiz lot maksimum. Saiz lot awal boleh ditingkatkan sehingga nilai ini. TPPoints: Titik take profit. Ini akan meningkat selepas kerugian. SLPoints: Titik stop loss. Ini juga akan meningkat selepas kerugian. LotMultiplier: Saiz lot akan didarabkan dengan nilai ini selepas kerugian jika belum mencapai nilai MaxLot. TPMultiplier: Take profit dan stop loss akan meningkat dengan jumlah ini selepas kerugian, memberikan kelebihan pemulihan bukan hanya melalui saiz posisi, tetapi juga kerana TP yang lebih besar. Kod ini mengandungi komen, dan saya telah membuat video di YouTube yang menerangkan segala yang anda perlukan untuk memahami EA ini. Terima kasih kerana membaca!

2024.06.10
Strategi Breakout dengan Fungsi Pembantu untuk Cabaran Prop Firm
MetaTrader5
Strategi Breakout dengan Fungsi Pembantu untuk Cabaran Prop Firm

Hai semua, Kali ini, saya ingin berkongsi kemas kini tentang Strategi Breakout yang Mudah dan Berkesan. Dalam kod ini, saya telah menambah beberapa fungsi pembantu untuk cabaran prop firm. Secara umumnya, untuk lulus cabaran prop firm, anda perlu memenuhi tiga kriteria utama: Target keuntungan Tidak melanggar had kerugian harian maksimum Tidak melanggar had kerugian maksimum Dalam kod ini, saya telah menyertakan dua fungsi untuk memeriksa "Target keuntungan" dan "Hampir melanggar had kerugian harian maksimum" bagi menutup semua posisi dan menghapus semua pesanan tertunda secara automatik. Untuk "had kerugian maksimum", ia bergantung kepada strategi dan pengurusan risiko anda, jadi ia tidak akan dinyatakan dalam Skrip MQL5 ini. //+------------------------------------------------------------------+ //| Fungsi Pembantu Prop Firm                                       | //+------------------------------------------------------------------+ // Hapus semua pesanan tertunda dan tutup semua posisi void ClearAll(string message) {    Comment(message);    for (int i = OrdersTotal() - 1; i >= 0; i--)    {       ulong orderTicket = OrderGetTicket(i);       if (OrderSelect(orderTicket))       {          trade.OrderDelete(orderTicket);       }    }    for (int i = PositionsTotal() - 1; i >= 0; i--)    {       ulong posTicket = PositionGetTicket(i);       trade.PositionClose(posTicket);    } } // Periksa jika kita telah mencapai target keuntungan bool isPassed() {    return AccountInfoDouble(ACCOUNT_EQUITY) > PASS_CRITERIA; } // Periksa jika kita hampir melanggar had kerugian harian maksimum bool isDailyLimit() {    MqlDateTime date_time;    TimeToStruct(TimeCurrent(), date_time);    int current_day = date_time.day, current_month = date_time.mon, current_year = date_time.year;       // Baki semasa    double current_balance = AccountInfoDouble(ACCOUNT_BALANCE);       // Dapatkan PL perdagangan yang ditutup hari ini    HistorySelect(0, TimeCurrent());    int orders = HistoryDealsTotal();       double PL = 0.0;    for (int i = orders - 1; i >= 0; i--)    {       ulong ticket=HistoryDealGetTicket(i);       if(ticket==0)       {          Print("HistoryDealGetTicket gagal, tiada rekod perdagangan");          break;       }       double profit = HistoryDealGetDouble(ticket,DEAL_PROFIT);       if (profit != 0)       {          // Dapatkan waktu transaksi          MqlDateTime deal_time;          TimeToStruct(HistoryDealGetInteger(ticket, DEAL_TIME), deal_time);          // Periksa waktu transaksi          if (deal_time.day == current_day && deal_time.mon == current_month && deal_time.year == current_year)          {             PL += profit;          }          else             break;       }    }    double starting_balance = current_balance - PL;    double current_equity   = AccountInfoDouble(ACCOUNT_EQUITY);    return current_equity < starting_balance - DAILY_LOSS_LIMIT; } Parameter yang perlu kita nyatakan adalah: input string dd = "-------------CABARAN PROP FIRM-----------------"; input bool   isChallenge = false; input double PASS_CRITERIA = 110100; input double DAILY_LOSS_LIMIT = 4500; Saya harap anda mendapati nilai dalam skrip ini.

2024.05.11
Cara Semak Perdagangan Terkini di MetaTrader 5 Tanpa Gelung
MetaTrader5
Cara Semak Perdagangan Terkini di MetaTrader 5 Tanpa Gelung

Dalam dunia perdagangan, mendapatkan maklumat terkini tentang perdagangan yang telah ditutup adalah sangat penting. Dengan kod berikut, anda boleh mendapatkan data perdagangan terakhir tanpa perlu menggunakan gelung. Anda boleh mencipta satu pembolehubah untuk menetapkan waktu mula hari semasa. (Ini sebenarnya tidak wajib.) Cipta beberapa pembolehubah lain untuk mencetak output carta dan juga boleh digunakan dalam blok kod lain. (Ini juga tidak wajib.) Penggunaan kod ini dalam fungsi OnTick(); akan menunjukkan hasil untuk setiap tick. Anda juga boleh menetapkannya untuk sekali setiap bar. // pembolehubah string DayStart = "00:00"; // Waktu Mula Hari double LastClosed_Profit; // Keuntungan Perdagangan Terkini string TradeSymbol, TradeType; // Memulakan Expert -------------------- int OnInit()   {    return(INIT_SUCCEEDED);   } // Menamatkan Expert ------------------- void OnDeinit(const int reason)   {   } // Fungsi OnTick -------------------------- void OnTick()   { // semak untuk perdagangan terakhir yang ditutup.    CheckLastClosed();   } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ void CheckLastClosed()   {    datetime HistoryTime = StringToTime(DayStart); // sejarah dari "Mula hari hingga waktu semasa"    if(HistorySelect(HistoryTime,TimeCurrent()))      {       int Total = HistoryDealsTotal();       // Dapatkan nombor tiket urus niaga terakhir dan pilih untuk kerja lanjut.       ulong Ticket = HistoryDealGetTicket(Total -1);       // Dapatkan maklumat yang diperlukan.       LastClosed_Profit = NormalizeDouble(HistoryDealGetDouble(Ticket,DEAL_PROFIT),2);       TradeSymbol      = HistoryOrderGetString(Ticket,ORDER_SYMBOL);       // Kenal pasti urus niaga jual.       if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_BUY)         {          TradeType = "Jual Perdagangan";         }       // Kenal pasti urus niaga beli       if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_SELL)         {          TradeType = "Beli Perdagangan";         }       // output carta.       Comment("\n","Jumlah Urus Niaga - :  ", Total,               "\n","Tiket Urus Niaga Terakhir - :  ", Ticket,               "\n", "Keuntungan Terakhir -:  ", LastClosed_Profit,               "\n", "Perdagangan Terakhir adalah -:  ", TradeType);      }   } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ Anda juga boleh mendapatkan seluruh sejarah perdagangan (dari awal akaun) dengan menggunakan fungsi HistorySelect(); seperti berikut. // Dapatkan keseluruhan sejarah HistorySelect(0,TimeCurrent());

2024.04.22
Panduan Menggunakan EA Trailing untuk Profit di MetaTrader 5
MetaTrader5
Panduan Menggunakan EA Trailing untuk Profit di MetaTrader 5

Selamat datang, trader! Hari ini kita akan membincangkan satu alat yang boleh membantu meningkatkan prestasi trading anda menggunakan MetaTrader 5, iaitu EA Trailing yang membolehkan anda menguruskan pesanan dengan lebih baik. Apa itu EA ini? EA (Expert Advisor) ini adalah pengubahsuaian daripada EA lama yang boleh anda rujuk di sini. Bagaimana untuk menggunakannya: Langkah 1: Tambahkan EA ini pada mana-mana simbol yang anda pilih. Langkah 2: Tetapkan nilai parameter yang anda perlukan untuk TP (Take Profit), SL (Stop Loss), Trailing, Penutupan, dan ambang profit atau kerugian untuk pesanan. Langkah 3: EA ini tidak bergantung kepada nombor magik tertentu, jadi jika anda membuka pesanan menggunakan peranti mudah alih, pesanan tersebut akan diubah suai (SL, TP & Trailing) oleh EA ini. Ciri-ciri pengubahsuaian: Butang pemisahan dengan 5 butang Auto tutup semua pesanan jika mencapai profit mengikut nilai parameter: "CLOSE IF PROFIT-xxxx" (Isikan dengan 0 jika anda tidak menggunakannya). Isi 100.0 untuk auto tutup semua pesanan apabila profit mencapai RM100. Isi 0.0 untuk tidak mengaktifkan fungsi ini. Auto tutup semua pesanan jika mencapai kerugian mengikut nilai parameter: "CLOSE IF LOSS-xxxx" (Isikan dengan 0 jika anda tidak menggunakannya). Isi -70.0 untuk auto tutup semua pesanan apabila kerugian mencapai -RM70. Isi 0.0 untuk tidak mengaktifkan fungsi ini. Semoga trading anda lebih berjaya dengan EA ini! Sejarah Kemas Kini: Menambah butang Tutup BELI Menambah butang Tutup JUAL Mengeluarkan parameter yang tidak digunakan: Lots

2024.04.21
QuickTradeKeys123 - Sistem Trading Cekap untuk MetaTrader 5
MetaTrader5
QuickTradeKeys123 - Sistem Trading Cekap untuk MetaTrader 5

Hai semua! Hari ini kita nak bincangkan tentang QuickTradeKeys 123, satu sistem trading yang direka khas untuk memudahkan kita bertindak balas dengan cepat di pasaran. Dengan hanya satu tekan butang, anda boleh terus berdagang dari paparan carta! Fungsi Utama QuickTradeKeys 123 Berikut adalah ringkasan tentang fungsi-fungsi yang ditawarkan: Butang '1': Membuka posisi beli dengan saiz lot yang telah ditetapkan. Butang '2': Membuka posisi jual dengan saiz lot yang telah ditetapkan. Butang '3': Menutup semua posisi terbuka yang telah dibuka oleh EA berdasarkan nombor magik yang ditetapkan. Sistem ini sangat mudah digunakan, sesuai untuk trader baru mahupun yang berpengalaman yang mencari kawalan trading yang cepat dan berkesan melalui papan kekunci. Skop Penggunaan QuickTradeKeys 123 sesuai digunakan untuk semua pasangan mata wang dan timeframe. Untuk prestasi yang optimum dan pelaksanaan yang pantas, disarankan agar anda menggunakan spread yang rendah serta akses pasaran yang lancar. Cara Pemasangan Cara untuk menggunakan EA ini juga sangat mudah! Anda hanya perlu seret EA ke atas carta yang diingini, pastikan trading automatik diaktifkan dalam MetaTrader, dan EA diberi kuasa untuk melaksanakan perdagangan. Jangan lupa untuk mengkonfigurasi nombor magik mengikut keperluan anda dalam tetapan input. Penting! Perlu diingat, EA ini tidak direka untuk digunakan pada akaun trading langsung kecuali anda benar-benar memahami konsep dan risiko yang berkaitan. Disarankan untuk menguji EA ini terlebih dahulu di akaun demo agar anda lebih familiar dengan tingkah lakunya.

2024.04.20
Cara Menggunakan 'Counter' dalam MetaTrader 5 untuk Trading Berkesan
MetaTrader5
Cara Menggunakan 'Counter' dalam MetaTrader 5 untuk Trading Berkesan

01. Kira 'X' Kali dan Lalu Lepas. Langkah 01 - Buat satu variabel untuk menetapkan had kiraan. Anda boleh menggunakannya sebagai parameter input untuk pengoptimuman dalam kod anda. Langkah 02 - Buat satu lagi variabel untuk menyimpan had kiraan (berapa kali ia telah dikira). Langkah 03 - Setelah Counter dan had kiraan anda sama, itu menandakan sudah tiba masanya untuk melepaskan blok kod yang telah ditetapkan oleh anda. Langkah 04 - Setelah kod dilepaskan, pastikan anda mengreset counter juga. Jika tidak, ia akan terus mengira tanpa henti. Anda juga boleh menetapkan syarat penapisan kepada blok Counter. Contohnya, >> "JIKA ini benar, maka kira sekali." input int count = 50; // Tetapkan had kiraan sebagai input int Counter; // variabel counter // Inisialisasi Pakar -------------------- int OnInit() { return(INIT_SUCCEEDED); } // Deinisialisasi Pakar ------------------- void OnDeinit(const int reason) { } // OnTick Pakar -------------------------- void OnTick() { Counter ++; // tambah 1 kepada counter pada setiap tick. Comment("Kiraan Semasa -:", Counter); if(Counter == count) // Kira 'X' kali dan lepaskan | Blok ini hanya dilaksanakan sekali setiap kiraan. {      // Kod anda di sini...... Alert(count," Kali dikira"); Counter = 0; // Reset counter di akhir blok kod anda. Ini wajib. } } // Tamat OnTick  <<---------------------- 02. Lepas 'X' Kali dan Kemudian Tunggu 'X' Kali Lalu Lepas. Kaedah ini boleh digunakan seperti tunggu dan lepaskan, lepaskan dan tunggu. Langkah 01 - Buat satu variabel untuk menetapkan had kiraan dan had menunggu. Anda boleh menggunakannya sebagai parameter input untuk pengoptimuman dalam kod anda. Langkah 02 - Buat satu lagi variabel untuk menyimpan had kiraan & had menunggu (berapa kali ia telah dikira dan ditunggu). Langkah 03 - Setelah Counter dan had kiraan anda sama, itu menandakan sudah tiba masanya untuk melepaskan blok kod yang telah ditetapkan oleh anda. Langkah 04 - Setelah had menunggu dicapai, pastikan anda mengreset counter dan waiter juga. Jika tidak, ia akan berhenti berfungsi. Anda juga boleh menetapkan syarat penapisan kepada blok Counter dan waiter. Contohnya, >> "JIKA ini benar, tunggu sebentar" input int count = 50; // Tetapkan had kiraan sebagai input input int wait = 50; // Tetapkan had menunggu sebagai input int Counter; // variabel counter dengan nilai default "0" int Waiter; // variabel waiter dengan nilai default "0" // Inisialisasi Pakar -------------------- int OnInit()   {    return(INIT_SUCCEEDED);   } // Deinisialisasi Pakar ------------------- void OnDeinit(const int reason)   {   } // OnTick Pakar -------------------------- void OnTick()   {    Comment("Kiraan Ticks -: ", Counter, "\n", "Ticks Ditunggu -: ", Waiter);    if(Counter < count) // Lepas "X" kali      {       Counter++; // kemas kini counter       // Kod anda di sini.      }    else       if(Waiter < wait) // Tunggu "X" kali         {          Waiter++; // kemas kini waiter          // Kod anda di sini.         }    if(Waiter == wait) // Had Menunggu telah dicapai      {       Counter = 0; // reset counter       Waiter = 0; // reset waiter      }   } // Tamat OnTick  <<---------------------- //+------------------------------------------------------------------+ Istimewa -: Anda boleh menulis kod untuk "Lepas X kali dan berhenti" dengan mengubahsuai kod di atas dengan menghapuskan blok kod menunggu. Kemudian ia akan mengira untuk jumlah tertentu dan berhenti berfungsi sehingga counter direset. Anda boleh meresetnya di mana-mana dalam kod anda jika anda mencipta variabel ini dalam skala global.

2024.04.14
Cara Mengesan Bar Baru dengan Menggunakan Kiraan Bar - Panduan untuk Trader
MetaTrader5
Cara Mengesan Bar Baru dengan Menggunakan Kiraan Bar - Panduan untuk Trader

Pada kod sebelum ini, saya menggunakan masa untuk mengesan bar baru. Kali ini, mari kita gunakan kiraan bar untuk mengesan bar baru. Kaedah ini lebih ringan dan pantas berbanding dengan kaedah masa.Nyatakan pembolehubah dalam jenis data integer untuk menyimpan kiraan bar.Tetapkan kiraan bar untuk "BarsTotal_OnInt" semasa inisialisasi.Gunakan fungsi iBars(); untuk menetapkan kiraan bar bagi pembolehubah "BarsTotal_OnTick" pada carta langsung. Pembolehubah ini akan dikemas kini pada setiap tick.Gunakan komen dan peringatan untuk memeriksa ketepatan kod.int BarsTotal_OnInt; int BarsTotal_OnTick; //+------------------------------------------------------------------+ //| Fungsi inisialisasi pakar                                    | //+------------------------------------------------------------------+ int OnInit()   {      BarsTotal_OnInt = iBars(NULL,PERIOD_CURRENT); // Menetapkan jumlah bar semasa inisialisasi    return(INIT_SUCCEEDED);   }    void OnTick() // Fungsi OnTick   {      BarsTotal_OnTick = iBars(NULL,PERIOD_CURRENT); // Menyimpan jumlah terkini       if(BarsTotal_OnTick > BarsTotal_OnInt) // Bar baru telah tiba    {     BarsTotal_OnInt = BarsTotal_OnTick; // Mengemas kini sejarah.     Alert("Bar Baru telah tiba");     Comment("Kiraan Bar dalam sejarah -: ", BarsTotal_OnInt, "\n", "Kiraan Bar dalam Langsung -: ", BarsTotal_OnTick); // Kod anda di sini. -------------------------- // Anda boleh mengemas kini "bendera" / pembolehubah untuk digunakan kemudian juga.    }   }

2024.04.11
Cara Menggunakan Trailing Stop di MetaTrader 5 untuk Trader Malaysia
MetaTrader5
Cara Menggunakan Trailing Stop di MetaTrader 5 untuk Trader Malaysia

Kod ini berfungsi sama ada anda menggunakan Stop Loss atau tidak. Keperluan Anda perlu memasukkan "Trade.mqh" untuk mengakses kelas CTrade yang membolehkan anda bekerja dengan posisi dan pesanan. #include &lt;Trade\Trade.mqh&gt; // &lt;&lt;------------------------------------------ Sertakan "Trade.mqh" untuk mengakses Kelas CTrade Anda perlu menetapkan parameter input untuk menyesuaikan jarak trailing mengikut keperluan anda. Ini tidak wajib, tetapi lebih mudah. input double Traling_Step = 3.0; Anda perlu mendefinisikan instance untuk kelas CTrade. Namanya boleh apa saja. Lebih baik jika diletakkan selepas pengendali acara OnInit. CTrade trade; // &lt;&lt;------------------------------------------ Deklarasikan kelas "CTrade". Anda boleh mengganti "trade" dengan nama lain yang anda mahu Kemudian, anda perlu membuat pernyataan if untuk memeriksa jika ada posisi yang sedang berjalan pada masa ini. Pernyataan ini memanggil fungsi Check_TrailingStop(); untuk setiap tick. Ini penting kerana EA perlu trailing dengan tajam dan lancar. Pastikan untuk meletakkan pernyataan ini di atas pengendali acara OnTick agar berfungsi dengan baik. int OnInit() { //--- buat timer EventSetTimer(60); return(INIT_SUCCEEDED); } void OnTick() { if(PositionsTotal() > 0) { Check_TralingStop(); } } Anda perlu mendeklarasikan fungsi khusus yang dipanggil Check_TrailingStop(); (dalam kes ini) untuk melakukan selebihnya. Anda boleh menggunakan nama apa pun yang anda mahu. Fungsi khusus ini akan mengulangi semua posisi yang dibuka dan trailing mengikut jarak yang anda perlukan. void Check_TralingStop() { int totalPositions = PositionsTotal(); for(int count = 0; count < totalPositions; count++) { ulong TicketNo = PositionGetTicket(count); // Mendapatkan nombor tiket posisi menggunakan 'indeks' posisi. if(PositionSelectByTicket(TicketNo)) { if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) { double openPrice = PositionGetDouble(POSITION_PRICE_OPEN); double stopLoss = PositionGetDouble(POSITION_SL); double takeProfit = PositionGetDouble(POSITION_TP); double bidPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID); ulong ticket = PositionGetTicket(count); double trailingLevel = NormalizeDouble(bidPrice - (Traling_Step * Point()), _Digits); if(stopLoss < openPrice) { if(bidPrice > openPrice && trailingLevel > openPrice) trade.PositionModify(ticket, trailingLevel, takeProfit); } if(bidPrice > openPrice && trailingLevel > stopLoss) { trade.PositionModify(ticket, trailingLevel, takeProfit); } } if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL) { double openPrice = PositionGetDouble(POSITION_PRICE_OPEN); double stopLoss = PositionGetDouble(POSITION_SL); double takeProfit = PositionGetDouble(POSITION_TP); double bidPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID); double askPrice = SymbolInfoDouble(_Symbol, SYMBOL_ASK); ulong ticket = PositionGetTicket(count); double trailingLevel = NormalizeDouble(askPrice + (Traling_Step * Point()), _Digits); if(stopLoss < openPrice) { if(askPrice < openPrice && trailingLevel < openPrice) trade.PositionModify(ticket, trailingLevel, takeProfit); } if(askPrice < openPrice && trailingLevel < stopLoss) { trade.PositionModify(ticket, trailingLevel, takeProfit); } } } } }

2024.04.05
Kod Mudah untuk Mengesan Bar atau Lilin Baru di MetaTrader 5
MetaTrader5
Kod Mudah untuk Mengesan Bar atau Lilin Baru di MetaTrader 5

Dalam artikel kali ini, kita akan membincangkan satu kod yang sangat berguna untuk mengesan sama ada terdapat Bar Baru atau Lilin Baru dalam platform MetaTrader 5. Asas kepada kod ini adalah sangat mudah. Pertama, kod ini menyimpan Waktu Bar/Lilin Sebelumnya. Kemudian, ia menambah 60 saat (yang bersamaan dengan 1 minit; anda juga boleh mengubahnya mengikut keperluan) kepada Waktu Bar sebelumnya untuk mendapatkan nilai waktu tutup Bar/Lilin Semasa. Apabila Waktu Semasa = nilai waktu tutup Bar/Lilin Semasa, ini bermakna satu bar baru telah diterima atau bar semasa telah ditutup. Dalam kod ini, terdapat satu flag (variabel jenis bool 'NewBarReceived') yang mengelakkan pemanggilan berulang kod ini. Ini bermakna kod ini akan dilaksanakan hanya sekali untuk setiap bar/lilin. Fungsi Comment(); dan playsound("ok.wav"); digunakan untuk memeriksa ketepatan kod ini. Anda boleh membuangnya jika tidak diperlukan. Flag ini akan diset semula kepada false apabila waktu semasa melebihi waktu tutup bar semasa untuk memeriksa kedatangan bar seterusnya. (Lihat komen untuk maklumat lanjut). //+------------------------------------------------------------------+ //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;New Bar Detect.mq5 | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;by H A T Lakmal | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; https://t.me/Lakmal846 | //+------------------------------------------------------------------+ bool NewBarReceived = false; // Flag untuk kawalan. //+------------------------------------------------------------------+ //| Fungsi inisialisasi pakar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ int OnInit() &nbsp;&nbsp;{ //--- buat timer &nbsp;&nbsp; EventSetTimer(60); //--- &nbsp;&nbsp; return(INIT_SUCCEEDED); &nbsp;&nbsp;} //+------------------------------------------------------------------+ //| Fungsi deinisialisasi pakar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ void OnDeinit(const int reason) &nbsp;&nbsp;{ //--- hancurkan timer &nbsp;&nbsp; EventKillTimer(); &nbsp;&nbsp;} //+------------------------------------------------------------------+ //| Fungsi tick pakar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ void OnTick() &nbsp;&nbsp;{ &nbsp;&nbsp; datetime TimePreviousBar = iTime(_Symbol,PERIOD_M1,1); &nbsp;&nbsp; datetime TimeCurrentClose = TimePreviousBar + 60; // Waktu Tutup bar semasa. &nbsp;&nbsp; datetime Time_Current = TimeCurrent(); &nbsp;&nbsp; if(Time_Current == TimeCurrentClose &amp;&amp; NewBarReceived == false) &nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PlaySound("ok.wav");&nbsp;&nbsp; // Untuk memeriksa jika berfungsi. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NewBarReceived = true; // Kemas kini flag untuk elakkan pemanggilan berulang. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Kod anda di sini ----- (Lakukan Sesuatu) &nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp; else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Time_Current &gt; TimeCurrentClose) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NewBarReceived = false; // Reset flag untuk bar seterusnya. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Kod anda di sini ----- (Lakukan Sesuatu) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp; Comment("\n" +&nbsp;&nbsp;"\n" +&nbsp;&nbsp;"Waktu Bar Semasa -: " + TimeToString(TimePreviousBar,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "\n" + "Waktu Tutup Semasa -: " +TimeToString(TimeCurrentClose,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "\n" + "Waktu Semasa -: " + TimeToString(Time_Current,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + "\n" +"\n" + "Bar Baru Diterima -: " + NewBarReceived); // Untuk memeriksa pengiraan &nbsp;&nbsp;} //+------------------------------------------------------------------+ //| Fungsi timer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ void OnTimer() &nbsp;&nbsp;{ //--- &nbsp;&nbsp;} //+------------------------------------------------------------------+ //| Fungsi perdagangan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ void OnTrade() &nbsp;&nbsp;{ //--- &nbsp;&nbsp;} //+------------------------------------------------------------------+ //| Fungsi ChartEvent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+------------------------------------------------------------------+ void OnChartEvent(const int id, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const long &amp;lparam, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const double &amp;dparam, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const string &amp;sparam) &nbsp;&nbsp;{ //--- &nbsp;&nbsp;} //+------------------------------------------------------------------+ &nbsp;

2024.04.05
Buku Panduan Jaringan Neural untuk Trading Algoritma dengan MQL5
MetaTrader5
Buku Panduan Jaringan Neural untuk Trading Algoritma dengan MQL5

Buku "Neural networks for algorithmic trading with MQL5" merupakan panduan lengkap untuk anda yang ingin belajar bagaimana menggunakan pembelajaran mesin dan jaringan neural dalam trading. Buku ini ditujukan kepada trader algoritma yang ingin mencipta strategi trading menggunakan teknik kecerdasan buatan yang canggih. Buku ini mempunyai 7 bab yang merangkumi semua yang perlu anda tahu untuk memulakan penggunaan jaringan neural dan mengintegrasikannya ke dalam robot trading anda dalam persekitaran MQL5. Dengan penjelasan yang mudah diikuti, anda akan mempelajari asas-asas pembelajaran mesin dan pelbagai jenis jaringan neural, termasuk model konvolusional dan rekuren, serta penyelesaian arsitektur yang lebih kompleks dan mekanisme perhatian. Untuk membantu anda mengintegrasikan penyelesaian ini ke dalam robot trading anda, buku ini menyediakan pelbagai contoh praktikal. Tambahan pula, buku ini meneroka pelbagai kaedah untuk meningkatkan konvergensi model, seperti Normalisasi Batch dan Dropout. Selanjutnya, penulis memberikan panduan praktikal tentang cara melatih jaringan neural dan menggabungkannya ke dalam strategi trading anda. Anda akan belajar bagaimana untuk mencipta Expert Advisor bagi menguji prestasi model yang telah dilatih pada data baru, membolehkan anda menilai potensi mereka dalam pasaran kewangan sebenar. "Neural networks for algorithmic trading with MQL5" bukan sekadar buku: ia adalah panduan berguna yang dapat membantu anda mengintegrasikan teknik pengambilan keputusan yang maju ke dalam algoritma trading anda dan berpotensi meningkatkan hasil kewangan. Mulakan pembelajaran tentang kemampuan canggih pembelajaran mesin hari ini dan tingkatkan trading anda ke tahap yang lebih tinggi.

2024.02.29
Amaran Bunyi Sambungan Terputus untuk MetaTrader 5
MetaTrader5
Amaran Bunyi Sambungan Terputus untuk MetaTrader 5

Hai trader! Hari ini kita akan berbincang tentang satu alat yang sangat berguna, iaitu Amaran Bunyi Sambungan Terputus untuk platform MetaTrader 5. Alat ini membolehkan anda menerima notifikasi bunyi setiap kali sambungan anda terputus atau disambung semula. Untuk memulakan, anda perlu menambah fail bunyi dalam folder MQL5\Files\Sounds. Pastikan anda mempunyai fail .wav untuk sambungan dan terputus. Ini adalah langkah yang mudah untuk memastikan anda tidak terlepas sebarang perubahan pada sambungan anda. Berikut adalah cara untuk menyiapkan EA ini: Salin kod di bawah dan kompilasi alat EA. Kod ini termasuk baris komen yang menerangkan penggunaan #resource, yang mungkin menyukarkan muat naik fail. //+------------------------------------------------------------------+ //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connect_Disconnect_Sound_Alert.mq5 | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hak Cipta 2024, Rajesh Kumar Nait | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;https://www.mql5.com/en/users/rajeshnait/seller | //+------------------------------------------------------------------+ #property copyright "Hak Cipta 2024, Rajesh Kumar Nait" #property link&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"https://www.mql5.com/en/users/rajeshnait/seller" #property version&nbsp;&nbsp; "1.00" #include &lt;Trade/TerminalInfo.mqh&gt; bool&nbsp;&nbsp;&nbsp;&nbsp; first&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = true; bool&nbsp;&nbsp;&nbsp;&nbsp; Now_IsConnected&nbsp;&nbsp; = false; bool&nbsp;&nbsp;&nbsp;&nbsp; Pre_IsConnected&nbsp;&nbsp; = true; datetime Connect_Start = 0, Connect_Stop = 0; CTerminalInfo terminalInfo; //--- Fail bunyi #resource "\Files\Sounds\CONNECTED.wav" #resource "\Files\Sounds\DISCONNECTED.wav" //+------------------------------------------------------------------+ //| Fungsi inisialisasi pakar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ int OnInit() &nbsp;&nbsp;{ //--- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResetLastError(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while ( !IsStopped() ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pre_IsConnected = Now_IsConnected; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Now_IsConnected = terminalInfo.IsConnected(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( first ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pre_IsConnected = !Now_IsConnected; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( Now_IsConnected != Pre_IsConnected ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( Now_IsConnected ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connect_Start = TimeLocal(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( !first ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!PlaySound("::Files\Sounds\DISCONNECTED.wav")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Print("Ralat: ",GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( IsStopped() ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!PlaySound("::Files\Sounds\CONNECTED.wav")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print("Ralat: ",GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connect_Stop = TimeLocal(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( !first ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!PlaySound("::Files\Sounds\CONNECTED.wav")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Print("Ralat: ",GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( IsStopped() ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!PlaySound("::Files\Sounds\DISCONNECTED.wav")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print("Ralat: ",GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; first = false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sleep(1000); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} //--- &nbsp;&nbsp; return(INIT_SUCCEEDED); &nbsp;&nbsp;} //+------------------------------------------------------------------+ Saya juga telah sediakan video panduan untuk anda. Anda boleh menontonnya di bawah:

2024.01.08
Alat MQL5 Lanjutan untuk Trader: Panduan Penuh
MetaTrader5
Alat MQL5 Lanjutan untuk Trader: Panduan Penuh

Bahagian 7. Alat MQL5 Lanjutan "Bahagian 7. Alat MQL5 Lanjutan" dari buku "Pemrograman MQL5 untuk Trader" membincangkan kemampuan canggih API MQL5 yang akan sangat berguna ketika membangunkan program untuk MetaTrader 5. Ini termasuk simbol kewangan khusus, acara kalendar ekonomi terbina dalam, dan teknologi umum seperti rangkaian, pangkalan data, dan kriptografi. Bahagian ini juga membahas tentang perpustakaan – satu jenis program khas yang menyediakan API siap pakai untuk menyambung kepada program MQL lain. Ia juga membincangkan kemungkinan membangunkan pakej perisian dan menggabungkan program-program yang saling berkaitan secara logik ke dalam projek. Akhirnya, bahagian ini mempersembahkan integrasi dengan persekitaran perisian lain, termasuk Python. Kita akan mula dengan mempelajari sumber yang merupakan fail dari pelbagai jenis yang boleh disisipkan dalam kod program. Sumber-sumber ini boleh mengandungi: Elemen multimedia "Tetapan keras" dari program luar Program MQL5 lain dalam bentuk terkompilasi Persekitaran pembangunan MQL5 membenarkan penyertaan array data aplikasi, gambar, bunyi, dan fon dalam fail sumber, menjadikan program ini sebagai produk yang berdikari dan mudah digunakan oleh pengguna akhir. Perhatian khas akan diberikan kepada sumber grafik dengan imej raster dalam format BMP: Anda akan belajar bagaimana untuk mencipta, mengedit, dan memaparkannya secara dinamik di carta. Kita akan mengakhiri bahagian terakhir buku ini dengan mempelajari integrasi OpenCL dalam MQL5. OpenCL adalah standard terbuka untuk pemrograman selari dalam sistem multiprosesor, termasuk pemproses grafik (GPU) dan unit pemproses pusat (CPU). Ia membolehkan percepatan tugas yang memerlukan pengiraan intensif dengan syarat algoritma boleh diparalelkan. Ini mungkin termasuk latihan rangkaian neural, transformasi Fourier, dan penyelesaian sistem persamaan. Pemanfaatan OpenCL dalam program MQL memerlukan kehadiran pemacu khas dari pengeluar dan sokongan untuk versi OpenCL 1.1 dan ke atas. Kehadiran kad grafik tidak wajib, kerana pemproses pusat juga boleh digunakan untuk pengiraan selari.

2023.12.16
Pertama Sebelumnya 1 2 3 4 5 6 7 8 9 10 Seterusnya Terakhir