buatkan code mq4 untuk EA template dengan strategi averaging plus.
Membuat Expert Advisor (EA) di MetaTrader 4 (MT4) dengan strategi averaging plus memerlukan pemahaman yang baik tentang bahasa pemrograman MQL4. Strategi averaging plus biasanya melibatkan penambahan posisi baru pada interval tertentu ketika harga bergerak melawan posisi awal, dengan harapan bahwa harga akan kembali ke arah yang diinginkan dan semua posisi dapat ditutup dengan keuntungan.
Berikut adalah template dasar untuk EA dengan strategi averaging plus. Harap dicatat bahwa ini adalah template dasar dan Anda mungkin perlu menyesuaikannya lebih lanjut sesuai dengan kebutuhan spesifik Anda.
//+------------------------------------------------------------------+
//| AveragingPlusEA.mq4 |
//| Copyright 2023, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property strict
// Input parameters
input double LotSize = 0.1; // Initial lot size
input double Step = 50; // Distance in points to open new position
input double TakeProfit = 100; // Take profit in points
input double StopLoss = 200; // Stop loss in points
input int MagicNumber = 123456; // Magic number for the EA
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
// Initialization code
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
// Deinitialization code
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
// Check for open positions
int totalOrders = OrdersTotal();
double lastOrderPrice = 0;
int lastOrderType = -1;
for(int i = totalOrders - 1; i >= 0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderMagicNumber() == MagicNumber)
{
lastOrderPrice = OrderOpenPrice();
lastOrderType = OrderType();
break;
}
}
}
// If no open positions, open initial position
if(lastOrderType == -1)
{
OpenPosition();
}
else
{
// Check if we need to open a new averaging position
double currentPrice = (lastOrderType == OP_BUY) ? Ask : Bid;
if(MathAbs(currentPrice - lastOrderPrice) >= Step * Point)
{
OpenPosition();
}
}
}
//+------------------------------------------------------------------+
//| Function to open a new position |
//+------------------------------------------------------------------+
void OpenPosition()
{
double lotSize = LotSize;
double price = Ask;
int type = OP_BUY;
if(OrdersTotal() > 0)
{
if(OrderSelect(OrdersTotal() - 1, SELECT_BY_POS, MODE_TRADES))
{
if(OrderType() == OP_BUY)
{
price = Bid;
type = OP_SELL;
}
else
{
price = Ask;
type = OP_BUY;
}
}
}
int ticket = OrderSend(Symbol(), type, lotSize, price, 3, 0, 0, "Averaging Plus", MagicNumber, 0, Blue);
if(ticket < 0)
{
Print("Error opening order: ", GetLastError());
}
}
//+------------------------------------------------------------------+
Penjelasan:
Template ini adalah dasar dan mungkin memerlukan penyesuaian lebih lanjut untuk memenuhi kebutuhan spesifik Anda, seperti manajemen risiko yang lebih baik, penanganan kesalahan, dan optimasi lainnya. Pastikan untuk menguji EA ini di akun demo sebelum menggunakannya di