النتائج 1 إلى 4 من 4

الموضوع: i want cod

  1. #1
    الصورة الرمزية helw
    helw غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2012
    الإقامة
    مصر
    المشاركات
    18

    افتراضي i want cod

    السلام عليكم
    استخدم موقع Eabuilder لعمل اكسبيرت بس عاوز خدمه
    انا لا اعلم شي في الاكواد واريد اضافه كود بسيط في الخانه
    Money management
    Custom code
    الكود عباره عن بعد فتح الصفقه ال Magic number يضاف اليه واحد +١
    بس كده
    وهل وضعه في هذا المكان صحيح
    اكتب إلى

  2. #2
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة helw مشاهدة المشاركة
    السلام عليكم
    استخدم موقع Eabuilder لعمل اكسبيرت بس عاوز خدمه
    انا لا اعلم شي في الاكواد واريد اضافه كود بسيط في الخانه
    Money management
    Custom code
    الكود عباره عن بعد فتح الصفقه ال Magic number يضاف اليه واحد +ظ،
    بس كده
    وهل وضعه في هذا المكان صحيح
    اكتب إلى
    وعليكم السلام ورحمة الله وبركاته
    أرفق الكود الذي قمت بعمله وسأشرح لك التعديل في الكود مباشرة
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  3. #3
    الصورة الرمزية helw
    helw غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2012
    الإقامة
    مصر
    المشاركات
    18

    افتراضي

    //+------------------------------------------------------------------+
    //| Strategy: Tast.mq4 |
    //| Created with EABuilder.com |
    //| https://www.eabuilder.com |
    //+------------------------------------------------------------------+
    #property copyright "Created with EABuilder.com"
    #property link "https://www.eabuilder.com"
    #property version "1.00"
    #property description ""

    #include <stdlib.mqh>
    #include <stderror.mqh>

    extern double TP_Pips = 50;
    extern double SL_Pips = 50;
    int LotDigits; //initialized in OnInit
    extern int MagicNumber = 1000;
    int TOD_From_Hour = 01; //time of the day (from hour)
    int TOD_From_Min = 59; //time of the day (from min)
    int TOD_To_Hour = 16; //time of the day (to hour)
    int TOD_To_Min = 59; //time of the day (to min)
    extern double TradeSize = 1.00;
    int MaxSlippage = 3; //slippage, adjusted in OnInit
    bool crossed[2]; //initialized to true, used in function Cross
    int MaxOpenTrades = 1;
    int MaxLongTrades = 1000;
    int MaxShortTrades = 1000;
    int MaxPendingOrders = 1000;
    int MaxLongPendingOrders = 1000;
    int MaxShortPendingOrders = 1000;
    bool Hedging = true;
    int OrderRetry = 5; //# of retries if sending order returns error
    int OrderWait = 5; //# of seconds to wait if sending order returns error
    double myPoint; //initialized in OnInit

    bool inTimeInterval(datetime t, int From_Hour, int From_Min, int To_Hour, int To_Min)
    {
    string TOD = TimeToString(t, TIME_MINUTES);
    string TOD_From = StringFormat("%02d", From_Hour)+":"+StringFormat("%02d", From_Min);
    string TOD_To = StringFormat("%02d", To_Hour)+":"+StringFormat("%02d", To_Min);
    return((StringCompare(TOD, TOD_From) >= 0 && StringCompare(TOD, TOD_To) <= 0)
    || (StringCompare(TOD_From, TOD_To) > 0
    && ((StringCompare(TOD, TOD_From) >= 0 && StringCompare(TOD, "23:59") <= 0)
    || (StringCompare(TOD, "00:00") >= 0 && StringCompare(TOD, TOD_To) <= 0))));
    }

    bool Cross(int i, bool condition) //returns true if "condition" is true and was false in the previous call
    {
    bool ret = condition && !crossed[i];
    crossed[i] = condition;
    return(ret);
    }

    void myAlert(string type, string message)
    {
    if(type == "print")
    Print(message);
    else if(type == "error")
    {
    Print(type+" | Tast @ "+Symbol()+","+IntegerToString(Period())+" | "+message);
    }
    else if(type == "order")
    {
    }
    else if(type == "modify")
    {
    }
    }

    int TradesCount(int type) //returns # of open trades for order type, current symbol and magic number
    {
    int result = 0;
    int total = OrdersTotal();
    for(int i = 0; i < total; i++)
    {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) continue;
    if(OrderMagicNumber() != MagicNumber || OrderSymbol() != Symbol() || OrderType() != type) continue;
    result++;
    }
    return(result);
    }

    int myOrderSend(int type, double price, double volume, string ordername) //send order, return ticket ("price" is irrelevant for market orders)
    {
    if(!IsTradeAllowed()) return(-1);
    int ticket = -1;
    int retries = 0;
    int err = 0;
    int long_trades = TradesCount(OP_BUY);
    int short_trades = TradesCount(OP_SELL);
    int long_pending = TradesCount(OP_BUYLIMIT) + TradesCount(OP_BUYSTOP);
    int short_pending = TradesCount(OP_SELLLIMIT) + TradesCount(OP_SELLSTOP);
    string ordername_ = ordername;
    if(ordername != "")
    ordername_ = "("+ordername+")";
    //test Hedging
    if(!Hedging && ((type % 2 == 0 && short_trades + short_pending > 0) || (type % 2 == 1 && long_trades + long_pending > 0)))
    {
    myAlert("print", "Order"+ordername_+" not sent, hedging not allowed");
    return(-1);
    }
    //test maximum trades
    if((type % 2 == 0 && long_trades >= MaxLongTrades)
    || (type % 2 == 1 && short_trades >= MaxShortTrades)
    || (long_trades + short_trades >= MaxOpenTrades)
    || (type > 1 && type % 2 == 0 && long_pending >= MaxLongPendingOrders)
    || (type > 1 && type % 2 == 1 && short_pending >= MaxShortPendingOrders)
    || (type > 1 && long_pending + short_pending >= MaxPendingOrders)
    )
    {
    myAlert("print", "Order"+ordername_+" not sent, maximum reached");
    return(-1);
    }
    //prepare to send order
    while(IsTradeContextBusy()) Sleep(100);
    RefreshRates();
    if(type == OP_BUY)
    price = Ask;
    else if(type == OP_SELL)
    price = Bid;
    else if(price < 0) //invalid price for pending order
    {
    myAlert("order", "Order"+ordername_+" not sent, invalid price for pending order");
    return(-1);
    }
    int clr = (type % 2 == 1) ? clrRed : clrBlue;
    while(ticket < 0 && retries < OrderRetry+1)
    {
    ticket = OrderSend(Symbol(), type, NormalizeDouble(volume, LotDigits), NormalizeDouble(price, Digits()), MaxSlippage, 0, 0, ordername, MagicNumber, 0, clr);
    if(ticket < 0)
    {
    err = GetLastError();
    myAlert("print", "OrderSend"+ordername_+" error #"+IntegerToString(err)+" "+ErrorDescription(err));
    Sleep(OrderWait*1000);
    }
    retries++;
    }
    if(ticket < 0)
    {
    myAlert("error", "OrderSend"+ordername_+" failed "+IntegerToString(OrderRetry+1)+" times; error #"+IntegerToString(err)+" "+ErrorDescription(err));
    return(-1);
    }
    string typestr[6] = {"Buy", "Sell", "Buy Limit", "Sell Limit", "Buy Stop", "Sell Stop"};
    myAlert("order", "Order sent"+ordername_+": "+typestr[type]+" "+Symbol()+" Magic #"+IntegerToString(MagicNumber));
    return(ticket);
    }

    int myOrderModifyRel(int ticket, double SL, double TP) //modify SL and TP (relative to open price), zero targets do not modify
    {
    if(!IsTradeAllowed()) return(-1);
    bool success = false;
    int retries = 0;
    int err = 0;
    SL = NormalizeDouble(SL, Digits());
    TP = NormalizeDouble(TP, Digits());
    if(SL < 0) SL = 0;
    if(TP < 0) TP = 0;
    //prepare to select order
    while(IsTradeContextBusy()) Sleep(100);
    if(!OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
    {
    err = GetLastError();
    myAlert("error", "OrderSelect failed; error #"+IntegerToString(err)+" "+ErrorDescription(err));
    return(-1);
    }
    //prepare to modify order
    while(IsTradeContextBusy()) Sleep(100);
    RefreshRates();
    //convert relative to absolute
    if(OrderType() % 2 == 0) //buy
    {
    if(NormalizeDouble(SL, Digits()) != 0)
    SL = OrderOpenPrice() - SL;
    if(NormalizeDouble(TP, Digits()) != 0)
    TP = OrderOpenPrice() + TP;
    }
    else //sell
    {
    if(NormalizeDouble(SL, Digits()) != 0)
    SL = OrderOpenPrice() + SL;
    if(NormalizeDouble(TP, Digits()) != 0)
    TP = OrderOpenPrice() - TP;
    }
    if(CompareDoubles(SL, 0)) SL = OrderStopLoss(); //not to modify
    if(CompareDoubles(TP, 0)) TP = OrderTakeProfit(); //not to modify
    if(CompareDoubles(SL, OrderStopLoss()) && CompareDoubles(TP, OrderTakeProfit())) return(0); //nothing to do
    while(!success && retries < OrderRetry+1)
    {
    success = OrderModify(ticket, NormalizeDouble(OrderOpenPrice(), Digits()), NormalizeDouble(SL, Digits()), NormalizeDouble(TP, Digits()), OrderExpiration(), CLR_NONE);
    if(!success)
    {
    err = GetLastError();
    myAlert("print", "OrderModify error #"+IntegerToString(err)+" "+ErrorDescription(err));
    Sleep(OrderWait*1000);
    }
    retries++;
    }
    if(!success)
    {
    myAlert("error", "OrderModify failed "+IntegerToString(OrderRetry+1)+" times; error #"+IntegerToString(err)+" "+ErrorDescription(err));
    return(-1);
    }
    string alertstr = "Order modified: ticket="+IntegerToString(ticket);
    if(!CompareDoubles(SL, 0)) alertstr = alertstr+" SL="+DoubleToString(SL);
    if(!CompareDoubles(TP, 0)) alertstr = alertstr+" TP="+DoubleToString(TP);
    myAlert("modify", alertstr);
    return(0);
    }

    //+------------------------------------------------------------------+
    //| Expert initialization function |
    //+------------------------------------------------------------------+
    int OnInit()
    {
    //initialize myPoint
    myPoint = Point();
    if(Digits() == 5 || Digits() == 3)
    {
    myPoint *= 10;
    MaxSlippage *= 10;
    }
    //initialize LotDigits
    double LotStep = MarketInfo(Symbol(), MODE_LOTSTEP);
    if(NormalizeDouble(LotStep, 3) == round(LotStep))
    LotDigits = 0;
    else if(NormalizeDouble(10*LotStep, 3) == round(10*LotStep))
    LotDigits = 1;
    else if(NormalizeDouble(100*LotStep, 3) == round(100*LotStep))
    LotDigits = 2;
    else LotDigits = 3;
    int i;
    //initialize crossed
    for (i = 0; i < ArraySize(crossed); i++)
    crossed[i] = true;
    return(INIT_SUCCEEDED);
    }

    //+------------------------------------------------------------------+
    //| Expert deinitialization function |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
    {
    }

    //+------------------------------------------------------------------+
    //| Expert tick function |
    //+------------------------------------------------------------------+
    void OnTick()
    {
    int ticket = -1;
    double price;
    double SL;
    double TP;


    //Open Buy Order (Hunter), instant signal is tested first
    if(Cross(0, Close[1] > iBands(NULL, PERIOD_CURRENT, 20, 2, 2, PRICE_CLOSE, MODE_UPPER, 0)) //Candlestick Close crosses above Bollinger Bands
    && iRSI(NULL, PERIOD_CURRENT, 14, PRICE_CLOSE, 0) > 30 //Relative Strength Index > fixed value
    )
    {
    RefreshRates();
    price = Ask;
    SL = SL_Pips * myPoint; //Stop Loss = value in points (relative to price)
    TP = TP_Pips * myPoint; //Take Profit = value in points (relative to price)
    if(!inTimeInterval(TimeCurrent(), TOD_From_Hour, TOD_From_Min, TOD_To_Hour, TOD_To_Min)) return; //open trades only at specific times of the day
    if(IsTradeAllowed())
    {
    ticket = myOrderSend(OP_BUY, price, TradeSize, "Hunter");
    if(ticket <= 0) return;
    }
    else //not autotrading => only send alert
    myAlert("order", "Hunter");
    myOrderModifyRel(ticket, 0, TP);
    myOrderModifyRel(ticket, SL, 0);
    }

    //Open Sell Order (Hunter), instant signal is tested first
    if(Cross(1, Close[1] < iBands(NULL, PERIOD_CURRENT, 20, 2, 2, PRICE_CLOSE, MODE_UPPER, 0)) //Candlestick Close crosses below Bollinger Bands
    && iRSI(NULL, PERIOD_CURRENT, 14, PRICE_CLOSE, 0) < 30 //Relative Strength Index < fixed value
    )
    {
    RefreshRates();
    price = Bid;
    SL = SL_Pips * myPoint; //Stop Loss = value in points (relative to price)
    TP = TP_Pips * myPoint; //Take Profit = value in points (relative to price)
    if(!inTimeInterval(TimeCurrent(), TOD_From_Hour, TOD_From_Min, TOD_To_Hour, TOD_To_Min)) return; //open trades only at specific times of the day
    if(IsTradeAllowed())
    {
    ticket = myOrderSend(OP_SELL, price, TradeSize, "Hunter");
    if(ticket <= 0) return;
    }
    else //not autotrading => only send alert
    myAlert("order", "Hunter");
    myOrderModifyRel(ticket, 0, TP);
    myOrderModifyRel(ticket, SL, 0);
    }
    }
    //+------------------------------------------------------------------+

  4. #4
    الصورة الرمزية helw
    helw غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2012
    الإقامة
    مصر
    المشاركات
    18

    افتراضي

    برجاء كتابه الكود بلون مميز حتى اعرفه مع العلم انني سأخذه كوبي وبست
    الفكره انني لا اعمل بستوب لوز والشركات هنا لا تقبل هيدج علشان كده عاوز اغير الماجيك نمبر حتي يراها صفقه مختلفه فى نفس الاتجاه تعزيز مثلا


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17