البنوك المركزية واللاعبين الكبار: تغيير طفيف في رمز reqd
Results 1 to 8 of 8

Thread: البنوك المركزية واللاعبين الكبار: تغيير طفيف في رمز reqd

  1. #1
    لقد انشغلت مؤخرا بخيط يسمى البنوك المركزية واللاعبين الكبار. إن egy الأساسي هو شراء أو بيع في اتجاه أول 2 نقطة في السعر في لندن ونيويورك مفتوحة. يستخدم مؤلف الخيط SL (2 نقطة) صغير جداً ، TP 140 ويفعل بشكل جيد مع egy. EA (انظر الكود أدناه) وضعت لهذا egy يعمل بشكل جيد باستثناء شيء واحد. كما هو سيعمل على تحركك نحو نقطة BE pip (حتى يتم الوصول إلى BE) مع تحرك السعر في صالحك. المشكلة التي لدي هي ، حتى عندما وضعت EA وقتي على BE ، ما زلت أفقد عمولة لا بد لي من دفع على هذه الصفقة. يمكن للشخص تعديل الرمز أدناه (في الطباعة الغامقة) التغييرات اللازمة لجعل EA جلب توقف BE (x) عدد النقاط لتغطية تكلفة العمولة. شكرا لك/ --------------------------------------------- ---------------------
    //| CBBP_EA_v2-0.mq4 |
    //| زين ليو
    //| |
    // ----------------------------------------------- -------------------
    #property copyright Zain Leow
    # رابط العقار

    #include lt؛ stdlib.mqhgt؛
    # تتضمن ، lt ؛ stderror.mqhgt ؛
    #define PRIMARY_ORDER 1
    #define SECONDARY_ORDER 2

    extern int EA_MAGIC_NUM = 3947947؛
    extern bool IsECN = true؛
    extern bool CheckHourOfAttach = true؛
    extern string Session1 = London Session؛
    extern Int SessionOpenHour1 = 8؛
    extern string Session2 = New York Session؛
    extern Int SessionOpenHour2 = 13؛
    extern Int GraceMinutes = 5؛
    extern bool Show_Comments = true؛
    extern double UserDefinedSpread = 0؛

    extern int Slippage = 3؛
    extern double Pip_Distance = 2؛
    ex Int Int TakeProfit = 140؛
    extern Int StopLoss = 5؛
    extern bool UseJumpingStop = false؛
    extern Int TrailingStop = 0؛
    extern bool Add_Spread_To_StopLoss = false؛
    extern bool Use_Spread_Filtering = true؛
    extern double Spread_Filter = 1.0؛

    extern bool MoneyManagement = true؛
    extern double RiskPercent = 0.25؛
    extern bool UseEquity = false؛
    extern bool Use_BE = true؛
    extern double BreakEven_Pips = 5.0؛
    extern double FixedLots = 0.1؛
    extern double MaxLots = 15.0؛
    extern double MinLots = 0.01؛
    extern int LotsDecimalAllowed = 2؛

    string msg =؛
    double Customread = 0؛
    int PipFactor = 1؛
    bool StartupStatusOK = true؛
    int the_StopLoss = 0؛
    bool TradeTheSession = true؛
    bool ProblemLogged = false؛
    int todayOfYear = 0؛
    bool SessionIsOn = false؛
    مضاعفة theSessionOpenPrice؛
    سلسلة latestSession.
    int الحالي
    bool SessionOpenPriceWritten = false؛

    // ----------------------------------------------- -------------------
    //| وظيفة التهيئة الخبير |
    // ----------------------------------------------- -------------------
    int init ()
    {
    //----
    int currentHour = TimeHour (TimeCurrent ())؛
    if ((currentHour == SessionOpenHour1 || currentHour == SessionOpenHour2) CheckHourOfAttach)
    {
    تنبيه (IMPT: لا يجب إرفاق EA هذا خلال Session1 ساعة مفتوحة أو Session2 ساعة مفتوحة)؛
    StartupStatusOK = false
    }
    إذا (Period () gt؛ PERIOD_H1)
    {
    تنبيه (لا يمكن إرفاق EA هذا إلا بالرسوم البيانية بإطار زمني أقل من ساعة واحدة) ؛
    StartupStatusOK = false
    }
    إذا كانت (MinLots lt؛ MarketInfo (الرمز () ، MODE_MINLOT))
    {
    تنبيه (غير صالح MinLots: MinLots | Try: MarketInfo (الرمز () ، MODE_MINLOT))؛
    StartupStatusOK = false
    }
    if (MaxLots gt؛ MarketInfo (Symbol ()، MODE_MAXLOT))
    {
    تنبيه (غير صالح MaxLots: MaxLots | Try: MarketInfo (الرمز () ، MODE_MAXLOT))؛
    StartupStatusOK = false
    }
    إذا كانت (SessionOpenHour1 lt؛ 0 || SessionOpenHour1 gt؛ 23)
    {
    تنبيه (تم فتح ساعة الافتتاح غير الصالحة لـ Session1 : SessionOpenHour1) ؛
    StartupStatusOK = false
    }
    إذا كانت (SessionOpenHour2 lt؛ 0 || SessionOpenHour2 gt؛ 23)
    {
    تنبيه (تم فتح ساعة الافتتاح غير الصالحة لـ Session2 : SessionOpenHour2) ؛
    StartupStatusOK = false
    }
    إذا (MoneyManagement (RiskPercent lt؛ = 0 || RiskPercent gt؛ 100))
    {
    تنبيه (نسبة المخاطر غير صالحة معطى: RiskPercent ٪)؛
    StartupStatusOK = false
    }
    إذا (StartupStatusOK)
    {
    تنبيه (يتم تحميل CBBP EA على Symbol () مع مدخلات صالحة) ؛
    }
    WriteToLogFile (بداية CBBP EA) ؛

    GetSpread ()؛

    todayOfYear = DayOfYear ()؛
    //متعطشة لنقاط كسور
    if (Digits == 3 || Digits == 5)
    {
    PipFactor = 10 ؛
    }
    Slippage = Slippage * PipFactor؛
    إذا (Show_Comments)
    {
    WriteComment ()؛
    }
    //----
    عودة (0)؛
    }

    // ----------------------------------------------- -------------------
    //| وظيفة انحياز خبير
    // ----------------------------------------------- -------------------
    int deinit ()
    {
    //----

    //----
    عودة (0)؛
    }


    // ----------------------------------------------- -------------------
    //| وظائف منطق إدارة التجارة |
    // ----------------------------------------------- -------------------

    bool TradeNotPlacedYet ()
    {
    مجموع int = OrdersTotal ()؛
    إذا (إجمالي gt؛ 0)
    {
    لـ (int cnt = 0؛ cntlt؛ total؛ cnt )
    {
    إذا (OrderSelect (المركز الوطني للاستشعار، SELECT_BY_POS))
    {
    if (OrderSymbol () == Symbol () OrderMagicNumber () == EA_MAGIC_NUM)
    {
    SessionIsOn = خطأ
    عودة كاذبة)؛
    }
    }
    }
    }
    //في حالة فتح التجارة بالفعل وإغلاقها لهذه الجلسة
    int histotal = OrdersHistoryTotal ()؛
    إذا كان (histotal gt؛ 0)
    {
    ل(المركز الوطني للاستشعار = 0؛ cntlt، histotal، المركز الوطني للاستشعار )
    {
    إذا (OrderSelect (المركز الوطني للاستشعار، SELECT_BY_POS، MODE_HISTORY))
    {
    if (OrderSymbol () == Symbol () OrderMagicNumber () == EA_MAGIC_NUM)
    {
    datetime LatestSessionStart = iTime (NULL، PERIOD_H1،0)؛
    datetime LatestSessionGrace = LatestSessionStart (GraceMinutes * 60)؛
    datetime CurrentOrderOpenTime = OrderOpenTime ()؛
    if (CurrentOrderOpenTime gt؛ = lastSessionStart CurrentOrderOpenTime lt؛ = LatestSessionGrace)
    {
    SessionIsOn = خطأ
    عودة كاذبة)؛
    }
    }
    }
    }
    }
    العودة (صحيح) ؛
    }

    bool Should_Buy (int SessionOpenIndex)
    {
    if (SessionOpenIndex == -1)
    {
    عودة كاذبة)؛
    }
    theSessionOpenPrice = فتح [SessionOpenIndex]؛
    ضعف theSessionCurrentPrice = إغلاق [0]؛
    إذا كان (theSessionCurrentPrice gt؛ theSessionOpenPrice)
    {
    double lookoutPrice = theSessionOpenPrice (Pip_Distance * Point * PipFactor)؛
    إذا كان (theSessionCurrentPrice gt؛ = lookoutPrice)
    {
    إذا (Spread_Still_In_Range ())
    {
    العودة (صحيح) ؛
    }
    آخر
    {
    إذا (! ProblemLogged)
    {
    string logmsg = الفارق هو DoubleToStr (CustomSpread، 1) عند تحريك السعر DoubleToStr (Pip_Distance، 1) من سعر الجلسة المفتوح هذا. لا تجارة لهذه الدورة ؛
    WriteToLogFile (logmsg)؛
    ProblemLogged = true؛
    TradeTheSession = false
    }
    }
    }
    }
    عودة كاذبة)؛
    }

    bool Should_Sell (int SessionOpenIndex)
    {
    if (SessionOpenIndex == -1)
    {
    عودة كاذبة)؛
    }
    theSessionOpenPrice = فتح [SessionOpenIndex]؛
    ضعف theSessionCurrentPrice = إغلاق [0]؛
    إذا كانت (theSessionCurrentPrice lt؛ theSessionOpenPrice)
    {
    double LookoutPrice = theSessionOpenPrice - (Pip_Distance * Point * PipFactor)؛
    إذا كانت (theSessionCurrentPrice lt؛ = lookoutPrice)
    {
    إذا (Spread_Still_In_Range ())
    {
    العودة (صحيح) ؛
    }
    آخر
    {
    إذا (! ProblemLogged)
    {
    string logmsg = الفارق هو DoubleToStr (CustomSpread، 1) عند تحريك السعر DoubleToStr (Pip_Distance، 1) من سعر الجلسة المفتوح هذا. لا تجارة لهذه الدورة ؛
    WriteToLogFile (logmsg)؛
    ProblemLogged = true؛
    TradeTheSession = false
    }
    }
    }
    }
    عودة كاذبة)؛
    }

    ضعف PositionSizeToOpen (Int StopLossPips)
    {
    ضعف PositionSize.
    خطر مزدوج

    إذا (MoneyManagement StopLossPips gt؛ 0)
    {
    إذا (UseEquity)
    {
    riskDollars = (AccountEquity ()100) * RiskPercent؛
    }
    آخر
    {
    riskDollars = (AccountBalance ()100) * RiskPercent؛
    }
    PositionSize = (RiskDollarsStopLossPips)(MarketInfo (Symbol ()، MODE_TICKVALUE) * PipFactor)؛
    }

    إذا (MoneyManagement StopLossPips lt؛ = 0)
    {
    إذا (UseEquity)
    {
    PositionSize = ((AccountEquity ()100) * RiskPercent)(MarketInfo (الرمز () ، MODE_LOTSIZE)AccountLeverage ())؛
    }
    آخر
    {
    PositionSize = ((AccountBalance ()100) * RiskPercent)(MarketInfo (الرمز () ، MODE_LOTSIZE)AccountLeverage ())؛
    }
    }

    if (! MoneyManagement)
    {
    PositionSize = FixedLots؛
    }

    إذا (PositionSize lt؛ MinLots)
    {
    PositionSize = MinLots
    }
    إذا كان (PositionSize gt؛ MaxLots)
    {
    PositionSize = MaxLots ؛
    }
    PositionSize = NormalizeDouble (PositionSize، LotsDecimalAllowed)؛
    return (PositionSize)؛
    }

    bool SendOrders (int BuyOrSell، Double LotSize، double PriceToOpen، double Slippage، double SL_Price، double TP_Price، string comments، datetime ExpirationTime)
    {
    تذكرة Int ، errorType ،

    اذا (BuyOrSell == OP_BUY)
    {
    إذا (IsECN)
    {
    طباعة (عرض التسعير: Bid Ask: Ask | طلب شراء Open: Symbol () ، BuyOrSell ، LotSize ، PriceToOpen ، Slippage ، SL_Price ، TP_Price ، comments ، EA_MAGIC_NUM ، ExpirationTime ، Green) .
    تذكرة = OrderSend (رمز ()، BuyOrSell، LotSize، PriceToOpen، انزلاق، 0،0، والتعليقات، EA_MAGIC_NUM، ExpirationTime، أخضر)؛
    إذا (ticketgt، 0)
    {
    إذا (OrderSelect (تذكرة، SELECT_BY_TICKET، MODE_TRADES))
    {
    طباعة (أمر شراء مفتوح: ، OrderOpenPrice ())؛
    msg = ticket : Buy position opened at DoubleToStr (OrderOpenPrice ()، Digits)؛
    WriteToLogFile (جي اس)؛
    إذا كان (OrderModify (تذكرة ، OrderOpenPrice () ، SL_Price ، TP_Price ، 0))
    {
    طباعة (إيقاف الخسارة وأخذ الربح) ؛
    msg = ticket : Stop Loss: DoubleToStr (SL_Price، Digits) and Take Profit DoubleToStr (TP_Price، Digits) added؛
    WriteToLogFile (جي اس)؛
    }
    آخر
    {
    errorType = GetLastError ()؛
    طباعة (ERROR مضيفا وقف الخسارة وجني الربح - ErrorDescription (errorType))؛
    msg = ticket : ERROR add Stop Loss: DoubleToStr (SL_Price، Digits) and Take Profit DoubleToStr (TP_Price، Digits) - ErrorDescription (errorType)؛
    WriteToLogFile (جي اس)؛
    }
    العودة (صحيح) ؛
    }
    }
    آخر
    {
    errorType = GetLastError ()؛
    طباعة (خطأ في فتح أمر الشراء: ، ErrorDescription (errorType))؛
    msg = لا يمكن فتح موضع BUY. ERRORDESCRIPTION (errorType)؛
    WriteToLogFile (جي اس)؛
    عودة كاذبة)؛
    }
    }
    آخر
    {
    طباعة (عرض التسعير: Bid Ask: Ask | طلب شراء Open: Symbol () ، BuyOrSell ، LotSize ، PriceToOpen ، Slippage ، SL_Price ، TP_Price ، comments ، EA_MAGIC_NUM ، ExpirationTime ، Green) .
    تذكرة = OrderSend (رمز ()، BuyOrSell، LotSize، PriceToOpen، انزلاق، SL_Price، TP_Price، والتعليقات، EA_MAGIC_NUM، ExpirationTime، أخضر)؛
    إذا (ticketgt، 0)
    {
    إذا (OrderSelect (تذكرة، SELECT_BY_TICKET، MODE_TRADES))
    {
    طباعة (أمر شراء مفتوح: ، OrderOpenPrice ())؛
    msg = ticket : شراء موضع مفتوح. ERRORDESCRIPTION (errorType)؛
    WriteToLogFile (جي اس)؛
    العودة (صحيح) ؛
    }
    }
    آخر
    {
    errorType = GetLastError ()؛
    طباعة (خطأ في فتح أمر الشراء: ، ErrorDescription (errorType))؛
    msg = لا يمكن فتح موضع BUY. ERRORDESCRIPTION (errorType)؛
    WriteToLogFile (جي اس)؛
    عودة كاذبة)؛
    }
    }
    }
    إذا كان (BuyOrSell == OP_SELL)
    {
    إذا (IsECN)
    {
    طباعة (عرض تسعير: Bid Ask: Ask | طلب بيع مبدئي: Symbol () ، BuyOrSell ، LotSize ، PriceToOpen ، Slippage ، SL_Price ، TP_Price ، comments ، EA_MAGIC_NUM ، ExpirationTime ، Red) .
    تذكرة = OrderSend (رمز ()، BuyOrSell، LotSize، PriceToOpen، انزلاق، 0،0، والتعليقات، EA_MAGIC_NUM، ExpirationTime، الأحمر)؛
    إذا (ticketgt، 0)
    {
    إذا (OrderSelect (تذكرة، SELECT_BY_TICKET، MODE_TRADES))
    {
    طباعة (تم فتح أمر بيع:: OrderOpenPrice ())؛
    msg = ticket : تم فتح موضع البيع عند DoubleToStr (OrderOpenPrice ()، Digits)؛
    WriteToLogFile (جي اس)؛
    إذا كان (OrderModify (تذكرة ، OrderOpenPrice () ، SL_Price ، TP_Price ، 0))
    {
    طباعة (إيقاف الخسارة وأخذ الربح) ؛
    msg = ticket : Stop Loss: DoubleToStr (SL_Price، Digits) and Take Profit DoubleToStr (TP_Price، Digits) added؛
    WriteToLogFile (جي اس)؛
    }
    آخر
    {
    errorType = GetLastError ()؛
    طباعة (ERROR مضيفا وقف الخسارة وجني الربح - ErrorDescription (errorType))؛
    msg = ticket : ERROR add Stop Loss: DoubleToStr (SL_Price، Digits) and Take Profit DoubleToStr (TP_Price، Digits) - ErrorDescription (errorType)؛
    WriteToLogFile (جي اس)؛
    }
    العودة (صحيح) ؛
    }
    }
    آخر
    {
    errorType = GetLastError ()؛
    طباعة (خطأ في فتح طلب SELL: ، ErrorDescription (errorType))؛
    msg = لا يمكن فتح موضع البيع. ERRORDESCRIPTION (errorType)؛
    WriteToLogFile (جي اس)؛
    عودة كاذبة)؛
    }
    }
    آخر
    {
    طباعة (عرض تسعير: Bid Ask: Ask | طلب بيع مبدئي: Symbol () ، BuyOrSell ، LotSize ، PriceToOpen ، Slippage ، SL_Price ، TP_Price ، comments ، EA_MAGIC_NUM ، ExpirationTime ، Red) .
    تذكرة = OrderSend (رمز ()، BuyOrSell، LotSize، PriceToOpen، انزلاق، SL_Price، TP_Price، والتعليقات، EA_MAGIC_NUM، ExpirationTime، الأحمر)؛
    إذا (ticketgt، 0)
    {
    إذا (OrderSelect (تذكرة، SELECT_BY_TICKET، MODE_TRADES))
    {
    طباعة (أمر بيع مفتوح: ، OrderOpenPrice ())؛
    msg = ticket : تم فتح موضع البيع. ERRORDESCRIPTION (errorType)؛
    WriteToLogFile (جي اس)؛
    العودة (صحيح) ؛
    }
    }
    آخر
    {
    errorType = GetLastError ()؛
    طباعة (خطأ في فتح طلب SELL: ، ErrorDescription (errorType))؛
    msg = لا يمكن فتح موضع البيع. ERRORDESCRIPTION (errorType)؛
    WriteToLogFile (جي اس)؛
    عودة كاذبة)؛
    }
    }
    }
    }


    bool Spread_Still_In_Range ()
    {
    إذا كان (Use_Spread_Filtering CustomSpread gt؛ Spread_Filter)
    {
    عودة كاذبة)؛
    }
    العودة (صحيح) ؛
    }


    باطل OpenBuyOrder ()
    {
    RefreshRates ()؛
    double PriceToOpen، TakeProfitPrice، StopLossPrice، PositionSize؛
    PriceToOpen = اسأل؛
    PriceToOpen = NormalizeDouble (PriceToOpen، Digits)؛
    PositionSize = PositionSizeToOpen (the_StopLoss)؛
    إذا (TakeProfit == 0)
    {
    TakeProfitPrice = 0؛
    }
    آخر
    {
    TakeProfitPrice = PriceToOpen (TakeProfit * Point * PipFactor)؛
    TakeProfitPrice = NormalizeDouble (TakeProfitPrice، Digits)؛
    }
    إذا كان (the_StopLoss == 0)
    {
    StopLossPrice = 0؛
    }
    آخر
    {
    StopLossPrice = PriceToOpen - (the_StopLoss * Point * PipFactor)؛
    StopLossPrice = NormalizeDouble (StopLossPrice، Digits)؛
    }
    إذا (PositionSize lt؛ MinLots)
    {
    PositionSize = MinLots
    }
    إذا كان (PositionSize gt؛ MaxLots)
    {
    PositionSize = MaxLots ؛
    }
    PositionSize = NormalizeDouble (PositionSize، LotsDecimalAllowed)؛
    string DateNow = TimeDay (TimeCurrent ()) - TimeMonth (TimeCurrent ()) - TimeYear (TimeCurrent ())؛
    SendOrders (OP_BUY، PositionSize، PriceToOpen، Slippage، StopLossPrice، TakeProfitPrice، CBBP_ DateNow، 0)؛
    }

    باطل OpenSellOrder ()
    {
    RefreshRates ()؛
    double PriceToOpen، TakeProfitPrice، StopLossPrice، PositionSize؛
    PriceToOpen = عرض السعر
    PriceToOpen = NormalizeDouble (PriceToOpen، Digits)؛
    PositionSize = PositionSizeToOpen (the_StopLoss)؛
    إذا (TakeProfit == 0)
    {
    TakeProfitPrice = 0؛
    }
    آخر
    {
    TakeProfitPrice = PriceToOpen - (TakeProfit * Point * PipFactor)؛
    TakeProfitPrice = NormalizeDouble (TakeProfitPrice، Digits)؛
    }
    إذا كان (the_StopLoss == 0)
    {
    StopLossPrice = 0؛
    }
    آخر
    {
    StopLossPrice = PriceToOpen (the_StopLoss * Point * PipFactor)؛
    StopLossPrice = NormalizeDouble (StopLossPrice، Digits)؛
    }

    إذا (PositionSize lt؛ MinLots)
    {
    PositionSize = MinLots
    }
    إذا كان (PositionSize gt؛ MaxLots)
    {
    PositionSize = MaxLots ؛
    }
    PositionSize = NormalizeDouble (PositionSize، LotsDecimalAllowed)؛
    string DateNow = TimeDay (TimeCurrent ()) - TimeMonth (TimeCurrent ()) - TimeYear (TimeCurrent ())؛
    SendOrders (OP_SELL، PositionSize، PriceToOpen، Slippage، StopLossPrice، TakeProfitPrice، DateNow، 0)؛
    }

    باطل ManageTrades ()
    {
    double TrailLevel = PipFactor * Point * TrailingStop؛
    TrailLevel = NormalizeDouble (TrailLevel، Digits)؛
    double BE_Level = PipFactor * Point * BreakEven_Pips؛
    BE_Level = NormalizeDouble (BE_Level، Digits)؛
    double TakeProfitPrice، StopLossPrice؛
    string logmsg =؛
    تذكرة Int ، errorType ،
    double closeNOWprice = 0؛

    مجموع int = OrdersTotal ()؛
    إذا (إجمالي gt؛ 0)
    {
    //يجب الرجوع إلى الوراء
    لـ (int cnt = total-1؛ cntgt؛ = 0؛ cnt--)
    {
    إذا (OrderSelect (المركز الوطني للاستشعار، SELECT_BY_POS))
    {
    if (OrderSymbol () == Symbol () OrderMagicNumber () == EA_MAGIC_NUM)
    {
    إذا ((OrderType () == OP_BUY)
    {
    //في حال لم يتم إضافة Stop Loss و TakeProfit. دعونا نفعل شيئا حيال ذلك هنا ...
    if (OrderStopLoss () == 0 the_StopLoss! = 0)
    {
    ticket = OrderTicket ()؛
    //أغلق التداول فورًا إذا كان السعر قد حرك بالفعل مستوى كسر مستوى الخسارة
    if (OrderOpenPrice () - Bid gt؛ = PipFactor * Point * the_StopLoss)
    {
    closeNOWprice = NormalizeDouble (المزايدة ، الأرقام) ؛
    إذا (OrderClose (تذكرة، OrderLots ()، closeNOWprice، Slippage، Red))
    {
    طباعة (إيقاف الطوارئ (إيقاف الخسارة) للطلب: ، تذكرة ، ناجحة) ؛
    logmsg = ticket : إغلاق الطوارئ (إيقاف الخسارة) ناجح !؛
    WriteToLogFile (logmsg)؛
    استمر؛
    }
    آخر
    {
    errorType = GetLastError ()؛
    طباعة (خطأ! إيقاف الطوارئ (إيقاف الخسارة) للطلب: ، تذكرة ، فشل! - ، ErrorDescription (errorType)) ؛
    logmsg = تذكرة : إغلاق الطوارئ (إيقاف الخسارة) للطلب: تذكرة فشل! - ErrorDescription (errorType)؛
    WriteToLogFile (logmsg)؛
    }
    }
    آخر
    {
    //حاول وضع مستوى وقف الخسارة وجني الربح الآن
    StopLossPrice = OrderOpenPrice () - (the_StopLoss * Point * PipFactor)؛
    StopLossPrice = NormalizeDouble (StopLossPrice، Digits)؛
    TakeProfitPrice = OrderOpenPrice () (TakeProfit * Point * PipFactor)؛
    TakeProfitPrice = NormalizeDouble (TakeProfitPrice، Digits)؛
    إذا (OrderModify (تذكرة ، OrderOpenPrice () ، StopLossPrice ، TakeProfitPrice ، 0))
    {
    طباعة (إيقاف الخسارة وجني الربح: ، التذكرة ، تمت إضافتها بنجاح) ؛
    logmsg = ticket : Stop Loss و Take Profit تمت إضافتهما بنجاح !؛
    WriteToLogFile (logmsg)؛
    }
    آخر
    {
    errorType = GetLastError ()؛
    Print (ERROR! Adding Stop Loss and Take Profit of order:، ticket، failed! -، ErrorDescription (errorType))؛
    logmsg = تذكرة : إضافة إيقاف الخسارة وجني الربح: تذكرة فشل! - ErrorDescription (errorType)؛
    WriteToLogFile (logmsg)؛
    }
    }
    }
    //على غرار ما ورد أعلاه ، إلا أن هذا يعالج السيناريو المؤاتي لمستوى takeprofit
    if (OrderTakeProfit () == 0 TakeProfit! = 0)
    {
    //أغلق التداول فورًا إذا كان السعر قد حرك بالفعل مستوى كسر مستوى الخسارة
    if (Bid-OrderOpenPrice () gt؛ = PipFactor * Point * TakeProfit)
    {
    ticket = OrderTicket ()؛
    closeNOWprice = NormalizeDouble (المزايدة ، الأرقام) ؛
    إذا (OrderClose (تذكرة ، OrderLots () ، closeNOWprice ، Slippage ، الأزرق))
    {
    طباعة (الطوارئ (Take Profit) إغلاق الأمر: ، التذكرة ، ناجحة) ؛
    logmsg = ticket : إغلاق الطوارئ (Take Profit) ناجح !؛
    WriteToLogFile (logmsg)؛
    استمر؛
    }
    آخر
    {
    errorType = GetLastError ()؛
    Print (ERROR! Emergency (Take Profit) shut of order:، ticket، failed! -، ErrorDescription (errorType))؛
    logmsg = تذكرة : الطوارئ (أخذ الربح) إغلاق النظام: تذكرة فاشلة! - ErrorDescription (errorType)؛
    WriteToLogFile (logmsg)؛
    }
    }
    }

    //تحقق ل Breakeven.
    إذا (Use_BE)
    {
    if (Bid-OrderStopLoss () gt؛ PipFactor * Point * BreakEven_Pips)
    {
    إذا كان (OrderStopLoss () lt ؛ OrderOpenPrice ())
    {
    StopLossPrice = Bid ​​- BE_Level؛
    StopLossPrice = NormalizeDouble (StopLossPrice، Digits)؛
    if (StopLossPrice gt؛ OrderOpenPrice ())
    {
    إذا (OrderModify (OrderTicket ()، OrderOpenPrice ()، OrderOpenPrice ()، OrderTakeProfit ()، 0، أخضر))
    {
    logmsg = Buy Order OrderTicket () SL وصلت إلى مستوى التعادل.
    WriteToLogFile (logmsg)؛
    }
    }
    آخر
    {
    إذا (OrderModify (OrderTicket ()، OrderOpenPrice ()، StopLossPrice، OrderTakeProfit ()، 0، أخضر))
    {
    logmsg = أمر شراء OrderTicket () SL يتحرك باتجاه مستوى التعادل.
    WriteToLogFile (logmsg)؛
    }
    }
    }
    }
    }
    //تحقق من وجود Floating Stop
    إذا (! UseJumpingStop (TrailingStop! = 0))
    {
    if ((Bid-OrderOpenPrice ()) gt؛ TrailLevel ((Bid-OrderOpenPrice ()) gt؛ = BE_Level || OrderStopLoss () gt؛ = OrderOpenPrice ()))
    {
    إذا كانت (OrderStopLoss () lt ؛ Bid-TrailLevel)
    {
    StopLossPrice = NormalizeDouble (Bid-TrailLevel، Digits)؛
    OrderModify (OrderTicket ()، OrderOpenPrice ()، StopLossPrice، OrderTakeProfit ()، 0، أخضر)؛
    }
    }
    }
    //التحقق من وقف القفز
    إذا (UseJumpingStop (TrailingStop! = 0))
    {
    if ((Bid-OrderStopLoss () gt؛ (TrailLevel * 2)) ((Bid-OrderOpenPrice ()) gt؛ = BE_Level || OrderStopLoss () gt؛ = OrderOpenPrice ()))
    {
    إذا كانت ((OrderStopLoss () TrailLevel) lt؛ OrderTakeProfit () || OrderTakeProfit () == 0)/لا يمكن أن يكون مستوى إيقاف الخسارة أعلى من مستوى جني الربح
    {
    StopLossPrice = NormalizeDouble (OrderStopLoss () TrailLevel، Digits)؛
    OrderModify (OrderTicket ()، OrderOpenPrice ()، StopLossPrice، OrderTakeProfit ()، 0، أخضر)؛
    }
    }
    }
    }

    إذا كان (OrderType () == OP_SELL)
    {
    //في حال لم يتم إضافة Stop Loss و TakeProfit. دعونا نفعل شيئا حيال ذلك هنا ...
    if (OrderStopLoss () == 0 the_StopLoss! = 0)
    {
    ticket = OrderTicket ()؛
    //أغلق التداول فورًا إذا كان السعر قد حرك بالفعل مستوى كسر مستوى الخسارة
    إذا (اسأل - OrderOpenPrice () gt؛ = PipFactor * Point * the_StopLoss)
    {
    closeNOWprice = NormalizeDouble (اسأل ، الأرقام) ؛
    إذا (OrderClose (تذكرة، OrderLots ()، closeNOWprice، Slippage، Red))
    {
    طباعة (إيقاف الطوارئ (إيقاف الخسارة) للطلب: ، تذكرة ، ناجحة) ؛
    logmsg = ticket : إغلاق الطوارئ (إيقاف الخسارة) ناجح !؛
    WriteToLogFile (logmsg)؛
    استمر؛
    }
    آخر
    {
    errorType = GetLastError ()؛
    طباعة (خطأ! إيقاف الطوارئ (إيقاف الخسارة) للطلب: ، تذكرة ، فشل! - ، ErrorDescription (errorType)) ؛
    logmsg = تذكرة : إغلاق الطوارئ (إيقاف الخسارة) للطلب: تذكرة فشل! - ErrorDescription (errorType)؛
    WriteToLogFile (logmsg)؛
    }
    }
    آخر
    {
    //حاول وضع مستوى وقف الخسارة وجني الربح الآن
    StopLossPrice = OrderOpenPrice () (the_StopLoss * Point * PipFactor)؛
    StopLossPrice = NormalizeDouble (StopLossPrice، Digits)؛
    TakeProfitPrice = OrderOpenPrice () - (TakeProfit * Point * PipFactor)؛
    TakeProfitPrice = NormalizeDouble (TakeProfitPrice، Digits)؛
    إذا (OrderModify (تذكرة ، OrderOpenPrice () ، StopLossPrice ، TakeProfitPrice ، 0))
    {
    طباعة (إيقاف الخسارة وجني الربح: ، التذكرة ، تمت إضافتها بنجاح) ؛
    logmsg = ticket : Stop Loss و Take Profit تمت إضافتهما بنجاح !؛
    WriteToLogFile (logmsg)؛
    }
    آخر
    {
    errorType = GetLastError ()؛
    Print (ERROR! Adding Stop Loss and Take Profit of order:، ticket، failed! -، ErrorDescription (errorType))؛
    logmsg = تذكرة : إضافة إيقاف الخسارة وجني الربح: تذكرة فشل! - ErrorDescription (errorType)؛
    WriteToLogFile (logmsg)؛
    }
    }
    }
    //على غرار ما ورد أعلاه ، إلا أن هذا يعالج السيناريو المؤاتي لمستوى takeprofit
    if (OrderTakeProfit () == 0 TakeProfit! = 0)
    {
    //أغلق التداول فورًا إذا كان السعر قد حرك بالفعل مستوى كسر مستوى الخسارة
    if (OrderOpenPrice () - اسأل gt؛ = PipFactor * Point * TakeProfit)
    {
    ticket = OrderTicket ()؛
    closeNOWprice = NormalizeDouble (اسأل ، الأرقام) ؛
    إذا (OrderClose (تذكرة ، OrderLots () ، closeNOWprice ، Slippage ، الأزرق))
    {
    طباعة (الطوارئ (Take Profit) إغلاق الأمر: ، التذكرة ، ناجحة) ؛
    logmsg = ticket : إغلاق الطوارئ (Take Profit) ناجح !؛
    WriteToLogFile (logmsg)؛
    استمر؛
    }
    آخر
    {
    errorType = GetLastError ()؛
    Print (ERROR! Emergency (Take Profit) shut of order:، ticket، failed! -، ErrorDescription (errorType))؛
    logmsg = تذكرة : الطوارئ (أخذ الربح) إغلاق النظام: تذكرة فاشلة! - ErrorDescription (errorType)؛
    WriteToLogFile (logmsg)؛
    }
    }
    }

    //تحقق ل Breakeven
    إذا (Use_BE)
    {
    إذا كان (OrderStopLoss () - اسأل gt ؛ PipFactor * Point * BreakEven_Pips)
    {
    if (OrderStopLoss () gt؛ OrderOpenPrice ())
    {
    StopLossPrice = اسأل BE_Level؛
    StopLossPrice = NormalizeDouble (StopLossPrice، Digits)؛
    إذا كانت (StopLossPrice lt؛ OrderOpenPrice ())
    {
    إذا (OrderModify (OrderTicket ()، OrderOpenPrice ()، OrderOpenPrice ()، OrderTakeProfit ()، 0، أخضر))
    {
    logmsg = طلب البيع OrderTicket () SL وصل إلى مستوى التعادل.
    WriteToLogFile (logmsg)؛
    }
    }
    آخر
    {
    إذا (OrderModify (OrderTicket ()، OrderOpenPrice ()، StopLossPrice، OrderTakeProfit ()، 0، أخضر))
    {
    logmsg = أمر بيع OrderTicket () SL يتحرك باتجاه مستوى التعادل.
    WriteToLogFile (logmsg)؛
    }
    }
    }
    }
    }
    //تحقق من وجود Floating Stop
    إذا (! UseJumpingStop (TrailingStop! = 0))
    {
    if ((OrderOpenPrice () - Ask) gt؛ TrailLevel ((OrderOpenPrice () - Ask) gt؛ = BE_Level || OrderStopLoss () lt؛ = OrderOpenPrice ()))
    {
    إذا كانت (OrderStopLoss () gt؛ Ask TrailLevel)
    {
    StopLossPrice = NormalizeDouble (Ask TrailLevel، Digits)؛
    OrderModify (OrderTicket ()، OrderOpenPrice ()، StopLossPrice، OrderTakeProfit ()، 0، الأحمر)؛
    }
    }
    }
    //التحقق من وقف القفز
    إذا (UseJumpingStop (TrailingStop! = 0))
    {
    //تنشيط فقط عندما يكون الموقع في الربح من قبل stoploss amt.
    if (((OrderStopLoss () - Ask) gt؛ (TrailLevel * 2)) ((OrderOpenPrice () - Ask) gt؛ = BE_Level || OrderStopLoss () lt؛ = OrderOpenPrice ()))
    {
    إذا كانت ((OrderStopLoss () - TrailLevel) gt؛ OrderTakeProfit () || OrderTakeProfit () == 0)/لا يمكن أن يكون مستوى إيقاف الخسارة أقل من أخذ مستوى الربح
    {
    StopLossPrice = NormalizeDouble (OrderStopLoss () - TrailLevel، Digits)؛
    OrderModify (OrderTicket ()، OrderOpenPrice ()، StopLossPrice، OrderTakeProfit ()، 0، الأحمر)؛
    }
    }
    }
    }
    }
    }
    }
    }
    }

    // ----------------------------------------------- -------------------
    //| وظائف متنوعة |
    // ----------------------------------------------- -------------------

    باطل GetSpread ()
    {
    if (UserDefinedSpread lt؛ = 0)
    {
    CustomSpread = (MarketInfo (Symbol ()، MODE_SPREAD))PipFactor؛
    }
    آخر
    {
    انتشار مخصص = انتشار محدد من قبل المستخدم
    }

    //هل نضيف الفارق إلى StopLoss؟
    وقف الخسارة = وقف الخسارة.
    إذا (StopLoss gt؛ 0)
    {
    إذا (Add_Spread_To_StopLoss)
    {
    وقف الخسارة = وقف الخسارة السبريد المخصص.
    }
    آخر
    {
    وقف الخسارة = وقف الخسارة.
    }
    }
    }

    void WriteComment ()
    {
    msg =؛
    int currentHour = TimeHour (الزمن [0]) ؛
    إذا ((SessionOpenHour1 lt؛ SessionOpenHour2)
    {
    إذا (currentHour lt؛ SessionOpenHour2)
    {
    msg = EA waiting for Session2 Open؛
    }
    إذا كان (currentHour lt؛ SessionOpenHour1 || currentHour gt؛ SessionOpenHour2)
    {
    msg = EA waiting for Session1 Open؛
    }
    }
    آخر
    {
    إذا (currentHour lt؛ SessionOpenHour1)
    {
    msg = EA waiting for Session1 Open؛
    }
    إذا كان (currentHour lt؛ SessionOpenHour2 || currentHour gt؛ SessionOpenHour1)
    {
    msg = EA waiting for Session2 Open؛
    }
    }
    msg = msg \ Current Time: current Hour : Time Minute (TimeCurrent ())؛

    إذا (PipFactor == 10)
    {
    msg = msg \ nWorking with fractional pips؛
    }
    آخر
    {
    msg = msg \ nWorking with non-Fractional pips؛
    }
    //double stoplevel = MarketInfo (Symbol ()، MODE_STOPLEVEL)PipFactor؛

    إذا (MoneyManagement the_StopLoss gt؛ 0)
    {
    msg = msg \ Using Money Management Feature وفقا لإيقاف الخسارة؛
    }
    msg = msg \ Current Spread: DoubleToStr (Custom Spread، 1) pips؛
    إذا (Add_Spread_To_StopLoss the_StopLoss! = 0)
    {
    msg = msg \ n سيتم إضافة Spread إلى إيقاف الخسارة الخاص بك؛
    }
    آخر
    {
    msg = msg \ n لن تتم إضافة Spread إلى Stop Loss؛
    }
    if (SessionIsOn)
    {
    msg = msg \ on \ Time للتداول latestSession . تبحث عن دخول ... ؛
    msg = msg \ nSession Open Price: DoubleToStr (theSessionOpenPrice، Digits)؛
    msg = msg \ n السعر الحالي: DoubleToStr (Close [0]، Digits)؛
    }
    آخر
    {
    msg = msg \ n closesession نافذة التداول مغلقة ؛
    }
    تعليق (جي اس)؛
    }

    void WriteToLogFile (إدخال سلسلة)
    {
    اسم السلسلة = CBBP الرمز ) - ( ) - شهر () - سنة ( ) سجل.
    int handle = FileOpen (اسم الملف ، FILE_READ | FILE_WRITE)؛
    إذا (المقبض ؛ 1)
    {
    string prefix = يوم () شهر () سنة ( ) - ساعة () : دقيقة () : ثانية () = gt؛ .
    FileSeek (مقبض ، 0 ، SEEK_END) ؛/اذهب إلى نهاية الملف
    FileWrite (مقبض ، بادئة إدخال) ؛
    FileClose (مقبض)؛
    }
    }
    //تم إنشاء هذه الطريقة لإنشاء ملف جديد ليوم جديد. لا يكتب الخط الأول المراد كتابته في بعض الأحيان.
    //يمكن للرسالة الوهمية المستخدمة هنا أن تكون بمثابة مخزن مؤقت حتى لا تفوتك المعلومات المفيدة.
    void CreateNewLogFileIfNewDay ()
    {
    if (todayOfYear! = DayOfYear ())
    {
    todayOfYear = DayOfYear ()؛
    WriteToLogFile (رسالة وهمية)؛
    }
    }

    bool TimeToTrade ()
    {
    int currentHour = TimeHour (الزمن [0]) ؛
    int currentMinute = TimeMinute (TimeCurrent ())؛
    if ((currentHour == SessionOpenHour1 || currentHour == SessionOpenHour2) currentMinute lt؛ GraceMinutes)
    {
    العودة (صحيح) ؛
    }
    عودة كاذبة)؛
    }

    int GetSessionOpenCandle ()
    {
    int SessionOpenCandleIndex = -1؛
    لـ (int i = 0؛ ilt؛ = GraceMinutes 1؛ i )
    {
    إذا (TimeHour (Time [i]) = = currentSessionHour TimeMinute (الوقت [i]) == 0)
    {
    SessionOpenCandleIndex = i؛
    استراحة؛
    }
    }
    return (SessionOpenCandleIndex)؛
    }

    // ----------------------------------------------- -------------------
    //| وظيفة بداية الخبراء
    // ----------------------------------------------- -------------------
    بداية int ()
    {
    //----
    إذا (! StartupStatusOK)
    {
    تعليق (هناك أخطاء في مدخلات EA الخاصة بك. الرجاء إعادة التحقق منها مرة أخرى.)؛
    العودة (0) ؛
    }
    CreateNewLogFileIfNewDay ()؛
    ManageTrades ()؛
    GetSpread ()؛

    إذا (TimeToTrade ())
    {
    currentSessionHour = TimeHour (الوقت [0]) ؛
    if (currentSessionHour == SessionOpenHour1)
    {
    latestSession = Session1؛
    }
    if (currentSessionHour == SessionOpenHour2)
    {
    latestSession = Session2؛
    }
    إذا (TradeNotPlacedYet () TradeTheSession)
    {
    int SessionOpenIndex = GetSessionOpenCandle ()؛
    SessionIsOn = true؛
    إذا (! SessionOpenPriceWritten)
    {
    string logmsg = latestSession open في DoubleToStr (فتح [SessionOpenIndex] ، الأرقام) ؛
    طباعة (logmsg)؛
    WriteToLogFile (logmsg)؛
    SessionOpenPriceWritten = true؛
    }
    إذا (should_Buy (SessionOpenIndex) TradeTheSession)
    {
    OpenBuyOrder ()؛
    TradeTheSession = false
    }
    إذا (Should_Sell (SessionOpenIndex) TradeTheSession)
    {
    OpenSellOrder ()؛
    TradeTheSession = false
    }
    }
    آخر
    {
    SessionIsOn = خطأ
    }
    }
    آخر
    {
    SessionIsOn = خطأ
    TradeTheSession = true؛
    ProblemLogged = خطأ
    SessionOpenPriceWritten = false؛
    }
    إذا (Show_Comments)
    {
    WriteComment ()؛
    }

    //----
    عودة (0)؛

  2. #2
    أنا متأكد من أن هناك شخصًا يمكنه رؤية القيمة في هذا EA. كيف يمكنني الحصول على BE (كما) إلى BE (x) عدد النقاط؟ شكرا جزيلا

  3. #3
    يرجى إرفاق EA بالبريد - كالكتابة العادية ، تصبح البنية أكثر ثباتًا عند إعادة تحميلها إلى MT4 للتحرير.

  4. #4
    Quote Originally Posted by ;
    يرجى إرفاق EA بالبريد - كالكتابة العادية ، تصبح البنية أكثر ثباتًا عند إعادة تحميلها إلى MT4 للتحرير.
    أجا ، ها أنت ذا. شكر
    https://www.forexdrop.com/trading-di...statement.html
    https://www.forexdrop.com/attachment...1375101646.mq4

  5. #5
    هل تتحدث عن الانتشار؟ أو ، اللجنة على رأس انتشار؟ لو كان الأمر مجرد انتشار ، سيكون ذلك سهلاً بما فيه الكفاية ، على ما أعتقد؟ ... BE ((Ask-Bid)Point) * الكثير (قد يتطلب قوس إضافي). وإلا عليك أن تعرف كيف يقوم وسيطك بحساب العمولة الإضافية ويجب عليك أن تسألهم.

  6. #6
    الإصدار 3 من EA التي هي لهذا الطلب هو الافراج في موضوع البنوك المركزية واللاعبين الكبار. هذا الموضوع يمكن أن تكون مغلقة. تحياتي ، زن

  7. #7
    هل لديك رابط؟ أو ربما يمكنك نشر أحدث إصدار هنا؟ نفهمها ، لقد وجدت في هذا المنصب هنا.

  8. #8
    مرحبا أنا فقط أريد أن أعرف ما إذا كان هذا EA لديه رمز يضع التوقف لكسر حتى بعد الربح 2 نقطة. كنت أرغب في الحصول على هذه الميزة حتى أتمكن من ضبط ونسيان الطلبات بالسعر الذي أريده وبعد تحقيقه أرباح 2 نقطة ، والسماح بتجارة حرة. أنا لست المبرمج لذلك أنا جاهل ما يعني هذا الرمز أعلاه.

أذونات النشر

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  
  • رمز BB مفعل
  • الابتسامات مفعلة
  • رمز[IMG] مفعل
  • رمز [VIDEO] مفعل
  • رمز HTML غير مفعل
This website uses cookies
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.