النتائج 1 إلى 9 من 9
الموضوع: سؤال خارج الصندوق
- 06-07-2020, 11:50 PM #1
سؤال خارج الصندوق
السلام عليكم
هل هناك طريقة لعمل باك تيست بداية من وقت محدد ليس هو بداية اليوم
يعنى هل ممكن احدد بداية الباك تيست من اى دقيقة خلال اليوم ؟
الباك تيست الموجود على الميتاتريدر فيه التاريخ فقط يعنى يبدأ من الساعة صفر لليوم المحدد .. انا عايز باك تيست من الساعة 11 مثلاً ...
طبعا الرد المتوقع يدوياً ...
شكرا مقدما للجميع
- 07-07-2020, 12:01 AM #2
ممكن تكتب كود داخل الاكسبيرت يتاجر فقط في ساعات محددة
- 07-07-2020, 12:04 AM #3
وعليكم السلام
عندك حلين :
تعديل بكود الاكسبيرت ليبدأ بعد تاريخ وزمن محدد داخله .
أو من خلال الهيستوري سنتر بحذف كل الشموع السابقة للتي تريد البدء بعدها مباشرة . مع مراعاة عمل الحذف على كل الفريمات التي هي مساوية لفريم التست والاقل منها ايضا .
- 07-07-2020, 12:47 AM #4
وعليكم السلام وعليكم السلام وعليكم السلام ورحمة الله وبركاته
اخيراً .. افتكرت حضرتك اعتزلت المنتديات
من ساعة ما قرأت موضوعك الخاص بالعشوائية والتحدى الخاص بنقل الرصيد من حساب معين ثابت الى حساب آخر معين ثابت وانا تفكيرى اتغير تماما للنظر الى الأشياء
بالمناسبة انا وصلت لنص الحل النص التانى هو اللى مطلع عنيا من 3 شهور ولسة كل ما اوصل لطريق الاقية مغلق فى النهاية بس ربنا بيفتح قدامى طريق تانى والطريق اللى اتغلق بيعطينى اضافة كانت ناقصة ...
عسى يوم أن شاء الله أوصل الى نهاية ناجحة بأذن الله ...
وشكرا لحضرتك على الحل لمشكلتى ... هجربها وان شاء الله تنجح
- 08-07-2020, 01:03 AM #5
ده كود اكسبيرت بيفتح صفقتين بيع وشراء وبعد كدة اللى تحقق الربح او الخسارة بيفتح مكانها صفقة اخرى من نفس نوعها
عدلت عليه بأكثر من طريقة لكى يبدأ عند وقت معين لكن فشلت المحاولات وكل مرة يبدأ من الساعة صفر لليوم اللى هبدأ فيه التيست او على حساب ديمو بمجرد تشغيله يضع اوامر بدون اى أعتبار لساعة البداية اللى موجوة فى الإعدادات
هو يعتبر اكسبيرت خدمى لأنى بقوم بدراسة النتائج ...
عايز اعرف ايه الخطأ وكمان ازاى نظبط ساعة البداية للأكسبيرت
كود:input string TradeTime="00:00"; input int TP=500; input int SL=500; input double lot=0.1; datetime Time0; int buyTicket,sellTicket; double buyPrice,sellPrice; bool r; int OnInit() { return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { } void OnTick() { GetTicket(); if(buyTicket<=0) { buyTicket=OrderSend(Symbol(),OP_BUY,lot,Ask,0,Ask-SL*Point,Ask+TP*Point,"",0,0); } if(sellTicket<=0) { sellTicket=OrderSend(Symbol(),OP_SELL,lot,Bid,0,Bi d+SL*Point,Bid-TP*Point,"",0,0); } } void GetTicket() { buyTicket=-1; sellTicket=-1; buyPrice=0; sellPrice=0; for(int i=0;i<OrdersTotal();i++) { r=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderType()==OP_BUY && OrderSymbol()==Symbol()) { buyTicket=OrderTicket(); buyPrice=OrderOpenPrice(); } if(OrderType()==OP_SELL && OrderSymbol()==Symbol()) { sellTicket=OrderTicket(); sellPrice=OrderOpenPrice(); } } }
- 08-07-2020, 01:40 PM #6
هذا اسلؤال من عمق الصندوق
ردك الاخير دالة oNTICK لابد تحصر مدة التداول
يعني كل اسطرها تكون محصورة بين جملة شرطية تحدد بداية ونهاية وقت التداول
- 08-07-2020, 01:41 PM #7
بحيث خارج تلك الفترة التي تحددها يصبح الاكسبيرت كأنه غير موجود على التشارت
- 09-07-2020, 01:16 AM #8
- 09-07-2020, 01:57 AM #9
كان سابقا هناك دالة return(0) لكنها لم تعد شغالة ولا اعرف السبب
لذا يمكن تعريف متغير منطقي كالاتي
bool trade=true;
if (Hour()==x) trade =false;
وتضيف شرط
if (trade==true)
OrderSend(Symbol(),OP_SELL,lot,Bid,0,Bi d+SL*Point,Bid-TP*Point,"",0,0);
هذا الحل الذي استخدمه بعد الغاء دالة return(0) وربما بعض الاخوة لديه حل اسهل