//+------------------------------------------------------------------+
//| TrendMaster.mq5 |
//| Copyright 2025, FXMaster Labs, Version 1.5 |
//| https://www.fxmlabs.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, FXMaster Labs"
#property link "https://www.fxmlabs.com"
#property version "1.5"
#property description "Expert Advisor dengan konfirmasi multi-timeframe dan manajemen risiko adaptif"
//+------------------------------------------------------------------+
//| Input parameters |
//+------------------------------------------------------------------+
input group "Strategy Settings"
input int FastMAPeriod = 12; // Periode MA Cepat
input int SlowMAPeriod = 26; // Periode MA Lambat
input double MinADXLevel = 25.0; // Level Min ADX (Kekuatan Trend)
input int ATRPeriod = 14; // Periode ATR untuk Volatilitas
input group "Risk Management"
input double RiskPercent = 1.0; // Risiko per Trade (% Equity)
input double RewardRatio = 2.0; // Rasio Risk:Reward
input bool UseTrailingStop = true; // Gunakan Trailing Stop
input int NewsFilterHours = 2; // Jam Sebelum/Sesudah Berita (Nonaktifkan)
input group "Trade Execution"
input int MagicNumber = 12345; // EA Magic Number
input string TradeComment = "TrendMaster"; // Komentar Order
//+------------------------------------------------------------------+
//| Global variables |
//+------------------------------------------------------------------+
int handleFastMA, handleSlowMA, handleADX, handleATR;
datetime lastTradeTime;
const long pipValue = 100000; // Untuk EURUSD (1 pip = 0.00010)
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
// Inisialisasi indikator
handleFastMA = iMA(_Symbol, PERIOD_CURRENT, FastMAPeriod, 0, MODE_EMA, PRICE_CLOSE);
handleSlowMA = iMA(_Symbol, PERIOD_CURRENT, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE);
handleADX = iADX(_Symbol, PERIOD_CURRENT, 14);
handleATR = iATR(_Symbol, PERIOD_CURRENT, ATRPeriod);
if(handleFastMA == INVALID_HANDLE handleSlowMA == INVALID_HANDLE
handleADX == INVALID_HANDLE || handleATR == INVALID_HANDLE)
{
Print("Error creating indicators");
return(INIT_FAILED);
}
// Verifikasi parameter
if(RiskPercent <= 0 || RiskPercent > 5)
{
Alert("RiskPercent harus antara 0.1-5%");
return(INIT_PARAMETERS_INCORRECT);
}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
// Bersihkan handle indikator
IndicatorRelease(handleFastMA);
IndicatorRelease(handleSlowMA);
IndicatorRelease(handleADX);
IndicatorRelease(handleATR);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
// Cek jam trading untuk menghindari berita
if(IsNewsTime()) return;
// Cek hanya 1 trade per bar
if(lastTradeTime == iTime(_Symbol, PERIOD_CURRENT, 0)) return;
// Dapatkan data indikator
double fastMA[2], slowMA[2], adx[2], atr[2];
CopyBuffer(handleFastMA, 0, 1, 2, fastMA);
CopyBuffer(handleSlowMA, 0, 1, 2, slowMA);
CopyBuffer(handleADX, 0, 1, 2, adx); // Main ADX line
CopyBuffer(handleATR, 0, 0, 2, atr);
// Konfirmasi sinyal dengan timeframe lebih tinggi (H1)
//| TrendMaster.mq5 |
//| Copyright 2025, FXMaster Labs, Version 1.5 |
//| https://www.fxmlabs.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, FXMaster Labs"
#property link "https://www.fxmlabs.com"
#property version "1.5"
#property description "Expert Advisor dengan konfirmasi multi-timeframe dan manajemen risiko adaptif"
//+------------------------------------------------------------------+
//| Input parameters |
//+------------------------------------------------------------------+
input group "Strategy Settings"
input int FastMAPeriod = 12; // Periode MA Cepat
input int SlowMAPeriod = 26; // Periode MA Lambat
input double MinADXLevel = 25.0; // Level Min ADX (Kekuatan Trend)
input int ATRPeriod = 14; // Periode ATR untuk Volatilitas
input group "Risk Management"
input double RiskPercent = 1.0; // Risiko per Trade (% Equity)
input double RewardRatio = 2.0; // Rasio Risk:Reward
input bool UseTrailingStop = true; // Gunakan Trailing Stop
input int NewsFilterHours = 2; // Jam Sebelum/Sesudah Berita (Nonaktifkan)
input group "Trade Execution"
input int MagicNumber = 12345; // EA Magic Number
input string TradeComment = "TrendMaster"; // Komentar Order
//+------------------------------------------------------------------+
//| Global variables |
//+------------------------------------------------------------------+
int handleFastMA, handleSlowMA, handleADX, handleATR;
datetime lastTradeTime;
const long pipValue = 100000; // Untuk EURUSD (1 pip = 0.00010)
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
// Inisialisasi indikator
handleFastMA = iMA(_Symbol, PERIOD_CURRENT, FastMAPeriod, 0, MODE_EMA, PRICE_CLOSE);
handleSlowMA = iMA(_Symbol, PERIOD_CURRENT, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE);
handleADX = iADX(_Symbol, PERIOD_CURRENT, 14);
handleATR = iATR(_Symbol, PERIOD_CURRENT, ATRPeriod);
if(handleFastMA == INVALID_HANDLE handleSlowMA == INVALID_HANDLE
handleADX == INVALID_HANDLE || handleATR == INVALID_HANDLE)
{
Print("Error creating indicators");
return(INIT_FAILED);
}
// Verifikasi parameter
if(RiskPercent <= 0 || RiskPercent > 5)
{
Alert("RiskPercent harus antara 0.1-5%");
return(INIT_PARAMETERS_INCORRECT);
}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
// Bersihkan handle indikator
IndicatorRelease(handleFastMA);
IndicatorRelease(handleSlowMA);
IndicatorRelease(handleADX);
IndicatorRelease(handleATR);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
// Cek jam trading untuk menghindari berita
if(IsNewsTime()) return;
// Cek hanya 1 trade per bar
if(lastTradeTime == iTime(_Symbol, PERIOD_CURRENT, 0)) return;
// Dapatkan data indikator
double fastMA[2], slowMA[2], adx[2], atr[2];
CopyBuffer(handleFastMA, 0, 1, 2, fastMA);
CopyBuffer(handleSlowMA, 0, 1, 2, slowMA);
CopyBuffer(handleADX, 0, 1, 2, adx); // Main ADX line
CopyBuffer(handleATR, 0, 0, 2, atr);
// Konfirmasi sinyal dengan timeframe lebih tinggi (H1)
No reviews yet.