النتائج 1 إلى 7 من 7
  1. #1
    الصورة الرمزية The Samurai
    The Samurai غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2008
    العمر
    39
    المشاركات
    227

    افتراضي تعديل كود ليعمل علي أزواج الين

    تحيه طيبه... الرجاء عمل تعديل لهذا الكود ليعمل علي أزواج الين

    ولكم جزيل الشكر....
    الملفات المرفقة الملفات المرفقة
    • نوع الملف: mq4 Code.mq4‏ (2.2 كيلوبايت, المشاهدات 8)
    آخر تعديل بواسطة The Samurai ، 08-12-2022 الساعة 01:55 AM

  2. #2
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    ما المشكلة؟
    الذي يظهر لي أنه يعمل على أزواج الين كما يعمل على غيرها . .

    مبرمجه يظهر لي أنه ممتاز جداً -- من الصف الأول . .
    آخر تعديل بواسطة سلمان_العتيبي ، 09-12-2022 الساعة 12:03 AM

  3. #3
    الصورة الرمزية Pharm.D
    Pharm.D غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2009
    الإقامة
    السعودية
    المشاركات
    1,661

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة The Samurai مشاهدة المشاركة
    تحيه طيبه... الرجاء عمل تعديل لهذا الكود ليعمل علي أزواج الين

    ولكم جزيل الشكر....
    هذا الكود فقط يعمل في وضع اختبار الاستراتيجيات Strategy Tester و لا يمكنه فتح صفقات حقيقية
    توقيع العضو
    !!! أفضل و أشمل اكسبيرت لتداول الترندات المكسورة - من برمجتي !!!

  4. #4
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة Pharm.D مشاهدة المشاركة
    هذا الكود فقط يعمل في وضع اختبار الاستراتيجيات Strategy Tester و لا يمكنه فتح صفقات حقيقية
    لو غيرت الدالة الى OnTick سيحسب عادي وهو اساسا مصمم فقط لحساب ارباح الصفقات المغلقة بالنقاط فقط في صفحة هيستوري . . ولا دخل له بالتداول سواء في التستر او الحقيقي او الديمو او ايا كان

    وتصميمه بالغ الذكاء . .

    صاحب الموضوع . . .غير OnTester الى OnTick . . . هل تستمر مشكلتك؟

    اا انحلت . . .يعني هناك خصائص خاصة بـ OnTester

    لا تنسى void بدل int مع حذف عبارة return

  5. #5
    الصورة الرمزية The Samurai
    The Samurai غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2008
    العمر
    39
    المشاركات
    227

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة Pharm.D مشاهدة المشاركة
    هذا الكود فقط يعمل في وضع اختبار الاستراتيجيات Strategy Tester و لا يمكنه فتح صفقات حقيقية
    نعم..لكن عند استعماله علي أزواج الين لا يعمل بينما الأزواج الأخري يعمل

  6. #6
    الصورة الرمزية The Samurai
    The Samurai غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2008
    العمر
    39
    المشاركات
    227

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة سلمان_العتيبي مشاهدة المشاركة
    لو غيرت الدالة الى OnTick سيحسب عادي وهو اساسا مصمم فقط لحساب ارباح الصفقات المغلقة بالنقاط فقط في صفحة هيستوري . . ولا دخل له بالتداول سواء في التستر او الحقيقي او الديمو او ايا كان

    وتصميمه بالغ الذكاء . .

    صاحب الموضوع . . .غير OnTester الى OnTick . . . هل تستمر مشكلتك؟

    اا انحلت . . .يعني هناك خصائص خاصة بـ OnTester

    لا تنسى void بدل int مع حذف عبارة return
    يعطي خطأ. ..الهدف هو استخدامه في التستر واختيار custom ...كمتغير لتدريب الاكسبرت....يعمل علي بقيه الأزواج لكن عند اختيار أزواج الين لا يعمل

  7. #7
    تاريخ التسجيل
    Mar 2020
    الإقامة
    السعودية
    المشاركات
    8,531

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة The Samurai مشاهدة المشاركة
    يعطي خطأ. ..الهدف هو استخدامه في التستر واختيار custom ...كمتغير لتدريب الاكسبرت....يعمل علي بقيه الأزواج لكن عند اختيار أزواج الين لا يعمل
    يمكن لايوجد صفقات مغلقة على زوج الين الذي اخترته؟؟

    انت فاهم فكرة الاكسبيرت أخي؟

    اذا لا . .
    1) يحسب ارباح زوج محدد -- زوج التشارت
    ثم بعد ذلك يحسب السورتينو والشارب ريشيو . .

    عموما:
    غير دالة التستر الى دالة ontick

    انسخ والزق مكانها . .
    كود:
    void OnTick() {
       int trades=0, orders = OrdersHistoryTotal();
       double totalPips=0, pips[];
       ArrayResize(pips, orders);
    
       int    pipDigits = Digits & (~1);
       Print(pipDigits);
       double pip       = NormalizeDouble(1/MathPow(10, pipDigits), pipDigits);
    
       for (int i=0; i < orders; i++) {
          if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderSymbol()==Symbol() && OrderType()<=OP_SELL) {
             pips[trades] = (OrderType()-(OrderType()^1)) * (OrderOpenPrice()-OrderClosePrice()) / pip;
             totalPips += pips[trades];
             trades++;
          }
       }
       ArrayResize(pips, trades);
    
       double avgPips=0, sharpe=0, sortino=0;
       if (trades > 0) {
          avgPips = totalPips/trades;
          sharpe  = CalculateSharpeRatio(pips, totalPips);
          sortino = CalculateSortinoRatio(pips, totalPips);
       }
       Print("trades=", trades, "  totalPips=", DoubleToStr(totalPips, 1), "  avgPips=", DoubleToStr(avgPips, 2), "  sharpe="+ DoubleToStr(sharpe, 4), "  sortino=", DoubleToStr(sortino, 4));
    
    }


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