الحلقة العشرون من سلسلة تعلم البرمجة باسهل طريقة

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • الحلقة العشرون من سلسلة تعلم البرمجة باسهل طريقة

    استخدام الأوامر المعلقة


    دعونا نعدل المستشار الخبير الخاص بنا لاستخدام الأوامر المعلقة. سنستخدم أوامر الإيقاف في هذا المثال. عند
    المتوسط المتحرك السريع أكبر من المتوسط المتحرك البطيء ، وسوف نضع أمر إيقاف شراء بمقدار 10 نقاط
    فوق الارتفاع الحالي. عندما يكون العكس صحيحًا ، سنضع أمر إيقاف بيع بمقدار 10 نقاط أسفل
    المنخفض الحالي. دعنا نعلن عن متغير خارجي لضبط هذا الإعداد ، يسمى PendingPips.

    كود:
    extern int PendingPips = 10;

    نقوم بإضافة وظيفة OrderDelete () إلى مجموعة أوامر البيع والشراء لإغلاق أي
    أوامر معلقة شاغرة. نحتاج إلى التحقق من نوع الأمر الخاص بالطلب المشار إليه بواسطة SellTicket للتأكد
    أننا نستخدم الوظيفة الصحيحة لإغلاق الأمر.


    كود:
    OrderSelect(SellTicket,SELECT_BY_TICKET);
    // Close Order
    if(OrderCloseTime() == 0 && SellTicket > 0 && OrderType() == OP_SELL)
    {
    double CloseLots = OrderLots();
    double ClosePrice = Ask;
    bool Closed = OrderClose(SellTicket,CloseLots,ClosePrice,UseSlip page,Red);
    if(Closed == true) SellTicket = 0;
    }
    // Delete Order
    else if(OrderCloseTime() == 0 && SellTicket > 0 && OrderType() == OP_SELLSTOP)
    {
    bool Deleted = OrderDelete(SellTicket,Red);
    if(Deleted == true) SellTicket = 0;
    }


    نستخدم OrderType () للتحقق مما إذا كان أمر البيع المحدد أمر سوق أم أمر إيقاف. لو
    إنه أمر سوق ، نقوم بإغلاقه باستخدام OrderClose (). إذا كان الأمر معلقًا ، فإننا نغلقه باستخدام
    OrderDelete().


    إليك حساب سعر الأمر المعلق. نقوم ببساطة بتحويل PendingPips إلى قيمة كسرية باستخدام
    UsePoint ، وقم بإضافتها إلى سعر الإغلاق الحالي. سنقوم بتخزين هذه القيمة في متغير PendingPrice.
    بعد ذلك ، نقوم بحساب وقف الخسارة وجني الأرباح بالنسبة لسعر الأمر المعلق لدينا. أخيرًا ، نضع
    طلبنا المعلق باستخدام OrderSend () ، تخزين نتيجة التجارة في BuyTicket المتغير:


    كود:
    double PendingPrice = Close[0] + (PendingPips * UsePoint);
    if(StopLoss > 0) double BuyStopLoss = PendingPrice - (StopLoss * UsePoint);
    if(TakeProfit > 0) double BuyTakeProfit = PendingPrice + (TakeProfit * UsePoint);
    BuyTicket = OrderSend(Symbol(),OP_BUYSTOP,LotSize,PendingPrice ,UseSlippage,
    BuyStopLoss,BuyTakeProfit,"Buy Stop Order",MagicNumber,0,Green);
    SellTicket = 0;
    The code below shows the changes for the sell stop order block:
    OrderSelect(BuyTicket,SELECT_BY_TICKET);
    // Close Order
    if(OrderCloseTime() == 0 && BuyTicket > 0 && OrderType() == OP_BUY)
    {
    CloseLots = OrderLots();
    ClosePrice = Bid;
    Closed = OrderClose(BuyTicket,CloseLots,ClosePrice,UseSlipp age,Red);
    if(Closed == true) BuyTicket = 0;
    }
    // Delete Order
    else if(OrderCloseTime() == 0 && BuyTicket > 0 && OrderType() == OP_BUYSTOP)
    {
    Closed = OrderDelete(BuyTicket,Red);
    if(Closed == true) BuyTicket = 0;
    }
    PendingPrice = Close[0] - (PendingPips * UsePoint);
    double SellStopLoss = PendingPrice + (StopLoss * UsePoint);
    double SellTakeProfit = PendingPrice - (TakeProfit * UsePoint);
    SellTicket = OrderSend(Symbol(),OP_SELLSTOP,LotSize,PendingPric e,UseSlippage,
    SellStopLoss,SellTakeProfit,"Sell Stop Order",MagicNumber,0,Red);
    BuyTicket = 0;



    هذا الكود الكامل لاكسبيرت الاوامر المعلقة



    كود:
    #property copyright"Mohammad alturk"
    // External variables
    extern double LotSize = 0.1;
    extern double StopLoss = 50;
    extern double TakeProfit = 100;
    extern int PendingPips = 10;
    extern int Slippage = 5;
    extern int MagicNumber = 123;
    extern int FastMAPeriod = 10;
    extern int SlowMAPeriod = 20;
    // Global variables
    int BuyTicket;
    int SellTicket;
    double UsePoint;
    int UseSlippage;
    // Init function
    int init()
    {
    UsePoint = PipPoint(Symbol());
    UseSlippage = GetSlippage(Symbol(),Slippage);
    }
    // Start function
    int start()
    {
    // Moving averages
    double FastMA = iMA(NULL,0,FastMAPeriod,0,0,0,0);
    double SlowMA = iMA(NULL,0,SlowMAPeriod,0,0,0,0);
    // Buy order
    if(FastMA > SlowMA && BuyTicket == 0)
    {
    OrderSelect(SellTicket,SELECT_BY_TICKET);
    // Close order
    if(OrderCloseTime() == 0 && SellTicket > 0 && OrderType() == OP_SELL)
    {
    double CloseLots = OrderLots();
    double ClosePrice = Ask;
    bool Closed = OrderClose(SellTicket,CloseLots,ClosePrice,UseSlip page,Red);
    }
    // Delete Order
    else if(OrderCloseTime() == 0 && SellTicket > 0 && OrderType() == OP_SELLSTOP)
    {
    bool Deleted = OrderDelete(SellTicket,Red);
    }
    double PendingPrice = High[0] + (PendingPips * UsePoint);
    // Calculate stop loss and take profit
    if(StopLoss > 0) double BuyStopLoss = PendingPrice - (StopLoss * UsePoint);
    if(TakeProfit > 0) double BuyTakeProfit = PendingPrice +
    (TakeProfit * UsePoint);
    // Open buy order
    BuyTicket = OrderSend(Symbol(),OP_BUYSTOP,LotSize,PendingPrice ,UseSlippage,
    BuyStopLoss,BuyTakeProfit,"Buy Stop Order",MagicNumber,0,Green);
    SellTicket = 0;
    }
    // Sell Order
    if(FastMA < SlowMA && SellTicket == 0)
    {
    OrderSelect(BuyTicket,SELECT_BY_TICKET);
    if(OrderCloseTime() == 0 && BuyTicket > 0 && OrderType() == OP_BUY)
    {
    CloseLots = OrderLots();
    ClosePrice = Bid;
    Closed = OrderClose(BuyTicket,CloseLots,ClosePrice,UseSlipp age,Red);
    }
    else if(OrderCloseTime() == 0 && SellTicket > 0 && OrderType() == OP_BUYSTOP)
    {
    Deleted = OrderDelete(SellTicket,Red);
    }
    PendingPrice = Low[0] - (PendingPips * UsePoint);
    if(StopLoss > 0) double SellStopLoss = PendingPrice + (StopLoss * UsePoint);
    if(TakeProfit > 0) double SellTakeProfit = PendingPrice -
    (TakeProfit * UsePoint);
    SellTicket = OrderSend(Symbol(),OP_SELLSTOP,LotSize,PendingPric e,UseSlippage,
    SellStopLoss,SellTakeProfit,"Sell Stop Order",MagicNumber,0,Red);
    BuyTicket = 0;
    }
    return(0);
    }
    // Pip Point Function
    double PipPoint(string Currency)
    {
    int CalcDigits = MarketInfo(Currency,MODE_DIGITS);
    if(CalcDigits == 2 || CalcDigits == 3) double CalcPoint = 0.01;
    else if(CalcDigits == 4 || CalcDigits == 5) CalcPoint = 0.0001;
    return(CalcPoint);
    }
    // Get Slippage Function
    int GetSlippage(string Currency, int SlippagePips)
    {
    int CalcDigits = MarketInfo(Currency,MODE_DIGITS);
    if(CalcDigits == 2 || CalcDigits == 4) double CalcSlippage = SlippagePips;
    else if(CalcDigits == 3 || CalcDigits == 5) CalcSlippage = SlippagePips * 10;
    return(CalcSlippage);
    }
    ​

  • #2
    السلام عليكم اخى
    هل يوجد فهرس للموضوعات التعليمية
    لانى بحثت عن الحلقة الاولى ولم احصلها

    تعليق


    • #3
      المشاركة الأصلية بواسطة Daily Trader مشاهدة المشاركة
      السلام عليكم اخى
      هل يوجد فهرس للموضوعات التعليمية
      لانى بحثت عن الحلقة الاولى ولم احصلها
      اهلا بك اخي الكريم نعم يوجد تفضل الرابط

      بسم الله الرحمن الرحيم والصلاة والسلام على سيدنا محمد أهلا وسهلا بكم أيها الاخوة الاكارم تحت رعاية موقع المضارب العربي سيتم ان شاء الله متابعة سلسلة دروس ( تعلم البرمجة باسهل طريقة ) مرفق روابط السلسلة كاملة , فقط قم بالنقر على الدرس و ابدء بالتعلم برمجة المؤشرات و الاكسبيرتات مهم و من المهم تعلمه الدرس الأول (https://www

      تعليق

      يعمل...
      X