Perdagangan Sistem

AK-47 Scalper EA: Panduan Lengkap untuk MetaTrader 4
MetaTrader4
AK-47 Scalper EA: Panduan Lengkap untuk MetaTrader 4

1. Parameter Input #define ExtBotName "AK-47 Scalper EA" // Nama Bot #define  Version "1.00" //--- parameter input--- extern string  EASettings        = "---------------------------------------------"; //-------- <Pengaturan EA> -------- input int      InpMagicNumber    = 124656;   //Nomor Keajaiban extern string  TradingSettings   = "---------------------------------------------"; //-------- <Pengaturan Trading> -------- input double   Inpuser_lot       = 0.01;     //Lots input double   InpSL_Pips        = 3.5;      //Stoploss (dalam Pips) input double   InpMax_spread     = 0.5;      //Spread maksimum yang diizinkan (dalam Pips) (0 = mengambang) extern string  MoneySettings     = "---------------------------------------------"; //-------- <Pengaturan Uang> -------- input bool     isVolume_Percent  = true;     //Izinkan Persentase Volume input double   InpRisk           = 3        //Persentase Risiko dari Saldo (%) input string   TimeSettings      = "---------------------------------------------"; //-------- <Pengaturan Waktu Trading> -------- input bool     InpTimeFilter     = true      //Filter Waktu Trading input int      InpStartHour      = 2         //Jam Mulai input int      InpStartMinute    = 30        //Menit Mulai input int      InpEndHour        = 21        //Jam Selesai input int      InpEndMinute      = 0         //Menit Selesai 2. Inisialisasi Variabel Lokal //--- Variabel int      Pips2Points;               // slippage  3 pips    3=points    30=points double   Pips2Double;               // Stoploss 15 pips    0.015      0.0150 int      InpMax_slippage   = 3;     // Maksimal slippage yang diizinkan_Pips. bool     isOrder           = false; // hanya buka 1 order int      slippage; string   strComment        = ""; 3. Kode Utama a/ Fungsi inisialisasi Expert int OnInit()   { //---      //Deteksi 3 atau 5 digit    //Pip dan point    if (Digits % 2 == 1)    {       Pips2Double  = _Point*10;       Pips2Points  = 10;       slippage = 10* InpMax_slippage;    }    else    {           Pips2Double  = _Point;       Pips2Points  =  1;       slippage = InpMax_slippage;    }    //---    return(INIT_SUCCEEDED);   } b/ Fungsi tick Expert void OnTick()   { //---      if(IsTradeAllowed() == false)      {       Comment("AK-47 EA\nTrading tidak diizinkan.");       return;      }             MqlDateTime structTime;        TimeCurrent(structTime);        structTime.sec = 0;               //Set waktu mulai        structTime.hour = InpStartHour;        structTime.min = InpStartMinute;              datetime timeStart = StructToTime(structTime);               //Set waktu Selesai        structTime.hour = InpEndHour;        structTime.min = InpEndMinute;        datetime timeEnd = StructToTime(structTime);               double acSpread = MarketInfo(Symbol(), MODE_SPREAD);        StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);              strComment = "\n" + ExtBotName + " - v." + (string)Version;       strComment += "\nWaktu GMT = " + TimeToString(TimeGMT(),TIME_DATE|TIME_SECONDS);       strComment += "\nWaktu Trading = [" + (string)InpStartHour + "h" + (string)InpStartMinute + " --> " +  (string)InpEndHour + "h" + (string)InpEndMinute + "]";              strComment += "\nSpread Saat Ini = " + (string)acSpread + " Points";       strComment += "\nStoppLevel Saat Ini = " + (string)StopLevel + " Points";              Comment(strComment);          //Perbarui Nilai       UpdateOrders();              TrailingStop();              //Cek Waktu Trading       if(InpTimeFilter)       {          if(TimeCurrent() >= timeStart && TimeCurrent() < timeEnd)          {             if(!isOrder) OpenOrder();          }       }       else       {          if(!isOrder) OpenOrder();       }   } 3.1 Menghitung sinyal untuk mengirimkan order void OpenOrder(){       //int OrdType = OP_SELL;//-1;    double TP = 0;    double SL = 0;    string comment = ExtBotName;    //Menghitung Lots    double lot1 = CalculateVolume();       //if(OrdType == OP_SELL){       double OpenPrice = NormalizeDouble(Bid - (StopLevel * _Point) - (InpSL_Pips/2) * Pips2Double, Digits);       SL = NormalizeDouble(Ask + StopLevel * _Point + InpSL_Pips/2 * Pips2Double, Digits);              if(CheckSpreadAllow())                                    //Cek Spread       {          if(!OrderSend(_Symbol, OP_SELLSTOP, lot1, OpenPrice, slippage, SL, TP, comment, InpMagicNumber, 0, clrRed))          Print(__FUNCTION__,"--> Kesalahan OrderSend ",GetLastError());       }    //} } 3.2 Menghitung Volume double CalculateVolume()   {    double LotSize = 0;    if(isVolume_Percent == false)      {       LotSize = Inpuser_lot;      }    else      {       LotSize = (InpRisk) * AccountFreeMargin();       LotSize = LotSize /100000;       double n = MathFloor(LotSize/Inpuser_lot);       //Comment((string)n);       LotSize = n * Inpuser_lot;       if(LotSize < Inpuser_lot)          LotSize = Inpuser_lot;       if(LotSize > MarketInfo(Symbol(),MODE_MAXLOT))          LotSize = MarketInfo(Symbol(),MODE_MAXLOT);       if(LotSize < MarketInfo(Symbol(),MODE_MINLOT))          LotSize = MarketInfo(Symbol(),MODE_MINLOT);      }    return(LotSize);   } 3.3 EA memiliki fungsi "trailing Stop", SL akan berubah setiap kali harga berubah (turun) void TrailingStop()   {    for(int i = OrdersTotal() - 1; i >= 0; i--)      {       if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))         {          if((OrderMagicNumber() == InpMagicNumber) && (OrderSymbol() == Symbol()))   //_Symbol))            {             //Untuk Order Jual             if(OrderType() == OP_SELL)               {                   //--Menghitung SL ketika harga berubah                   double SL_in_Pip = NormalizeDouble(OrderStopLoss() - (StopLevel * _Point) - Ask, Digits) / Pips2Double;                   if(SL_in_Pip > InpSL_Pips){                         double newSL = NormalizeDouble(Ask + (StopLevel * _Point) + InpSL_Pips * Pips2Double, Digits);                         if(!OrderModify(OrderTicket(), OrderOpenPrice(), newSL, OrderTakeProfit(), 0, clrRed))                         {                            Print(__FUNCTION__,"--> Kesalahan OrderModify ",GetLastError());                         {                           continue;                                                                                 }                         }             }                          //Untuk Order SellStop             else if(OrderType() == OP_SELLSTOP)               {                   double SL_in_Pip = NormalizeDouble(OrderStopLoss() - (StopLevel * _Point) - Ask, Digits) / Pips2Double;                                      if(SL_in_Pip < InpSL_Pips/2){                      double newOP = NormalizeDouble(Bid - (StopLevel * _Point) - (InpSL_Pips/2) * Pips2Double, Digits);                      double newSL = NormalizeDouble(Ask + (StopLevel * _Point) + (InpSL_Pips/2) * Pips2Double, Digits);                                           if(!OrderModify(OrderTicket(), newOP, newSL, OrderTakeProfit(), 0, clrRed))                         Print(__FUNCTION__,"--> Kesalahan Modify PendingOrder!", GetLastError());                         continue;                            }                           }                           }                                    }     }   }

2023.01.14
XP Forex Trade Manager MT5: Solusi Manajemen Order Mudah untuk MetaTrader 5
MetaTrader5
XP Forex Trade Manager MT5: Solusi Manajemen Order Mudah untuk MetaTrader 5

Halo, Sobat Trader! Hari ini kita akan membahas tentang Forex Trade Manager MT5, sebuah alat yang sangat membantu dalam mengelola order terbuka di MetaTrader 5. Dengan menggunakan Forex Trade Manager, setiap kali kamu membuka order baru, manajer ini otomatis akan mengatur Stop Loss dan Take Profit untukmu. Jadi, saat harga bergerak, program ini bisa memindahkan Stop Loss ke Break Even (SL = harga buka) atau terus memindahkan Stop Loss (Trailing Stop) untuk melindungi keuntungannya. Forex Trade Manager dapat mengontrol order hanya untuk simbol saat ini (di mana EA berfungsi) atau untuk semua order yang terbuka (tanpa mempedulikan simbol) dan dapat menyembunyikan Stop Loss dan Take Profit dari broker. Ini adalah strategi yang sangat berguna untuk manajemen trading manual (baik yang dibuka di semua simbol atau hanya simbol pada chart saat ini) dengan: Menentukan Stop Loss dan/atau Take Profit untuk trading dalam pips. Fungsi Trailing Stop yang mengikuti harga untuk memindahkan SL. Break Even yang memindahkan SL ke BE pada jarak yang dipilih. SL/TP bisa dikelola oleh broker (cara standar) atau dalam mode stealth – tersembunyi dari broker. Parameter: “SLTP Params” Stop Loss – stop loss dalam pips untuk trading Take Profit – take profit dalam pips untuk trading “Break Even” UseBreakEven (true/false) – mengizinkan penggunaan hanya fungsi break-even untuk trading yang terbuka BEActivation – profit dalam pips ketika fungsi break even diaktifkan BELevel – jarak tambahan dari BE dalam pips ketika SL ditempatkan oleh fungsi break even “Trailing Stop” UseTrailingStop (true/false) – mengizinkan penggunaan hanya fungsi trailing stop untuk trading yang terbuka TSStart – profit dalam pips ketika fungsi trailing stop diaktifkan TSStep – perbedaan minimum dalam pips antara SL baru dan saat ini untuk mengizinkan pemindahan SL oleh fungsi trailing stop TSDistance – jarak dari harga saat ini dalam pips ketika SL ditempatkan oleh fungsi trailing stop “Perilaku” StealthMode (true/false) – menyembunyikan level SL/TP dari broker dan EA menutup trading pada level tersebut secara programatik OnlyCurrentPair (true/false) – mengizinkan manajemen trading hanya dari simbol chart saat ini (true) atau dari semua pasangan (false) Info: Semua parameter untuk trading dan fungsi dapat diatur dalam parameter EA. Forex Trade Manager juga menampilkan informasi tentang profit/rugi harian saat ini dalam pips dan mata uang akun di chart.

2023.01.10
Pengelola Perdagangan Forex Grid MT5: Solusi Cerdas untuk Trader
MetaTrader5
Pengelola Perdagangan Forex Grid MT5: Solusi Cerdas untuk Trader

Pengelola Perdagangan Forex Grid MT5 adalah alat yang memudahkan kamu dalam mengelola order dan mencapai target keuntungan. Cukup dengan menempatkan order pertama dengan Take Profit, jalankan EA, dan atur parameter profit (pips) yang kamu inginkan. EA ini akan mengambil alih pengelolaan posisi kamu, mengumpulkan jumlah pips yang telah ditentukan. Strategi ini dirancang untuk mengelola perdagangan manual yang dibuka pada pasangan mata uang saat ini. Strategi ini menambahkan posisi pada perdagangan yang sudah terbuka dengan manajemen grid (dengan jarak yang dipilih dalam pips antara perdagangan) - hingga 15 transaksi (atau kurang). Tiga perdagangan pertama dikelola dengan Take Profit yang terpisah, setelah perdagangan keempat, EA akan menutup seluruh grid pada level umum (break-even). Setelah menutup perdagangan pada TP, siklus ini dapat diperbarui. Seluruh siklus dapat ditutup jika kerugian melebihi persentase risiko saldo yang diizinkan. Parameter: "Parameter Perdagangan Tambahan": AddNewTradeAfter – jarak dalam pips dari perdagangan terakhir setelah perdagangan ditambahkan ke grid. “Take Profit”: TakeProfit1Total (angka) – total TP dalam pips yang diperlukan dari posisi pertama. TakeProfit1Partitive – TP awal dalam pips untuk posisi pertama dalam siklus. TakeProfit1Offset – jarak minimum dalam pips dari take profit posisi pertama yang telah ditutup untuk memperbarui perdagangan pertama ini. TakeProfit 2/3 – TP individu dalam pips untuk posisi kedua/ketiga dalam siklus. TakeProfit 4/5/6/…15Total – total TP dalam pips dari semua posisi dalam siklus (untuk 4 atau lebih perdagangan yang dibuka). “Parameter Perdagangan”: MaxOrders – jumlah maksimum perdagangan yang diizinkan dalam grid. Risk Balance % – maksimum kerugian yang diizinkan sebagai persentase dari saldo akun (menutup semua posisi yang dibuka). Lots – ukuran lot untuk perdagangan yang dibuka oleh EA. Slippage – slippage yang diizinkan dalam poin. Info: Semua parameter untuk perdagangan dan fungsi dapat diatur dalam parameter EA. Pengelola Perdagangan Forex Grid juga menampilkan informasi tentang profit/kerugian dari siklus saat ini dalam pips dan mata uang akun.

2023.01.10
XP Forex Trade Manager MT4: Solusi Cerdas untuk Manajemen Trading Anda
MetaTrader4
XP Forex Trade Manager MT4: Solusi Cerdas untuk Manajemen Trading Anda

Halo para trader! Pernahkah Anda merasa kesulitan dalam mengelola order terbuka di MetaTrader 4? Jangan khawatir, Forex Trade Manager MT4 hadir untuk menyederhanakan proses tersebut! Dengan alat ini, setiap kali Anda membuka order baru, manajer ini secara otomatis akan mengatur Stop Loss dan Take Profit untuk Anda. Selain itu, ketika harga bergerak, program ini dapat menggeser Stop Loss ke Break Even (artinya stop loss sama dengan harga buka) atau terus-menerus menggeser Stop Loss (dikenal sebagai Trailing Stop) untuk melindungi keuntungan Anda. Forex Trade Manager ini dapat mengontrol order hanya untuk simbol saat ini (di mana EA bekerja) atau untuk semua order yang terbuka, tanpa memandang simbol, bahkan bisa menyembunyikan Stop Loss dan Take Profit dari broker. Ini adalah strategi manajemen untuk trading manual yang dibuka baik di semua simbol atau hanya simbol pada chart saat ini. Fitur Utama Forex Trade Manager MT4 Pengaturan Stop Loss dan Take Profit: Anda bisa mengatur SL dan TP dalam pips. Fungsi Trailing Stop: Menyesuaikan SL seiring pergerakan harga. Break Even: Memindahkan SL ke BE pada jarak yang dipilih. Stop Loss dan Take Profit dapat dikelola secara standar oleh broker atau dalam stealth mode – yang tersembunyi dari broker. Parameter yang Dapat Disesuaikan “SLTP Params” Stop Loss: Stop loss dalam pips untuk trading. Take Profit: Take profit dalam pips untuk trading. “Break Even” UseBreakEven (true/false): Mengizinkan penggunaan fungsi break-even hanya untuk perdagangan yang terbuka. BEActivation: Keuntungan dalam pips saat fungsi break-even diaktifkan. BELevel: Jarak tambahan dari BE dalam pips ketika SL ditempatkan oleh fungsi break-even. “Trailing Stop” UseTrailingStop (true/false): Mengizinkan penggunaan fungsi trailing stop hanya untuk perdagangan yang terbuka. TSStart: Keuntungan dalam pips saat fungsi trailing stop diaktifkan. TSStep: Perbedaan minimum dalam pips antara SL baru dan saat ini untuk memungkinkan pergerakan SL oleh fungsi trailing stop. TSDistance: Jarak dari harga saat ini dalam pips saat SL ditempatkan oleh fungsi trailing stop. “Behavior” StealthMode (true/false): Menyembunyikan level SL/TP dari broker, dan EA menutup perdagangan pada level tersebut secara programatis. OnlyCurrentPair (true/false): Mengizinkan manajemen perdagangan hanya dari simbol chart saat ini (true) atau dari semua pasangan (false). Info: Semua parameter untuk perdagangan dan fungsi dapat disesuaikan dalam pengaturan EA. Forex Trade Manager juga menampilkan informasi tentang keuntungan/kerugian harian saat ini dalam pips dan mata uang akun Anda di chart.

2023.01.10
Manajemen Trading Sederhana dengan XP Forex Trade Manager Grid MT4
MetaTrader4
Manajemen Trading Sederhana dengan XP Forex Trade Manager Grid MT4

Halo, para trader! Kali ini kita akan membahas salah satu alat yang bisa membantu memudahkan manajemen trading kamu, yaitu Forex Trade Manager Grid MT4. Dengan alat ini, kamu bisa lebih mudah mengelola posisi dan mencapai target profit yang diinginkan. Caranya cukup sederhana: kamu hanya perlu membuka posisi pertama dengan Take Profit, jalankan EA (yang sering kita sebut sebagai Robot Trading), dan atur parameter profit (dalam pips) yang ingin kamu capai. Setelah itu, EA ini akan mengelola posisi kamu dan mengumpulkan jumlah pips sesuai yang ditentukan. Ini adalah strategi untuk mengatur trading manual yang sudah dibuka pada pasangan mata uang saat ini. Strategi ini menambah posisi pada trading yang sudah dibuka dengan manajemen grid (dengan jarak tertentu dalam pips antara trading) hingga maksimal 15 trading (atau kurang). Untuk tiga trade pertama, masing-masing akan dikelola dengan Take Profit yang berbeda, sedangkan setelah trade keempat, EA akan menutup seluruh grid pada level umum (break-even). Setelah menutup trade pada TP, kamu bisa memperbarui posisi. Siklus ini bisa ditutup jika kerugian melebihi persentase risiko saldo yang diperbolehkan. Parameter: Parameter Trade Tambahan: AddNewTradeAfter – jarak dalam pips dari trade terakhir setelah trade ditambahkan ke grid Take Profit TakeProfit1Total (angka) – total TP dalam pips yang dibutuhkan dari posisi pertama TakeProfit1Partitive – TP awal dalam pips untuk posisi pertama dalam siklus TakeProfit1Offset – jarak minimum dalam pips dari TP posisi pertama yang terakhir ditutup yang diperlukan untuk memperbarui trade pertama ini TakeProfit 2/3 – TP individual dalam pips untuk posisi kedua/keseluruhan posisi dalam siklus TakeProfit 4/5/6/...15Total – total TP dalam pips dari semua posisi dalam siklus (untuk 4 atau lebih trade yang dibuka) Parameter Trade: MaxOrders – jumlah maksimum trade yang diperbolehkan dalam grid Risk Balance % – kerugian maksimum yang diperbolehkan sebagai persentase dari saldo akun (menutup semua posisi yang dibuka) Lots – ukuran lot untuk trade yang dibuka oleh EA Slippage – slippage yang diperbolehkan dalam poin Info: Semua parameter untuk trading dan fungsi dapat diatur dalam parameter EA. Forex Trade Manager Grid juga menampilkan informasi tentang profit/kerugian dari siklus saat ini dalam pips dan mata uang akun di chart.

2023.01.10
Lazy Bot MT5: EA Sederhana untuk Trading Harian di MetaTrader 5
MetaTrader5
Lazy Bot MT5: EA Sederhana untuk Trading Harian di MetaTrader 5

Selamat datang di blog saya! Kali ini kita akan membahas tentang Lazy Bot MT5, sebuah EA atau sistem trading yang dirancang untuk melakukan trading harian di MetaTrader 5. Mari kita lihat lebih dalam mengenai parameter dan cara kerjanya! 1. Parameter Input EASettings: "---------------------------------------------" InpMagicNumber: 123456 // Nomor unik untuk EA InpBotName: "LazyBot_V1" // Nama Bot Inpuser_lot: 0.01 // Ukuran lot yang digunakan Inpuser_SL: 5.0 // Stoploss dalam Pips InpAddPrice_pip: 0 // Jarak dari High/Low ke harga order dalam Pips Inpuser_SLippage: 3 // Slippage maksimum yang diizinkan InpMax_spread: 0 // Spread maksimum yang diizinkan (0 = floating) isTradingTime: true // Mengizinkan waktu trading InpStartHour: 7 // Jam mulai trading InpEndHour: 22 // Jam akhir trading isVolume_Percent: false // Mengizinkan Volume Persentase InpRisk: 1 // Persentase risiko dari saldo (%) 2. Inisialisasi Variabel Lokal datetime last; int totalBars; int Pips2Points; // slippage 3 pips double Pips2Double; // Stoploss 15 pips double slippage; double acSpread; string strComment = ""; CPositionInfo m_position; // objek posisi trading CTrade m_trade; // objek trading CSymbolInfo m_symbol; // objek informasi simbol CAccountInfo m_account; // pembungkus informasi akun COrderInfo m_order; // objek order tertunda 3. Kode Utama EA ini akan menghapus semua order lama setiap hari dan mencari nilai tertinggi dan terendah dari bar harian sebelumnya. Kemudian, EA akan mengirimkan dua order tertunda, yaitu BUY_STOP dan SELL_STOP tanpa TakeProfit. a. Fungsi Inisialisasi EA int OnInit() { // Deteksi digit 3 atau 5 if(_Digits % 2 == 1) { Pips2Double = _Point * 10; Pips2Points = 10; slippage = 10 * Inpuser_SLippage; } else { Pips2Double = _Point; Pips2Points = 1; slippage = Inpuser_SLippage; } if (!m_symbol.Name(Symbol())) return(INIT_FAILED); RefreshRates(); m_trade.SetExpertMagicNumber(InpMagicNumber); m_trade.SetMarginMode(); m_trade.SetTypeFillingBySymbol(m_symbol.Name()); m_trade.SetDeviationInPoints(slippage); return(INIT_SUCCEEDED); } b. Fungsi Tick EA void OnTick() { if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) == false) { Comment("LazyBot\nTrading tidak diizinkan."); return; } MqlDateTime timeLocal; MqlDateTime timeServer; TimeLocal(timeLocal); TimeCurrent(timeServer); if(timeServer.day_of_week == 0 || timeServer.day_of_week == 6) return; int hourLocal = timeLocal.hour; int hourCurrent = timeServer.hour; acSpread = SymbolInfoInteger(_Symbol, SYMBOL_SPREAD); strComment = "\nJam Lokal = " + hourLocal; strComment += "\nJam Saat Ini = " + hourCurrent; strComment += "\nSpread = " + (string)acSpread; strComment += "\nTotal Bars = " + (string)totalBars; Comment(strComment); TrailingSL(); if(last != iTime(m_symbol.Name(), PERIOD_D1, 0)) { if(isTradingTime) { if(hourCurrent >= InpStartHour) { DeleteOldOrds(); OpenOrder(); last = iTime(m_symbol.Name(), PERIOD_D1, 0); } } else { DeleteOldOrds(); OpenOrder(); last = iTime(m_symbol.Name(), PERIOD_D1, 0); } } } 3.1 Menghitung Sinyal dan Mengirim Order void OpenOrder() { double TP_Buy = 0, TP_Sell = 0; double SL_Buy = 0, SL_Sell = 0; if(InpMax_spread != 0) { if(acSpread > InpMax_spread) { Print(__FUNCTION__, " > Spread saat ini lebih besar dari yang diizinkan!"); return; } } double Bar1High = m_symbol.NormalizePrice(iHigh(m_symbol.Name(), PERIOD_D1, 1)); double Bar1Low = m_symbol.NormalizePrice(iLow(m_symbol.Name(), PERIOD_D1, 1)); double lot1 = CalculateVolume(); double OpenPrice = m_symbol.NormalizePrice(Bar1High + InpAddPrice_pip * Pips2Double); SL_Buy = m_symbol.NormalizePrice(OpenPrice - Inpuser_SL * Pips2Double); totalBars = iBars(m_symbol.Name(), PERIOD_D1); string comment = InpBotName + ";" + m_symbol.Name() + ";" + totalBars; if(CheckVolumeValue(lot1) && CheckOrderForFREEZE_LEVEL(ORDER_TYPE_BUY_STOP, OpenPrice) && CheckMoneyForTrade(m_symbol.Name(), lot1, ORDER_TYPE_BUY) && CheckStopLoss(OpenPrice, SL_Buy)) { if(!m_trade.BuyStop(lot1, OpenPrice, m_symbol.Name(), SL_Buy, TP_Buy, ORDER_TIME_GTC, 0, comment)) { Print(__FUNCTION__, "--> Error Buy"); } } OpenPrice = m_symbol.NormalizePrice(Bar1Low - InpAddPrice_pip * Pips2Double); SL_Sell = m_symbol.NormalizePrice(OpenPrice + Inpuser_SL * Pips2Double); if(CheckVolumeValue(lot1) && CheckOrderForFREEZE_LEVEL(ORDER_TYPE_SELL_STOP, OpenPrice) && CheckMoneyForTrade(m_symbol.Name(), lot1, ORDER_TYPE_SELL) && CheckStopLoss(OpenPrice, SL_Sell)) { if(!m_trade.SellStop(lot1, OpenPrice, m_symbol.Name(), SL_Sell, TP_Sell, ORDER_TIME_GTC, 0, comment)) { Print(__FUNCTION__, "--> Error Sell"); } } } 3.2 Menghapus Semua Order Lama void DeleteOldOrds() { string sep=";"; ushort u_sep; string result[]; for(int i = OrdersTotal() - 1; i >= 0; i--) { if(m_order.SelectByIndex(i)) { u_sep = StringGetCharacter(sep, 0); string Ordcomment = m_order.Comment(); int k = StringSplit(Ordcomment, u_sep, result); if(k > 2) { string sym = m_symbol.Name(); if((m_order.Magic() == InpMagicNumber) && (sym == result[1])) { m_trade.OrderDelete(m_order.Ticket()); } } } } } 3.3 Fungsi Trailing StopLoss void TrailingSL() { double SL_in_Pip = 0; for(int i = PositionsTotal() - 1; i >= 0; i--) { if(m_position.SelectByIndex(i)) { if((m_position.Magic() == InpMagicNumber) && (m_position.Symbol() == m_symbol.Name())) { double order_stoploss1 = m_position.StopLoss(); if(m_position.PositionType() == POSITION_TYPE_BUY) { SL_in_Pip = NormalizeDouble((Bid - order_stoploss1), _Digits) / Pips2Double; if(SL_in_Pip > Inpuser_SL) { order_stoploss1 = NormalizeDouble(Bid - (Inpuser_SL * Pips2Double), _Digits); m_trade.PositionModify(m_position.Ticket(), order_stoploss1, m_position.TakeProfit()); } } if(m_position.PositionType() == POSITION_TYPE_SELL) { SL_in_Pip = NormalizeDouble((m_position.StopLoss() - Ask), _Digits) / Pips2Double; if(SL_in_Pip > Inpuser_SL) { order_stoploss1 = NormalizeDouble(Ask + (Inpuser_SL * Pips2Double), _Digits); m_trade.PositionModify(m_position.Ticket(), order_stoploss1, m_position.TakeProfit()); } } } } } 3.4 Memeriksa Nilai Volume bool CheckVolumeValue(double volume) { double min_volume = m_symbol.LotsMin(); double max_volume = m_symbol.LotsMax(); double volume_step = m_symbol.LotsStep(); if(volume < min_volume || volume > max_volume) { return(false); } int ratio = (int)MathRound(volume/volume_step); if(MathAbs(ratio * volume_step - volume) > 0.0000001) { return(false); } return(true); } 3.5 Memeriksa FreeLevel bool CheckOrderForFREEZE_LEVEL(ENUM_ORDER_TYPE type, double price) { int freeze_level = (int)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_FREEZE_LEVEL); bool check = false; switch(type) { case ORDER_TYPE_BUY_STOP: check = ((price - Ask) > freeze_level * _Point); return(check); case ORDER_TYPE_SELL_STOP: check = ((Bid - price) > freeze_level * _Point); return(check); } return false; } 3.6 Memeriksa Uang untuk Trading bool CheckMoneyForTrade(string symb, double lots, ENUM_ORDER_TYPE type) { MqlTick mqltick; SymbolInfoTick(symb,mqltick); double price = mqltick.ask; if(type == ORDER_TYPE_SELL) price = mqltick.bid; double margin, free_margin = AccountInfoDouble(ACCOUNT_MARGIN_FREE); if(!OrderCalcMargin(type,symb,lots,price,margin)) { Print("Error in ",__FUNCTION__," code=",GetLastError()); return(false); } if(margin > free_margin) { Print("Not enough money for ", EnumToString(type)," ", lots," ", symb," Error code=",GetLastError()); return(false); } return(true); } 3.7 Memeriksa Stoploss bool CheckStopLoss(double price, double SL) { int stops_level = (int)SymbolInfoInteger(m_symbol.Name(), SYMBOL_TRADE_STOPS_LEVEL); if(stops_level != 0) { PrintFormat("SYMBOL_TRADE_STOPS_LEVEL=%d: StopLoss dan TakeProfit tidak boleh lebih dekat dari %d poin dari harga penutupan", stops_level, stops_level); } bool SL_check = false; return SL_check = MathAbs(price - SL) > (stops_level * m_symbol.Point()); } Jangan lupa untuk menonton video tutorial MQL4 dan MQL5 berikut untuk memperdalam pemahaman Anda tentang EA ini: Video MQL4 Video MQL5

2022.12.14
Strategi Mean Reversion: Solusi Cerdas untuk Trading di MetaTrader 4
MetaTrader4
Strategi Mean Reversion: Solusi Cerdas untuk Trading di MetaTrader 4

Strategi Mean Reversion adalah cara yang sangat efektif untuk trading, terutama pada pasangan forex utama di timeframe harian. Mari kita bahas beberapa hal penting yang perlu Anda ketahui! Hal yang Perlu Diperhatikan Selalu coba di akun demo terlebih dahulu. EA ini hanya melakukan trading berdasarkan harga pada candle yang terbuka! Jika Anda tidak ingin meningkatkan ukuran lot saat mengalami kerugian, atur: IncreaseFactor=0. Pengaturan EA Berikut adalah beberapa pengaturan yang bisa Anda sesuaikan: Use_TP_In_Money - Gunakan Take Profit dalam bentuk uang (nilai: true/false). TP_In_Money - Take Profit dalam bentuk uang (nilai: 10-100). Use_TP_In_percent - Gunakan Take Profit dalam persen (nilai: true/false). TP_In_Percent - Take Profit dalam persen (nilai: 10-100). ------------[Trailing Stop Uang untuk Banyak Trade]---------------------- Enable_Trailing - Aktifkan trailing dengan uang (nilai: true/false). Take Profit dalam uang (dalam mata uang saat ini) (nilai: 25-200). Stop Loss dalam uang (dalam mata uang saat ini) (nilai: 1-20). -------------------------------------------------------------------------------------- Exit - Tutup trade jika arah tren berlawanan dan kontrol drawdown (nilai: true/false). BarsToCount - Jumlah bar yang dihitung (nilai: 1-20). Lots - Ukuran lot (nilai: 0.01-1). Lots size Exponent (nilai: 1.01-2). IncreaseFactor - Seberapa banyak untuk meningkatkan lot dari total margin jika Anda mengalami kerugian (nilai: 0.001-0.1). Stop_Loss - Stop Loss (nilai: 30-500). /atur nilai 600 untuk Banyak Trade. MagicNumber - Nomor ajaib (nilai: 1-100000). TakeProfit - Take Profit (nilai: 50-200). /atur nilai 600 untuk Banyak Trade. FastMA - Rata-rata bergerak cepat (nilai: 1-20). SlowMA - Rata-rata bergerak lambat (nilai: 50-200). Mom_Sell - Trigger Momentum Jual (nilai: 0.1-0.9). Mom_Buy - Trigger Momentum Beli (nilai: 0.1-0.9). ---------------------KONTROL DRAW DOWN----------------------------- UseEquityStop - (nilai: true/false). TotalEquityRisk - (nilai: 0.01-20). ------------------------------------------------------------------------------- Max_Trades (1-12). FractalNum - Jumlah High dan Low (nilai: 1-10). ----------------JIKA ANDA HANYA MENGGUNAKAN 1 TRADE:----------------------- ///////////////////////////////////////////////////////////////////// USETRAILINGSTOP - Jika menggunakan trailing stop (nilai: true/false). WHENTOTRAIL - Kapan untuk trailing (nilai: 40-100). TRAILAMOUNT - Jumlah trailing (nilai: 40-100). Distance From Candle - Jarak dari candle (nilai: 1-100). USECANDELTRAIL - Jika menggunakan trailing stop (nilai: true/false). X = 2 - jumlah candle (nilai: 1-100). USEMOVETOBREAKEVEN - Aktifkan "break even" (nilai: true/false). WHENTOMOVETOBE - Kapan untuk pindah ke break even (nilai: 1-30). PIPSTOMOVESL = 30 - Berapa banyak pips untuk memindahkan stop loss (nilai: 1-30). - Anda sebaiknya mengoptimalkan EA ini setiap beberapa bulan dan menggunakan pengaturan yang sama seperti di atas.- Anda bisa menggunakannya sebagai hedging grid EA atau sebagai EA satu trade.- Cara melakukan back test: https://bit.ly/2CD7XWD

2022.10.26
Mengoptimalkan Trailing Stop dengan Parabolic SAR di MetaTrader 5
MetaTrader5
Mengoptimalkan Trailing Stop dengan Parabolic SAR di MetaTrader 5

Halo, para trader! Hari ini kita akan membahas cara mengoptimalkan trailing stop menggunakan Parabolic SAR di MetaTrader 5. Teknik ini sangat berguna untuk menjaga profit kita tetap aman, terutama dalam pasar yang fluktuatif. Parameter yang Digunakan Mode Trailing: None / Trailing Fixed / Trailing Fixed Parabolic SAR Kita akan melakukan perhitungan Parabolic SAR untuk mengatur trailing stop. Berikut adalah contoh kode yang bisa kamu gunakan: bool CSampleExpert::LongModifiedEx(void) { bool res=false; //--- cek untuk trailing stop if(m_trailing_max &lt; m_last_bar.high) { double tp=m_position.TakeProfit(); double sl=m_position.StopLoss(); //--- menghitung ParabolicSAR m_trailing_max = m_last_bar.high; m_trailing_step = fmin(InpPSAR_Maximum, m_trailing_step + InpPSAR_Step); double sar_stop = sl + (m_trailing_max - sl)* m_trailing_step; sar_stop=NormalizeDouble(sar_stop,m_symbol.Digits()); //--- if((sl==0.0 || sl &lt; sar_stop) &amp;&amp; sar_stop &lt; m_symbol.Bid()) { //--- ubah posisi if(m_trade.PositionModify(Symbol(),sar_stop,tp)) printf("Long position by %s to be modified",Symbol()); else { printf("Error modifying position by %s : '%s'",Symbol(),m_trade.ResultComment()); printf("Modify parameters : SL=%f,TP=%f",sar_stop,tp); } //--- sudah dimodifikasi dan harus keluar dari expert res=true; } } //--- hasil return(res); } Dengan menggunakan kode di atas, kamu bisa mengatur trailing stop yang lebih efisien dan menjaga posisi trading kamu tetap aman. Selamat mencoba, dan semoga profit selalu menyertai!

2022.07.09
Awal Sebelumnya 6 7 8 9 10 11 12 13 14 15 16 Berikutnya Akhir