النتائج 1 إلى 4 من 4
- 30-01-2025, 06:24 PM #1
ارجو من الاساتذة المبرمجين القاء نظرة على هذا الكود
السلام عليكم ورحمة الله
اساتذتنا المبرمجين الكرام
قمت بمحاولة لبرمجة هذا الاكسبيرت
ارجو القاء نظرة على الكود
لانه لايعمل للاسف
فكرة الاكسبيرت
انه عند بداية التشغيل يقوم برسم 3 مستويات على الشارت
مستوى رئيسي L1
مستوى فوقه L2
مستوى اسفه L3
يتم تحديد سعر المستوى الرئيسي و المسافة بين الخطوط بادخالها في بداية عمل الاكسبيرت
المهم
المفروض اذا لمس السعر المستوى اللي فوق
يقوم بسحب المستويات الثلاثة الى اعلى
وعند لمس السعر المستوى اللي في الاسفل
يقوم بسحب المستويات الثلاثة الى اسفل
وهكذا
الفكرة بسيطة
مرفق صورة تشرح الفكرة
والكود الذي حاولت كتابته دون جدوى
كرما القاء نظرة عليه
هل الدالة
OnTick()
لاتقوم بتحديث قيم المستويات الثلاث ؟؟
كود://+------------------------------------------------------------------+ //| levelsEA.mq4 | //| Copyright 2024, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2024, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #property strict //--- input parameters extern double trigger; // starting level extern double spacing ; // number of points between levels //--- global variables string L1name = " Trigger level"; string L2name = " level above"; string L3name = " level below"; //calculations double distance = spacing / 100000; // for EURUSD 5 digits plateform double L1 = trigger; double L2 = L1 + distance; double L3 = L1 - distance; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //draw lines //--- create a horizontal line L1 ObjectCreate(0,L1name,OBJ_HLINE,0,0,L1); //--- set line color ObjectSetInteger(0,L1name,OBJPROP_COLOR,clrWhite); //--- set line display style ObjectSetInteger(0,L1name,OBJPROP_STYLE,STYLE_DASH); //--- set line width ObjectSetInteger(0,L1name,OBJPROP_WIDTH,1); //--- create a horizontal line L2 ObjectCreate(0,L2name,OBJ_HLINE,0,0,L2); //--- set line color ObjectSetInteger(0,L2name,OBJPROP_COLOR,clrWhite); //--- set line display style ObjectSetInteger(0,L2name,OBJPROP_STYLE,STYLE_DASH); //--- set line width ObjectSetInteger(0,L2name,OBJPROP_WIDTH,1); //--- create a horizontal line L3 ObjectCreate(0,L3name,OBJ_HLINE,0,0,L3); //--- set line color ObjectSetInteger(0,L3name,OBJPROP_COLOR,clrWhite); //--- set line display style ObjectSetInteger(0,L3name,OBJPROP_STYLE,STYLE_DASH); //--- set line width ObjectSetInteger(0,L3name,OBJPROP_WIDTH,1); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- delete a horizontal line ObjectDelete(0,L1name); ObjectDelete(0,L2name); ObjectDelete(0,L3name); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //------------------------------------------------ // Check if the price reached level above if(Bid == L2) { // change levels to above // calculations L1 = L2; L2 = L1 + distance; L3 = L1 - distance; // move levels on chart ObjectMove(0,L1name,0,0,L1); // move L1 ObjectMove(0,L2name,0,0,L2); // move L2 ObjectMove(0,L3name,0,0,L3); // move L3 } //------------------------------------------------- // Check if the price reached level below if(Bid == L3) { // change levels to below // move levels on chart L1 = L3; L2 = L1 + distance; L3 = L1 - distance; // move levels on chart ObjectMove(0,L1name,0,0,L1); // move L1 ObjectMove(0,L2name,0,0,L2); // move L2 ObjectMove(0,L3name,0,0,L3); // move L3 } } //+------------------------------------------------------------------+
- 09-02-2025, 01:12 PM #2
وجدت الحل في الكود
بدلت ==
>=
<=
لانه السعر احيانا يتحرك بقوة
ويصير SLIPPAGE
وانحلت مشكلة الكود
- 09-02-2025, 02:07 PM #3
- 09-02-2025, 06:43 PM #4
الأكثر زيارة
رد مع اقتباس