النتائج 1 إلى 15 من 16
الموضوع: ما هو الحل ؟
- 20-03-2020, 05:00 PM #1
ما هو الحل ؟
السلام عليكم
بعض المؤشرات عندما أضعها على الميتاتريدر يصبح الميتاتريدر ثقيلا جدا و تنشل حركته تماما
ما الحل مع هذه المشكلة ؟
مع جزيل الشكر لكم
- 21-03-2020, 03:35 PM #2
مجرد سؤال عادي لم يجيب عليه أحد حتى الآن !
هذا القسم ضعيف جدا في التفاعل و بحاجة إلى إعادة نظر من قبل الإدارة لأنه من المفترض أن يكون أكثر أهمية بمراحل من قسم الطرق اليدوية عديمة الجدوى !
- 21-03-2020, 04:48 PM #3
تشيل المؤشر اخي من التشارت
لانه واضح انه السبب تبعا لسوء برمجته
الحل: شف اقرب سطل بجانبك وارم المؤشر فيه.
- 21-03-2020, 05:05 PM #4
- 21-03-2020, 05:54 PM #5
بعض المشاكل تحصل عندما يكون المؤشر مربوط بمؤشر اخر و لا يكون ضمن المؤشرات فيحصل بطء
- 21-03-2020, 06:38 PM #6
يعتمد اخي على كيفية برمجة المؤشر و يمكن مبرمج بشكل سيء يجعله بطيئا رغم انه بامكانك ان تجعله مثل الريشة, وبالتالي المشكلة برمجية
صدقني لن يوجد اعقد من مؤشرات المنصة الاصلية نفسها ومع ذلك مثل الريشة
مثال: تريد رسم متوسط 2 يوم
وبالتالي أي شيء تم رسمه سابقا للشمعوع السابقة لاينبغي ا نيعود له ابلرنامج مع كل تكة جديدة بل يركز على اخر شمعتين فيصبح البرنامج مثل الريشة
ولكن تصور مع كل تكة يعود لكل ال 1000 شمعة المتاحة فيعيد رسم المرسوم أساسا
هنا قلصت السرعة بمقدار 1000 ضعف.
لانك في نفس التكة أجريت عمليات 1000 مرة وكنت قد اجريتها في التكة السابقة!! وكان يلزمك فقط 1 عملية
هذا قد يكون سبب
كلها تعتمد على تصميم المؤشر--كيف تمت برمجته؟
اذا المصدر للكود عندك مفتوح--ممكن الشباب يكتشفون المشكلة بسهولة فيعيدونه ولكن بسرعة جنونية
- 21-03-2020, 08:10 PM #7
- 21-03-2020, 08:51 PM #8
السورس كود mq4 وليس المكمبل ex4
- 21-03-2020, 09:25 PM #9
طيب خلينا من هذا المؤشر و دعني أستغل وجودك و أسألك إن كان بإمكانك برمجة اكسبيرت احترافي يعمل بنظام الأربيتراج
و أرجو منك الإطلاع على هذا الموضوع
https://forum.arabictrader.com/t252032.html
- 22-03-2020, 07:58 PM #10
في الكود التالي هناك مشكل
لا أعرف لماذا count يأخذ القيمة -1 ثم ++ يمر للقيمة 1 و في الأخير يأخذ القيمى -2 مع ان الشرط for لا يقبل القيم السلبية
كود:[struct prices { string time; string bid; string ask; }; prices arr[]; int count=-1; void OnTick() { count++; ArrayResize(arr,count+1); arr[count].time=TimeToString(GetTickCount()/1000,TIME_MINUTES|TIME_SECONDS)+"."+formatMilliSecond(MathMod(GetTickCount(),1000)); arr[count].bid=DoubleToString(SymbolInfoDouble(Symbol(),SYMBOL_BID),SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)); arr[count].ask=DoubleToString(SymbolInfoDouble(Symbol(),SYMBOL_ASK),SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)); int filehandle=FileOpen("myTicks.csv",FILE_WRITE|FILE_CSV,";"); Print(count+"-----"+GetTickCount()+" "+filehandle); if(filehandle!=INVALID_HANDLE) { for(int i=count-1;i>=0;i--) FileWrite(filehandle,i,arr[i].time,Symbol(), EnumToString(ENUM_TIMEFRAMES(_Period)),arr[i].bid,arr[i].ask); FileClose(filehandle); } } string formatMilliSecond(int t) { string str=t; if(t<10) str="00"+t; else if(t<100) str="0"+t; return str; } ][/LEFT]
كود:void OnStart() { //--- print the path to the file we are going to use PrintFormat("Working %s\\Files\\ folder",TerminalInfoString(TERMINAL_DATA_PATH)); //--- reset the error value ResetLastError(); //--- open the file for reading (if the file does not exist, the error will occur) int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_TXT|InpEncodingType); if(file_handle!=INVALID_HANDLE) { //--- print the file contents while(!FileIsEnding(file_handle)) FileWrite(filehandle,i,arr[i].time,Symbol(), EnumToString(ENUM_TIMEFRAMES(_Period)),arr[i].bid,arr[i].ask); //--- close the file FileClose(file_handle); } else PrintFormat("Error, code = %d",GetLastError()); }
- 22-03-2020, 08:59 PM #11
اذا الرد موجه لي اخي
اعتقد تمكن احد الاخوان من حلها
مايخص count=-1 في البداية
لانه هناك count++ وبالتالي اول نتيجة لها هي 0 -- الاندكس لأول عنصر في المصفوفة--من اذكى طرق البرمجة
هناك انك تجعلها في البداية 0
ولكن count بعد ذلك يجب ان تكون في نهاية الكود وليس اوله وهو امر لا احبه
=====
تحديث
كود:for(int i=count-1;i>=0;i--)
- 22-03-2020, 09:03 PM #12
- 22-03-2020, 11:12 PM #13
ممكن أبرمج لك الأربيتراج و لاأعتبره مخالف للدين بل هو شراء من الأقل سعر كل واحد .
- 24-03-2020, 02:55 PM #14
- 26-03-2020, 12:55 AM #15