صفحة 6 من 7 الأولىالأولى 1234567 الأخيرةالأخيرة
النتائج 76 إلى 90 من 101
  1. #76
    الصورة الرمزية amazing
    amazing غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2009
    العمر
    54
    المشاركات
    1,474

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة Robo-coder مشاهدة المشاركة
    شكرا أخي العزيز

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

    فاصل و نواصل تحليل الكود
    بارك الله فيك بانتظار المزيد من الابداعات

  2. #77
    الصورة الرمزية Robo-coder
    Robo-coder غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2010
    المشاركات
    338

    افتراضي

    كود:
    int stoplevel_4 = MarketInfo(Symbol(), MODE_STOPLEVEL); gi_172 = FALSE; if (g_count_176 < g_count_180) { if (TimeCurrent() - g_datetime_188 <= timeSpeed) { RefreshRates(); for (int li_0 = 1; li_0 <= 2; li_0++) { g_ticket_156 = OrderSend(Symbol(), OP_SELL, f0_1(), Bid, 10, 0, 0, "", Magic, 0, Red); if (g_ticket_156 > 0) { if (StopLoss * gi_220 > stoplevel_4) { if (OrderSelect(g_ticket_156, SELECT_BY_TICKET, MODE_TRADES)) { while (!IsTradeAllowed()) Sleep(500); RefreshRates(); g_price_128 = 0; if (StopLoss * gi_220 > stoplevel_4) g_price_128 = NormalizeDouble(Ask + StopLoss * Point * gi_220, Digits); Print(" Stop Loss : ", g_price_128); if (!(!OrderModify(OrderTicket(), OrderOpenPrice(), g_price_128, 0, 0, Red))) break; gi_172 = TRUE; } } } else { Print("ERROR ", ErrorDescription(GetLastError())); Sleep(1000); RefreshRates(); } } } } else { if (TimeCurrent() - g_datetime_184 <= timeSpeed) { RefreshRates(); for (li_0 = 1; li_0 <= 2; li_0++) { g_ticket_156 = OrderSend(Symbol(), OP_BUY, f0_1(), Ask, 10, 0, 0, "", Magic, 0, Green); if (g_ticket_156 > 0) { if (StopLoss * gi_220 > stoplevel_4) { if (OrderSelect(g_ticket_156, SELECT_BY_TICKET, MODE_TRADES)) { while (!IsTradeAllowed()) Sleep(500); RefreshRates(); g_price_128 = 0; if (StopLoss * gi_220 > stoplevel_4) g_price_128 = NormalizeDouble(Bid - StopLoss * Point * gi_220, Digits); if (!(!OrderModify(OrderTicket(), OrderOpenPrice(), g_price_128, 0, 0, Green))) break; gi_172 = TRUE; } } } else { Print("Error ", ErrorDescription(GetLastError())); Sleep(1000); RefreshRates(); } }
    سوف نحاول تحليل الكود اعلاه على التوالي


    كود:
     int stoplevel_4 = MarketInfo(Symbol(), MODE_STOPLEVEL);
    هنا وقع استدعاء معلومة من البروكر تحتوي على اقل قيمة ستوبلوز مسموح بها و وضعها في متغير حقيقي اسمه stoplevel_4 سوف نستعمل هذا المتغير لاحقا للتحقق من ان الستوب المضبوط في الاعدادات من قبل المستعمل لا يقل عن هذه القيمة المسموح بها

    كود:
    gi_172 = FALSE; if (g_count_176 < g_count_180) { if (TimeCurrent() - g_datetime_188 <= timeSpeed) { RefreshRates(); for (int li_0 = 1; li_0 <= 2; li_0++) { g_ticket_156 = OrderSend(Symbol(), OP_SELL, f0_1(), Bid, 10, 0, 0, "", Magic, 0, Red); if (g_ticket_156 > 0) { if (StopLoss * gi_220 > stoplevel_4) { if (OrderSelect(g_ticket_156, SELECT_BY_TICKET, MODE_TRADES)) { while (!IsTradeAllowed()) Sleep(500); RefreshRates(); g_price_128 = 0;
    هنا بدأ المبرمج بالتنصيص على متغير منطقي gi_172 و جعله خطا false
    كما نعرف المتغيرات المنطقية تقبل أحد القيم إما القيمة صح true أوالقيمة خطأ false
    يا أسود يا أبيض

    كود:
    if (TimeCurrent() - g_datetime_188 <= timeSpeed) {
      
           RefreshRates()
    هنا يراقب التوقيت و هو في الميتاتريدر توقيت البروكر (بالثواني) ويطرح منه قيمة زمنية g_datetime_188 فإذا وجدها مساوية أو أقل من قيمة TimeSpeed hgl
    الموجوده في الإعدادات الخارجية للأكسبيرت في هذه الحالة يعمل الأكسبيرت RefreshRates()
    و هو أمر بتنزيل المعلومات من جديد من السرفر و تحيينها
    و لن يواصل الأكسبيرت إلا إذا (TimeCurrent() - g_datetime_188 ) أكبر من القيمة timeSpeed

    التوقيت الحالي معروف و قيمة timeSpeed أخترناها نحن في الأعدادات الخارجية
    لم يبقى إلا معرفة القيمة g_datetime_188

    لو بحثنا عن هذا المتغير g_datetime_188 خلال البرنامج سنجد أنه إما يأخذ القيمة صفر

    أو مساوي ل TimeCurren (عدد الثواني التي مرت من منتصف الليل سنة 1970)
    g_datetime_188 = TimeCurrent();


    الأن عرفنا كيف نضبط الأعداد TIME SPEED لكي يعمل الأكسبيرت
    و الذي سوف يكون أكبر من 0 أي عدد حقيقي أكبرمن صفر مثل 0.1 1 1.1.... 2.... ألخ

    نواصل لاحقا لو وجدنا تجاوب

  3. #78
    الصورة الرمزية amazing
    amazing غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2009
    العمر
    54
    المشاركات
    1,474

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة Robo-coder مشاهدة المشاركة
    كود:
    int stoplevel_4 = MarketInfo(Symbol(), MODE_STOPLEVEL); gi_172 = FALSE; if (g_count_176 < g_count_180) { if (TimeCurrent() - g_datetime_188 <= timeSpeed) { RefreshRates(); for (int li_0 = 1; li_0 <= 2; li_0++) { g_ticket_156 = OrderSend(Symbol(), OP_SELL, f0_1(), Bid, 10, 0, 0, "", Magic, 0, Red); if (g_ticket_156 > 0) { if (StopLoss * gi_220 > stoplevel_4) { if (OrderSelect(g_ticket_156, SELECT_BY_TICKET, MODE_TRADES)) { while (!IsTradeAllowed()) Sleep(500); RefreshRates(); g_price_128 = 0; if (StopLoss * gi_220 > stoplevel_4) g_price_128 = NormalizeDouble(Ask + StopLoss * Point * gi_220, Digits); Print(" Stop Loss : ", g_price_128); if (!(!OrderModify(OrderTicket(), OrderOpenPrice(), g_price_128, 0, 0, Red))) break; gi_172 = TRUE; } } } else { Print("ERROR ", ErrorDescription(GetLastError())); Sleep(1000); RefreshRates(); } } } } else { if (TimeCurrent() - g_datetime_184 <= timeSpeed) { RefreshRates(); for (li_0 = 1; li_0 <= 2; li_0++) { g_ticket_156 = OrderSend(Symbol(), OP_BUY, f0_1(), Ask, 10, 0, 0, "", Magic, 0, Green); if (g_ticket_156 > 0) { if (StopLoss * gi_220 > stoplevel_4) { if (OrderSelect(g_ticket_156, SELECT_BY_TICKET, MODE_TRADES)) { while (!IsTradeAllowed()) Sleep(500); RefreshRates(); g_price_128 = 0; if (StopLoss * gi_220 > stoplevel_4) g_price_128 = NormalizeDouble(Bid - StopLoss * Point * gi_220, Digits); if (!(!OrderModify(OrderTicket(), OrderOpenPrice(), g_price_128, 0, 0, Green))) break; gi_172 = TRUE; } } } else { Print("Error ", ErrorDescription(GetLastError())); Sleep(1000); RefreshRates(); } }
    سوف نحاول تحليل الكود اعلاه على التوالي


    كود:
     int stoplevel_4 = MarketInfo(Symbol(), MODE_STOPLEVEL);
    هنا وقع استدعاء معلومة من البروكر تحتوي على اقل قيمة ستوبلوز مسموح بها و وضعها في متغير حقيقي اسمه stoplevel_4 سوف نستعمل هذا المتغير لاحقا للتحقق من ان الستوب المضبوط في الاعدادات من قبل المستعمل لا يقل عن هذه القيمة المسموح بها

    كود:
    gi_172 = FALSE; if (g_count_176 < g_count_180) { if (TimeCurrent() - g_datetime_188 <= timeSpeed) { RefreshRates(); for (int li_0 = 1; li_0 <= 2; li_0++) { g_ticket_156 = OrderSend(Symbol(), OP_SELL, f0_1(), Bid, 10, 0, 0, "", Magic, 0, Red); if (g_ticket_156 > 0) { if (StopLoss * gi_220 > stoplevel_4) { if (OrderSelect(g_ticket_156, SELECT_BY_TICKET, MODE_TRADES)) { while (!IsTradeAllowed()) Sleep(500); RefreshRates(); g_price_128 = 0;
    هنا بدأ المبرمج بالتنصيص على متغير منطقي gi_172 و جعله خطا false
    كما نعرف المتغيرات المنطقية تقبل أحد القيم إما القيمة صح true أوالقيمة خطأ false
    يا أسود يا أبيض

    كود:
    if (TimeCurrent() - g_datetime_188 <= timeSpeed) {
      
           RefreshRates()
    هنا يراقب التوقيت و هو في الميتاتريدر توقيت البروكر (بالثواني) ويطرح منه قيمة زمنية g_datetime_188 فإذا وجدها مساوية أو أقل من قيمة TimeSpeed hgl
    الموجوده في الإعدادات الخارجية للأكسبيرت في هذه الحالة يعمل الأكسبيرت RefreshRates()
    و هو أمر بتنزيل المعلومات من جديد من السرفر و تحيينها
    و لن يواصل الأكسبيرت إلا إذا (TimeCurrent() - g_datetime_188 ) أكبر من القيمة timeSpeed

    التوقيت الحالي معروف و قيمة timeSpeed أخترناها نحن في الأعدادات الخارجية
    لم يبقى إلا معرفة القيمة g_datetime_188

    لو بحثنا عن هذا المتغير g_datetime_188 خلال البرنامج سنجد أنه إما يأخذ القيمة صفر

    أو مساوي ل TimeCurren (عدد الثواني التي مرت من منتصف الليل سنة 1970)
    g_datetime_188 = TimeCurrent();


    الأن عرفنا كيف نضبط الأعداد TIME SPEED لكي يعمل الأكسبيرت
    و الذي سوف يكون أكبر من 0 أي عدد حقيقي أكبرمن صفر مثل 0.1 1 1.1.... 2.... ألخ

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

  4. #79
    الصورة الرمزية Robo-coder
    Robo-coder غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2010
    المشاركات
    338

    افتراضي

    شكرا أخي العزيز

  5. #80
    الصورة الرمزية spaidar
    spaidar غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Dec 2010
    المشاركات
    248

    09


    ما شاء الله عليك اخي Robo-coder

    فعلا عندنا عباقرة في البرمجة والبعض منهم يتابعون بصمت مثل ما قال اخي AMamazing

    اتمنى الاستمرار اخي واعذرني والاخوة لان لا نفقه في البرمجة الا الشي القليل

    ومنكم نستفيد جزاك الله خير خير الجزاء بما قدمته من شرح وتفصيل للاكسبيرت



  6. #81
    الصورة الرمزية zamalek
    zamalek متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Aug 2010
    الإقامة
    مصر
    المشاركات
    1,577

    افتراضي

    تمام
    توقيع العضو
    ما حدا ل حدا ..

  7. #82
    الصورة الرمزية uae forex
    uae forex غير متواجد حالياً موقوف
    تاريخ التسجيل
    Apr 2009
    الإقامة
    ALAIN
    المشاركات
    1,101

    افتراضي

    شكرا اخى الكريم على الشرح
    بخصوص اختلاف النتائج فى الباك تست والديمو السبب لايوجد باك تست صحيح للاسكالبنج اغلب اكسبرتات الاسكالبنج لا تعطى نتائج مثل الباك تست
    طرييقة عمل هذا الاكسبرت مثل ما شرح الاخوان هو اخذ صفقه شراء مثلا لو تحرك السعر دون تراجع الى الاعلى فى عدد الثوانى المحدده وهىtimeSpeed بمعنى ارتفاع السعر مثلا 5 او 4 نقاط مثل ما هو محدد فى عدد الثوانى 3 او 4 مثل ما هو محدد ثوانى دون تراجع يدخل شراء وهذا طبعا صعب تجد الدقه فى الباك تست
    الاكسبرت يعتمد على الحركه السريعه لذلك اعتقد وقت صدور الاخبار ممكن يحقق نتائج جيده والله اعلم

  8. #83
    الصورة الرمزية Robo-coder
    Robo-coder غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2010
    المشاركات
    338

    افتراضي

    نواصل مع الكود البرمجي
    كود:
    for (int li_0 = 1; li_0 <= 2; li_0++) { g_ticket_156 = OrderSend(Symbol(), OP_SELL, f0_1(), Bid, 10, 0, 0, "", Magic, 0, Red); if (g_ticket_156 > 0) { if (StopLoss * gi_220 > stoplevel_4) { if (OrderSelect(g_ticket_156, SELECT_BY_TICKET, MODE_TRADES)) { while (!IsTradeAllowed()) Sleep(500); RefreshRates(); g_price_128 = 0; if (StopLoss * gi_220 > stoplevel_4) g_price_128 = NormalizeDouble(Ask + StopLoss * Point * gi_220, Digits); Print(" Stop Loss : ", g_price_128); if (!(!OrderModify(OrderTicket(), OrderOpenPrice(), g_price_128, 0, 0, Red))) break; gi_172 = TRUE; } } } else { Print("ERROR ", ErrorDescription(GetLastError())); Sleep(1000); RefreshRates(); } } } } else { if (TimeCurrent() - g_datetime_184 <= timeSpeed) { RefreshRates(); for (li_0 = 1; li_0 <= 2; li_0++) { g_ticket_156 = OrderSend(Symbol(), OP_BUY, f0_1(), Ask, 10, 0, 0, "", Magic, 0, Green); if (g_ticket_156 > 0) { if (StopLoss * gi_220 > stoplevel_4) { if (OrderSelect(g_ticket_156, SELECT_BY_TICKET, MODE_TRADES)) { while (!IsTradeAllowed()) Sleep(500); RefreshRates(); g_price_128 = 0; if (StopLoss * gi_220 > stoplevel_4) g_price_128 = NormalizeDouble(Bid - StopLoss * Point * gi_220, Digits); if (!(!OrderModify(OrderTicket(), OrderOpenPrice(), g_price_128, 0, 0, Green))) break; gi_172 = TRUE; } } } else { Print("Error ", ErrorDescription(GetLastError())); Sleep(1000); RefreshRates(); } } } }
    يبدأ البرنامج بإحداث عداد
    كود:
    for (int li_0 = 1; li_0 <= 2; li_0++) {
    كود:
    g_ticket_156 = OrderSend(Symbol(), OP_SELL, f0_1(), Bid, 10, 0, 0, "", Magic, 0, Red); if (g_ticket_156 > 0) {
    هنا ان المتغير g_ticket_156 سوف يخصص لصفقات البيع

    كود:
    [LEFT]    if (StopLoss * gi_220 > stoplevel_4) {
                      if (OrderSelect(g_ticket_156, SELECT_BY_TICKET, 
    
    
    /LEFT]
    هنا سوف نتاكد من وجود صفقة بيع و أن وقف الخسارة أكبر مما يسمح به الوسيط



    كود:
    while (!IsTradeAllowed()) Sleep(500); RefreshRates();
    هنا للتاكد من أن خيارالمتاجرة متاح و ألا sleep 500 أي ينتظر الاكسبار 500 ثانية (نوم الهناء ) ليعيد التاكد هل فعل خيار المتاجرة ام لا

    كود:
    Print("ERROR ", ErrorDescription(GetLastError())); Sleep(1000); RefreshRates();
    [SIZE="5"]الكود الموالي سوف يكتب تنبيه على الشاشة يحمل رقم الخطا في صولرة حصول أي خطا
    مثل الخطا المعروف رقم 131 و الذي يفيد ان المارجن كول اللعين على الابواب no money[/

    SIZE]

    كود:
    Print("ERROR ", ErrorDescription(GetLastError())); Sleep(1000); RefreshRates();

    الجزء الثاني من الكود و الذي ياتي بعد else هو نسخة مطابقة للاصل للنصف الاول
    و لكن في هذه المرة سوف نهتم بصفقات الشراء كما اهتم الجزء السابق باخطاء صفقات البيع

    كود:
    else { if (TimeCurrent() - g_datetime_184 <= timeSpeed) { RefreshRates(); for (li_0 = 1; li_0 <= 2; li_0++) { g_ticket_156 = OrderSend(Symbol(), OP_BUY, f0_1(), Ask, 10, 0, 0, "", Magic, 0, Green); if (g_ticket_156 > 0) { if (StopLoss * gi_220 > stoplevel_4) { if (OrderSelect(g_ticket_156, SELECT_BY_TICKET, MODE_TRADES)) { while (!IsTradeAllowed()) Sleep(500); RefreshRates(); g_price_128 = 0; if (StopLoss * gi_220 > stoplevel_4) g_price_128 = NormalizeDouble(Bid - StopLoss * Point * gi_220, Digits); if (!(!OrderModify(OrderTicket(), OrderOpenPrice(), g_price_128, 0, 0, Green))) break; gi_172 = TRUE; } } } else { Print("Error ", ErrorDescription(GetLastError())); Sleep(1000); RefreshRates(); } } }
    نلاحظ أن الكود الذي حللناه اليوم يهتم بمراقبة الاخطاء الممكنة في صفقات البيع و الشراء


    آخر تعديل بواسطة Robo-coder ، 15-09-2011 الساعة 03:17 PM

  9. #84
    الصورة الرمزية amazing
    amazing غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2009
    العمر
    54
    المشاركات
    1,474

    افتراضي

    وووووووووووو متابعين بشده لنرى تكلملة القصه
    الحلقه الرابعه هههههههه

  10. #85
    الصورة الرمزية Robo-coder
    Robo-coder غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2010
    المشاركات
    338

    افتراضي

    الأخوة الاعزاء
    عذرا عن الاطالة خاصة لمن لا يفهم في البرمجة لكن أنا اردت ان يستفيد المبرمجون الجدد من جيل الشباب و ليكون الموضوع مرجع مفيد إن شاء الله و بالتفكيك شيئا فشيئا سوف نعرف خفايا الاستراتيجية و سبب اختلاف النتائج
    لن أعطيكم سمكا قط و لكن سيكون السمك من نصيب من يتعلم صيده

  11. #86
    الصورة الرمزية spaidar
    spaidar غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Dec 2010
    المشاركات
    248

    09

    اقتباس المشاركة الأصلية كتبت بواسطة Robo-coder مشاهدة المشاركة
    الأخوة الاعزاء
    عذرا عن الاطالة خاصة لمن لا يفهم في البرمجة لكن أنا اردت ان يستفيد المبرمجون الجدد من جيل الشباب و ليكون الموضوع مرجع مفيد إن شاء الله و بالتفكيك شيئا فشيئا سوف نعرف خفايا الاستراتيجية و سبب اختلاف النتائج
    لن أعطيكم سمكا قط و لكن سيكون السمك من نصيب من يتعلم صيده

    جزاك الله خير اخي Robo-coder

    ومنكم نستفيد من خبرتكم في البرمجة



  12. #87
    الصورة الرمزية Robo-coder
    Robo-coder غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2010
    المشاركات
    338

    افتراضي

    كود:
    } g_str2dbl_204 = 0; g_str2dbl_212 = 0; g_count_176 = 0; g_count_180 = 0; gi_192 = FALSE; gi_196 = FALSE; g_datetime_184 = 0; g_datetime_188 = 0;
    نواصل رحلتنا الشيقة مع الكود
    في ما سبق عينا في الذاكرة 8 متغيرات
    المتغيرات g_str2dbl سوف نضع فيها صفيفة حروف بعد تحويلها لرقم حقيقي
    هو يقصد بها string to double
    كما سبق و بينت لكم برنامج كسر الاكسبرتات يعطي متغيرات مبهمة و لكن بالخبرة ممكن نعرف نوعها
    المتغيرات التي تحتوي على كلمو count عادة نستعملها كعداد لعد الصفقات المفتوحة مثلا


    المتغيرات التي تكون قيمتها true أو false
    أما المتغيرات التي تحتوي على كلمة datetime
    فستخصص للقيم الزمنية و التوقيت .

    كود:
    int init() { if (Digits == 3 || Digits == 5) gi_220 = 10; else gi_220 = 1; return (0);
    هنا عندنا متغير عدد حقيقي gi_220 سوف ياخذ القيمة 10 في حال أن البروكر يستعمل 3 او 5 أرقم أما في صورة أن البروكر يستعمل 4 أرقام فستكون قيمة المتغير له_gi_220 تساوي 1
    و سو نستعمل هذا لاحقا لكي نرسل الستوب و البوفيت و قيمة العقد بالشكل الدي يقبله البروكر


  13. #88
    الصورة الرمزية Robo-coder
    Robo-coder غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2010
    المشاركات
    338

    افتراضي

    إختبار كتابي

    مطلوب تحليل الكود الباقي يلا نريد نشاط
    لا باس نحاول لنتعلم

    كود:
    int deinit() { return (0); } int start() { double str2dbl_8; double str2dbl_16; g_order_total_164 = OrdersTotal(); int pos_4 = -1; for (int pos_0 = 0; pos_0 < g_order_total_164; pos_0++) { OrderSelect(pos_0, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { pos_4 = pos_0; break; } } if (pos_4 < 0) { if (gd_224 > 0.0 || gd_232 > 0.0) { gd_224 = 0; gd_232 = 0; f0_5(); } gi_96 = 4; if (Digits < 4) gi_96 = 2; str2dbl_8 = StrToDouble(DoubleToStr(Ask, gi_96)); str2dbl_16 = StrToDouble(DoubleToStr(Bid, gi_96)); if (g_str2dbl_204 < str2dbl_8) { g_count_176++; g_str2dbl_204 = str2dbl_8; if (gi_192 == FALSE) { g_datetime_184 = TimeCurrent(); gi_192 = TRUE; } } else { g_str2dbl_204 = 0; g_count_176 = 0; gi_192 = FALSE; g_datetime_184 = 0; } if (g_str2dbl_212 > str2dbl_8) { g_count_180++; g_str2dbl_212 = str2dbl_8; if (gi_196 == FALSE) { g_datetime_188 = TimeCurrent(); gi_196 = TRUE; } } else { g_str2dbl_212 = 0; g_count_180 = 0; gi_196 = FALSE; g_datetime_188 = 0; } if (g_count_176 == Speed || g_count_180 == Speed) f0_0(); if (g_str2dbl_204 == 0.0) g_str2dbl_204 = str2dbl_8; if (g_str2dbl_212 == 0.0) g_str2dbl_212 = str2dbl_8; } else f0_2(); return (0); } double f0_1() { int digits_0 = MarketInfo(OrderSymbol(), MODE_DIGITS); double minlot_4 = MarketInfo(Symbol(), MODE_MINLOT); double maxlot_12 = MarketInfo(Symbol(), MODE_MAXLOT); double leverage_20 = AccountLeverage(); double lotsize_28 = MarketInfo(Symbol(), MODE_LOTSIZE); double ld_ret_36 = MathMin(maxlot_12, MathMax(minlot_4, Lots)); if (LotsOptimized && Risk > 0.0 && AccountFreeMargin() > Ask * ld_ret_36 * lotsize_28 / leverage_20) ld_ret_36 = NormalizeDouble(AccountFreeMargin() * Risk / lotsize_28, digits_0); else ld_ret_36 = minlot_4; ld_ret_36 = MathMax(minlot_4, MathMin(maxlot_12, NormalizeDouble(ld_ret_36 / minlot_4, 0) * minlot_4)); if (ld_ret_36 > MaxLot) ld_ret_36 = MaxLot; return (ld_ret_36); } void f0_2() { double bid_0; double ask_8; double order_open_price_16; double ld_24; double ld_32; int magic_40; double point_44 = MarketInfo(Symbol(), MODE_POINT); int li_52 = 1; int stoplevel_56 = MarketInfo(Symbol(), MODE_STOPLEVEL); if (TrSt * gi_220 <= stoplevel_56) li_52 = -1; for (int pos_60 = OrdersTotal() - 1; pos_60 >= 0; pos_60--) { if (OrderSelect(pos_60, SELECT_BY_POS, MODE_TRADES) == FALSE) break; if (OrderSymbol() == Symbol()) { magic_40 = OrderMagicNumber(); if (magic_40 == Magic) { if (OrderType() == OP_BUY) { if (StopLoss * gi_220 <= stoplevel_56 || gi_172 == TRUE) { if (OrderStopLoss() == 0.0) { if (gd_224 == 0.0) { gd_224 = OrderOpenPrice() - StopLoss * gi_220 * point_44; Print("&#208;è&#241;&#243;&#229;&#236; ëè&#237;è&#254; stop_buy1 &#237;à &#243;&#240;îâ&#237;&#229; ", gd_224); f0_3(gd_224, Green); } } if (OrderOpenPrice() - Ask >= StopLoss * gi_220 * point_44) OrderClose(OrderTicket(), OrderLots(), Bid, 5 * gi_220, Blue); } if (li_52 == -1) { order_open_price_16 = OrderOpenPrice(); while (!IsTradeAllowed()) Sleep(500); RefreshRates(); bid_0 = Bid; if (gd_224 == 0.0) { if (bid_0 - TrSt * gi_220 * point_44 > order_open_price_16) gd_224 = bid_0 - TrSt * gi_220 * point_44; Print("Virtual Stop Buy is ", gd_224); f0_3(gd_224, Green); } if (gd_224 > 0.0) { if (bid_0 < gd_224) { if (OrderClose(OrderTicket(), OrderLots(), Bid, 5 * gi_220, Blue)) { f0_5(); return; } } if (bid_0 - TrSt * gi_220 * point_44 > order_open_price_16 && bid_0 - TrSt * gi_220 * point_44 > gd_224) { gd_224 = bid_0 - TrSt * gi_220 * point_44; f0_3(gd_224, Green); } } } if (li_52 == 1) { order_open_price_16 = OrderOpenPrice(); ld_24 = OrderStopLoss(); ld_32 = ld_24; while (!IsTradeAllowed()) Sleep(500); RefreshRates(); bid_0 = Bid; if (bid_0 - TrSt * gi_220 * point_44 > order_open_price_16) ld_32 = bid_0 - TrSt * gi_220 * point_44; if (ld_32 > ld_24 && ld_32 > order_open_price_16 && bid_0 - ld_32 > stoplevel_56 * point_44) { if (!OrderModify(OrderTicket(), order_open_price_16, NormalizeDouble(ld_32, Digits), OrderTakeProfit(), 0)) Print("ERROR : ", GetLastError()); else { gd_224 = 0; gd_232 = 0; f0_5(); } } } } if (OrderType() == OP_SELL) { if (StopLoss * gi_220 <= stoplevel_56 || gi_172 == TRUE) { if (OrderStopLoss() == 0.0) { if (gd_232 == 0.0) { gd_232 = OrderOpenPrice() + StopLoss * gi_220 * point_44; Print("Virtual Stop Sell ", gd_232); f0_4(gd_232, Red); } } if (Bid - OrderOpenPrice() >= StopLoss * gi_220 * point_44) OrderClose(OrderTicket(), OrderLots(), Ask, 5 * gi_220, Red); } if (li_52 == -1) { order_open_price_16 = OrderOpenPrice(); while (!IsTradeAllowed()) Sleep(500); RefreshRates(); ask_8 = Ask; if (gd_232 == 0.0) { if (order_open_price_16 - ask_8 > TrSt * gi_220 * point_44) gd_232 = order_open_price_16 + TrSt * gi_220 * point_44; Print("Virtual Stop Sell is ", gd_232); f0_4(gd_232, Red); } if (gd_232 > 0.0) { if (ask_8 > gd_232) { if (OrderClose(OrderTicket(), OrderLots(), Ask, 5 * gi_220, Blue)) { f0_5(); return; } } if (order_open_price_16 - ask_8 > TrSt * gi_220 * point_44 && ask_8 + TrSt * gi_220 * point_44 < gd_232) { gd_232 = ask_8 + TrSt * gi_220 * point_44; f0_4(gd_232, Red); } } } if (li_52 == 1) { order_open_price_16 = OrderOpenPrice(); ld_24 = OrderStopLoss(); ld_32 = ld_24; while (!IsTradeAllowed()) Sleep(500); RefreshRates(); ask_8 = Ask; if (order_open_price_16 - ask_8 > TrSt * gi_220 * point_44 && ld_24 > ask_8 + TrSt * gi_220 * point_44 || ld_24 == 0.0) ld_32 = ask_8 + TrSt * gi_220 * point_44; if (ld_32 < ld_24 || ld_24 == 0.0 && ld_32 < order_open_price_16 && ld_32 - ask_8 > stoplevel_56 * point_44) { if (!OrderModify(OrderTicket(), order_open_price_16, NormalizeDouble(ld_32, Digits), OrderTakeProfit(), 0)) { Print("Another Error : ", GetLastError()); continue; } gd_224 = 0; gd_232 = 0; f0_5(); } } } } } } } void f0_3(double a_price_0, color a_color_8) { if (ObjectFind(g_name_248) != -1) ObjectDelete(g_name_248); g_bool_240 = ObjectCreate(g_name_248, OBJ_HLINE, 0, 0, a_price_0); ObjectSet(g_name_248, OBJPROP_COLOR, a_color_8); } void f0_4(double a_price_0, color a_color_8) { if (ObjectFind(g_name_256) != -1) ObjectDelete(g_name_256); g_bool_244 = ObjectCreate(g_name_256, OBJ_HLINE, 0, 0, a_price_0); ObjectSet(g_name_256, OBJPROP_COLOR, a_color_8); } void f0_5() { if (ObjectFind(g_name_248) != -1) ObjectDelete(g_name_248); if (ObjectFind(g_name_256) != -1) ObjectDelete(g_name_256); }

  14. #89
    الصورة الرمزية amazing
    amazing غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2009
    العمر
    54
    المشاركات
    1,474

    افتراضي

    بتوفيق اخي ربو كودر ياريت تنظر الى الموضوع التالي :
    طلب اخر على الخاص ايضا تم الرد عليه
    https://forum.arabictrader.com/t119413-2.html

  15. #90
    الصورة الرمزية Robo-coder
    Robo-coder غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2010
    المشاركات
    338

    افتراضي

    وين المحاولات و المبرمجين ؟

صفحة 6 من 7 الأولىالأولى 1234567 الأخيرةالأخيرة

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