سلام دوستان وقت بخیر
میخواستم یک خواهشی کنم ، چون فکر نمیکنم بهتر از اینجا جایی بتونم پیدا کنم.من میخوام یک اکسپرت خیلی ساده بنویسم برای متاتریدر
اگر از دوستان هستند و یاد دارید ممنون میشم کدشو برام ارسال کنید.اگر هزینه ای هم داره مشکلی نیست.
میخوام یک اکسپرتی بسازم که در تاریخ و ساعت و دقیقه و ثانیه ای یک معامله خرید یا فروش به انتخاب خودم باز کنه.به محض بازشدن معامله یک حد ضرر 200 پیپ با یک حد سود 100 پیپ گذاشته بشه.تریلینگ استاپ داشته باشه با مقداری که من معلوم میکنم.حجم معامله را بتونم معلوم کنم.
کسی از دوستان میتونه بنویسه؟🙏🙏
سلام دوست عزیز
این سایت ها میتونید سفارش بدید برای طراحی اکسپرت مورد نظرتون
Persian elite
Hooshefaal
ممنون فرزاد جان.حتما پیگیریش میکنم
کدی که نوشتم اینه ولی 6 تا خطا داره
//+------------------------------------------------------------------+
//| TradeOnTime.mq5|
//| Copyright 2023, Your Name |
//| https://www.example.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, Your Name"
#property link "https://www.example.com"
#property version "1.00"
#property strict
// ورودی های کاربر
input int TradeType = TRADE_TYPE_BUY; // نوع معامله
input double Lots = 0.01; // اندازه لات
input double StopLossDistance = 200; // حداکثر ضرر مجاز به پیپ
input double TrailingStop = 0; // فاصله دنبال کردن حد ضرر به پیپ
input datetime TradeTime = D'2023.03.28 10:00:00'; // زمان اجرای معامله
input int MagicNumber = 12345; // شماره جادویی
// ایجاد متغیرهای جهت نگهداری وضعیت حالت حد ضرر
bool TrailingStopStarted = false;
double TrailingStopValue = 0;
//+------------------------------------------------------------------+
//| اجرای کد در هنگام بارگذاری اکسپرت |
//+------------------------------------------------------------------+
void OnStart()
{
// عدم اجرای کد در صورتی که زمان مورد نظر تاریخ گذشته باشد
if(TradeTime <= TimeCurrent())
return;
// شناسایی نوع معامله
ENUM_TRADE_REQUEST_ACTIONS action = (TradeType == TRADE_TYPE_BUY) ? TRADE_ACTION_DEAL : TRADE_ACTION_DEAL_SL;
// شناسایی قیمت فعلی
double price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
// محاسبه حداکثر ضرر
double stoploss = 0;
if(TradeType == TRADE_TYPE_BUY)
stoploss = price - StopLossDistance * _Point;
else
stoploss = price + StopLossDistance * _Point;
// محاسبه حداکثر سود
double takeprofit = 0;
if(TradeType == TRADE_TYPE_BUY)
takeprofit = price + StopLossDistance * _Point;
else
takeprofit = price - StopLossDistance * _Point;
// انجام معامله
MqlTradeRequest request;
MqlTradeResult result;
ZeroMemory(request);
ZeroMemory(result);
request.action = action;
request.symbol = _Symbol;
request.volume = Lots;
request.price = price;
request.sl = stoploss;
request.tp = takeprofit;
request.magic = MagicNumber;
request.type_filling = ORDER_FILLING
request.type_time = ORDER_TIME_GTC;
request.type = ORDER_TYPE_MARKET;
if(!OrderSend(request,result))
{
Print("Error: ",result.retcode," - ",result.reason);
}
else
{
Print("Trade executed successfully!");
TrailingStopStarted = true;
TrailingStopValue = stoploss;
}
}
//+------------------------------------------------------------------+
//| بروزرسانی حد ضرر در صورت نیاز |
//+------------------------------------------------------------------+
void OnTick()
{
if(!TrailingStopStarted)
return;
double currentstoploss = 0;
// شناسایی نوع معامله
ENUM_POSITION_TYPE positiontype = (TradeType == TRADE_TYPE_BUY) ? POSITION_TYPE_BUY : POSITION_TYPE_SELL;
// شناسایی حد ضرر
double stoploss = TrailingStopValue;
// محاسبه قیمت فعلی
double currentprice = SymbolInfoDouble(_Symbol, (positiontype == POSITION_TYPE_BUY) ? SYMBOL_BID : SYMBOL_ASK);
// محاسبه فاصله بین حد ضرر و قیمت فعلی
double distance = MathAbs(stoploss - currentprice) / _Point;
// بروزرسانی حد ضرر در صورتی که فاصله آن از قیمت فعلی بیشتر از فاصله دنبال کردن حد ضرر باشد
if(distance > TrailingStop)
{
if(positiontype == POSITION_TYPE_BUY)
currentstoploss = currentprice - TrailingStop * _Point;
else
currentstoploss = currentprice + TrailingStop * _Point;
MqlTradeRequest request;
MqlTradeResult result;
ZeroMemory(request);
ZeroMemory(result);
request.action = (positiontype == POSITION_TYPE_BUY) ? TRADE_ACTION_SLTP : TRADE_ACTION_SLTP;
request.symbol = _Symbol;
request.sl = currentstoploss;
request.tp = 0;
request.position = PositionGetInteger(POSITION_TICKET, 0);
request.magic = MagicNumber;
if(!OrderSend(request,result))
{
Print("Error: ",result.retcode," - ",result.reason);
}
else
{
Print("Stop Loss updated successfully!");
TrailingStopValue = currentstoploss;
}
}
}
//+------------------------------------------------------------------+
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟