مرحبا شباب،
لدي هذا الكود الذي كتبته ، وفي رأيي أنه يعمل بشكل مثالي ، لكن عقلي يبدو خاطئًا ولا يعرف السبب.
لذلك قمت بتتبع المشكلة إلى جزء محدد ولكني لا أزال لا أعرف ما الذي يجعلها تفشل.
لا توجد أخطاء من أي أهمية سواء.
في ما يلي الجزء الذي يبدو فيه الفشل في:
الرمز المدرج إذا كان (Trades # 91؛ 7، RowNumber2 # 93؛ == 1) {if (Ask lt؛ = Trades # 91؛ 2، RowNumber2 # 93؛ Trades # 91؛ 6، RowNumber # 93؛ == 0) { int Ticket = OrderSend (Symbol ()، OP_SELL، Lots، Ask، Slippage، Trades # 91؛ 4، RowNumber2 # 93 ؛، 0، NULL، Trades # 91؛ 1، RowNumber # 93 ؛، 0، Blue)؛ الحرف # 91؛ 6، RowNumber # 93؛ = 1 ؛/Print (--- MagicNumber =، MagicNumber، ---)؛ ArrayCounter2 = 0 ، RowNumber2 = 0 ، }} آخر {ArrayCounter2 = ArrayCounter2 1؛ RowNumber2 = RowNumber2 1 ، }
هنا هو الرمز الكامل:
Inserted Code/ --------------------------------------------- --------------------- /| FTB.mq4 |/| |/| https://www.mql4.com |/ ----------------------------------------------- ------------------- #property copyright #property strict extern int MagicNumber = 10001؛ extern double Lots = 0.1؛ extern double TrailingStop = 0؛ extern int Slippage = 3؛ extern double EntryGap = 0.00500؛ extern int BrokerDigits = 5؛ ex int int AllowableDrawdown = 25؛ extern Int MaxDrawdown = 610؛ extern bool MoneyManagement = false؛ دخول مزدوج؛ مضاعف StopLoss. مزدوجة TakeProfit. ضعف HalfCandleSize. مزدوج الأوسط ضعف OpenCheck. مزدوجة CloseCheck. double Trades # 91؛ 8 # 93؛ # 91؛ 20 # 93 ؛؛/ArrayNumber | MagicNumber | دخول | Stoploss | WaitCounter ExpirationTime | دخلت | Populated Int SignalTime؛ int BarsOnChart = القضبان int IsNewCandle؛ int OrderError = 0؛ int RowNumber = 0؛ int RowNumber2 = 0 ؛ int ArrayCounter = 0؛ int ArrayCounter2 = 0 ،/ ----------------------------------------------- ------------------- /| وظيفة التهيئة الخبير |/ ----------------------------------------------- ------------------- int OnInit () {Trades # 91؛ 0،0 # 93؛ = 1 ؛ الحرف # 91؛ 0،1 # 93؛ = 2 ؛ الحرف # 91؛ 0،2 # 93؛ = 3 الحرف # 91؛ 0،3 # 93؛ = 4 الحرف # 91؛ 0،4 # 93؛ = 5 ؛ الحرف # 91؛ 0،5 # 93؛ = 6 الحرف # 91؛ 0،6 # 93؛ = 7 الحرف # 91؛ 0،7 # 93؛ = 8 الحرف # 91؛ 0،8 # 93؛ = 9 الحرف # 91؛ 0،9 # 93؛ = 10 ؛ الحرف # 91؛ 0،10 # 93؛ 11 = الحرف # 91؛ 0،11 # 93؛ 12 = الحرف # 91؛ 0،12 # 93؛ 13 = الحرف # 91؛ 0،13 # 93؛ 14 = الحرف # 91؛ 0،14 # 93؛ = 15 الحرف # 91؛ 0،15 # 93؛ = 16 الحرف # 91؛ 0،16 # 93؛ 17 = الحرف # 91؛ 0،17 # 93؛ = 18 ؛ الحرف # 91؛ 0،18 # 93؛ = 19 ؛ الحرف # 91؛ 0،19 # 93؛ = 20 ؛ طباعة(-----------)؛ Print (ArrayNumber =، Trades # 91؛ 0، RowNumber # 93؛)؛ Print (MagicNumber =، Trades # 91؛ 1، RowNumber # 93؛)؛ Print (Entry =، Trades # 91؛ 2، RowNumber # 93؛)؛ Print (Stoploss =، Trades # 91؛ 3، RowNumber # 93؛)؛ Print (WaitCounter =، Trades # 91؛ 4، RowNumber # 93؛)؛ Print (ExpirationTime =، Trades # 91؛ 5، RowNumber # 93؛)؛ Print (Entered =، Trades # 91؛ 6، RowNumber # 93؛)؛ Print (Populated =، Trades # 91؛ 7، RowNumber # 93؛)؛ طباعة(-----------)؛ العودة (INIT_SUCCEEDED)؛ }/ ---------------------------------------------- -------------------- /| وظيفة انحياز الخبراء/ ----------------------------------------------- ------------------- void OnDeinit (const int reason)) {}/ ------------------ ------------------------------------------------ /| وظيفة القراد الخبراء/ ----------------------------------------------- ------------------- void OnTick () {if (BarsOnChart! = Bars)/Checking for new closedالشموع {BarsOnChart = القضبان؛ IsNewCandle = 1 ، } آخر {IsNewCandle = 0؛ } إذا كانت (IsNewCandle == 1)/تحقق مما إذا كانت شمعة جديدة قد أغلقت {SignalTime = Hour () - 1؛ إذا ((SignalTime gt؛ 8) (SignalTime lt؛ 14) (High # 91؛ 1 # 93؛ gt؛ High # 91؛ 2 # 93؛))/تحقق لمعرفة ما إذا كانت شمعة الإشارة لديها أعلى أعلى من الشمعة قبل وضمن الإطار الزمني {HalfCandleSize = (High # 91؛ 1 # 93؛ - Low # 91؛ 1 # 93؛)2؛/حساب نصف حجم الشمعة Middle = Low # 91؛ 1 # 93؛ HalfCandleSize/يحسب منتصف الشمعة OpenCheck = Middle - Open # 91 ؛ 1 # 93 ؛؛/يحسب المسافة بين فتح وإغلاق CloseCheck = Middle - Close # 91؛ 1 # 93 ؛؛/يحسب المسافة بين الإغلاق والمتوسط إذا كان (OpenCheck gt؛ 0 CloseCheck gt؛ 0)/يتحقق لمعرفة ما إذا كانت الشمعة تغلق في النصف السفلي {Entry = NormalizeDouble (Low # 91؛ 1 # 93؛ - 0.0001، 5)؛/سبب خطأ OrderSend 130 هو أن Entry Entry قريب جدا من Current Market Entry StopLoss = NormalizeDouble (High # 91؛ 1 # 93؛ 0.0005، 5)؛ بينما (ArrayCounter lt؛ 20) {if (Trades # 91؛ 7، RowNumber # 93؛ == 0) {Traders # 91؛ 1، RowNumber # 93؛ = ماجيك نمبر الحرف # 91؛ 2، RowNumber # 93؛ = دخول الحرف # 91؛ 3، RowNumber # 93؛ = StopLoss الحرف # 91؛ 4، RowNumber # 93؛ = 0 الحرف # 91؛ 5، RowNumber # 93؛ = 0 الحرف # 91؛ 6، RowNumber # 93؛ = 0 الحرف # 91؛ 7، RowNumber # 93؛ = 1 ؛ MagicNumber = MagicNumber 1؛ طباعة(-----------)؛ Print (ArrayNumber =، Trades # 91؛ 0، RowNumber # 93؛)؛ Print (MagicNumber =، Trades # 91؛ 1، RowNumber # 93؛)؛ Print (Entry =، Trades # 91؛ 2، RowNumber # 93؛)؛ Print (Stoploss =، Trades # 91؛ 3، RowNumber # 93؛)؛ Print (WaitCounter =، Trades # 91؛ 4، RowNumber # 93؛)؛ Print (ExpirationTime =، Trades # 91؛ 5، RowNumber # 93؛)؛ Print (Entered =، Trades # 91؛ 6، RowNumber # 93؛)؛ Print (Populated =، Trades # 91؛ 7، RowNumber # 93؛)؛ طباعة(-----------)؛ استراحة؛ } آخر {ArrayCounter = ArrayCounter 1؛ RowNumber = RowNumber 1؛ }} ArrayCounter = 0؛ RowNumber = 0؛ }}} أثناء (ArrayCounter2لتر. 20) {if (Trades # 91؛ 7، RowNumber2 # 93؛ == 1) {if (Ask lt؛ = Trades # 91؛ 2، RowNumber2 # 93؛ Trades # 91؛ 6، RowNumber # 93؛ == 0) {int Ticket = OrderSend (Symbol ()، OP_SELL، Lots، Ask، Slippage، Trades # 91؛ 4، RowNumber2 # 93 ؛، 0، NULL، Trades # 91؛ 1، RowNumber # 93 ؛، 0، Blue)؛ الحرف # 91؛ 6، RowNumber # 93؛ = 1 ؛/Print (--- MagicNumber =، MagicNumber، ---)؛ ArrayCounter2 = 0 ، RowNumber2 = 0 ، }} آخر {ArrayCounter2 = ArrayCounter2 1؛ RowNumber2 = RowNumber2 1 ، }} إذا كانت (ArrayCounter2 == 20) {ArrayCounter2 = 0؛ RowNumber2 = 0 ، }}
إذا كان بإمكانكم أن تعطيني حكمتكم التي ستكون محل تقدير كبير.
شكر!