النتائج 76 إلى 90 من 101
الموضوع: Condor Scalper V3 للتجربة
- 14-09-2011, 06:21 PM #76
- 14-09-2011, 06:46 PM #77كود: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);
كود: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;
كما نعرف المتغيرات المنطقية تقبل أحد القيم إما القيمة صح true أوالقيمة خطأ false
يا أسود يا أبيض
كود:if (TimeCurrent() - g_datetime_188 <= timeSpeed) { RefreshRates()
الموجوده في الإعدادات الخارجية للأكسبيرت في هذه الحالة يعمل الأكسبيرت 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.... ألخ
نواصل لاحقا لو وجدنا تجاوب
- 14-09-2011, 08:58 PM #78
- 15-09-2011, 01:48 AM #79
شكرا أخي العزيز
- 15-09-2011, 09:47 AM #80
ما شاء الله عليك اخي Robo-coder
فعلا عندنا عباقرة في البرمجة والبعض منهم يتابعون بصمت مثل ما قال اخي AMamazing
اتمنى الاستمرار اخي واعذرني والاخوة لان لا نفقه في البرمجة الا الشي القليل
ومنكم نستفيد جزاك الله خير خير الجزاء بما قدمته من شرح وتفصيل للاكسبيرت
- 15-09-2011, 12:32 PM #81
تمام
- 15-09-2011, 02:28 PM #82
شكرا اخى الكريم على الشرح
بخصوص اختلاف النتائج فى الباك تست والديمو السبب لايوجد باك تست صحيح للاسكالبنج اغلب اكسبرتات الاسكالبنج لا تعطى نتائج مثل الباك تست
طرييقة عمل هذا الاكسبرت مثل ما شرح الاخوان هو اخذ صفقه شراء مثلا لو تحرك السعر دون تراجع الى الاعلى فى عدد الثوانى المحدده وهىtimeSpeed بمعنى ارتفاع السعر مثلا 5 او 4 نقاط مثل ما هو محدد فى عدد الثوانى 3 او 4 مثل ما هو محدد ثوانى دون تراجع يدخل شراء وهذا طبعا صعب تجد الدقه فى الباك تست
الاكسبرت يعتمد على الحركه السريعه لذلك اعتقد وقت صدور الاخبار ممكن يحقق نتائج جيده والله اعلم
- 15-09-2011, 03:10 PM #83نواصل مع الكود البرمجيكود: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) {
كود:[LEFT] if (StopLoss * gi_220 > stoplevel_4) { if (OrderSelect(g_ticket_156, SELECT_BY_TICKET, /LEFT]
كود:while (!IsTradeAllowed()) Sleep(500); RefreshRates();
كود:Print("ERROR ", ErrorDescription(GetLastError())); Sleep(1000); RefreshRates();
مثل الخطا المعروف رقم 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
- 15-09-2011, 03:14 PM #84
وووووووووووو متابعين بشده لنرى تكلملة القصه
الحلقه الرابعه هههههههه
- 15-09-2011, 03:24 PM #85
الأخوة الاعزاء
عذرا عن الاطالة خاصة لمن لا يفهم في البرمجة لكن أنا اردت ان يستفيد المبرمجون الجدد من جيل الشباب و ليكون الموضوع مرجع مفيد إن شاء الله و بالتفكيك شيئا فشيئا سوف نعرف خفايا الاستراتيجية و سبب اختلاف النتائج
لن أعطيكم سمكا قط و لكن سيكون السمك من نصيب من يتعلم صيده
- 16-09-2011, 07:39 PM #86
- 17-09-2011, 06:47 PM #87كود:} 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);
و سو نستعمل هذا لاحقا لكي نرسل الستوب و البوفيت و قيمة العقد بالشكل الدي يقبله البروكر
- 17-09-2011, 06:53 PM #88إختبار كتابي
مطلوب تحليل الكود الباقي يلا نريد نشاط
لا باس نحاول لنتعلم
كود: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("Ðèñóåì ëèíèþ stop_buy1 íà óðîâíå ", 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); }
- 17-09-2011, 07:29 PM #89
بتوفيق اخي ربو كودر ياريت تنظر الى الموضوع التالي :
طلب اخر على الخاص ايضا تم الرد عليه
https://forum.arabictrader.com/t119413-2.html
- 18-09-2011, 01:58 AM #90
وين المحاولات و المبرمجين ؟