عباس نباتی
2 سال پیش توسط عباس نباتی مطرح شد
2 پاسخ

اکسپرت متاتریدر 5

سلام دوستان وقت بخیر
میخواستم یک خواهشی کنم ، چون فکر نمیکنم بهتر از اینجا جایی بتونم پیدا کنم.من میخوام یک اکسپرت خیلی ساده بنویسم برای متاتریدر

اگر از دوستان هستند و یاد دارید ممنون میشم کدشو برام ارسال کنید.اگر هزینه ای هم داره مشکلی نیست.

میخوام یک اکسپرتی بسازم که در تاریخ و ساعت و دقیقه و ثانیه ای یک معامله خرید یا فروش به انتخاب خودم باز کنه.به محض بازشدن معامله یک حد ضرر 200 پیپ با یک حد سود 100 پیپ گذاشته بشه.تریلینگ استاپ داشته باشه با مقداری که من معلوم میکنم.حجم معامله را بتونم معلوم کنم.

کسی از دوستان میتونه بنویسه؟🙏🙏


ثبت پرسش جدید
فرزاد عامری
تخصص : وردپرس
@Farzadameri 2 سال پیش مطرح شد
0

سلام دوست عزیز
این سایت ها میتونید سفارش بدید برای طراحی اکسپرت مورد نظرتون
Persian elite
Hooshefaal


عباس نباتی
تخصص : web3
@alfa2p30 2 سال پیش آپدیت شد
0

ممنون فرزاد جان.حتما پیگیریش میکنم
کدی که نوشتم اینه ولی 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;
    }
  }
}

//+------------------------------------------------------------------+

 تصویر


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام