النتائج 16 إلى 30 من 61
- 28-10-2021, 02:11 AM #16
- 29-10-2021, 11:16 AM #17
هيكل برنامج لكل الفريمات لكل الازواج
تعليمي
للتبسيط:
كل الازواج نعني بها الازواج التي فرضتها انت من قلب البرنامج
نعرف مصفوفة أزواج باسم pairs
سنفترض كل الازواج الازواج الخمسة التالية:
chfjpy
gbpchf
euraud
gbpusd
audcad
-
نجعل المصفوفة مقاس 5 --- خمسة ازواج
اسم المصفوفة pairs
صورة الجزء 1 من الكود:
الصورة أعلاه هي نفسها الكود أسفل:
كود:int OnInit() { EventSetTimer(1); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { EventKillTimer(); } void OnTimer() { ////////////////////////STEP 01////////////// string pairs[5]; pairs[0]="CHFJPY" pairs[1]="GBPCHF" pairs[2]="EURAUD" pairs[3]="GBPUSD" pairs[4]="AUDCAD" }
- 29-10-2021, 11:19 AM #18
- 29-10-2021, 11:26 AM #19
كود الفريمات-فقط تعريف مصفوفة متغيرة وازجائها 9 قيم--القيم الشهيرة للفريمات التسعة الشهيرة
صورة ياا مشرف:
الملف المرفق 540325
كود:////////////////////////STEP 02////////////// ENUM_TIMEFRAMES FRAME[9]; FRAME[0]=PERIOD_M1; FRAME[1]=PERIOD_M5; FRAME[2]=PERIOD_M15; FRAME[3]=PERIOD_M30; FRAME[4]=PERIOD_H1; FRAME[5]=PERIOD_H4; FRAME[6]=PERIOD_D1; FRAME[7]=PERIOD_W1; FRAME[8]=PERIOD_MN1;
آخر تعديل بواسطة alskndry ، 29-10-2021 الساعة 03:02 PM
- 29-10-2021, 11:28 AM #20
3) كابح تكرار الأوامر
4) اللوبات --لوب داخل لوب--لوب الازواج داخل لوب الفريمات او لوب الفريمات داخل لوب الازواج
5) الفكرة الفنية للدخول -داخل الكابح
6) الفكرة الفنية للخروج--خارج أو داخل الكابح الأمر سيان--سنجعلها داخل طلبا لخفة البرنامج
يعني مايكون ثقيل لأن الخارج كل تكة او كل ثانية يصير فيه بروسس!!
- 29-10-2021, 11:41 AM #21
3) الكابح:
يجب ان يحيط الكابح بكل دالة ONTIMER -- يعني كل الاسطر البرمجية الفعالة تكون بين قوسي الكابح
وقيمه الاولية لابد تعرف في دالة Oninit
ايضا التعريفات السابقة للازواج والفريمات مكانها الطبيعي دالة OnInit
سيتم تعريف متغير باسم time ومقاسه 9 ونوعه طبعا datetime وازجاء القيمة الابتدائية 0 لكل العناصر التسعة.
- 29-10-2021, 11:44 AM #22
- 29-10-2021, 11:50 AM #23
فكرة الكابح: لكل فريم خذ فقط اول تكة او اول ثانية مع نشوء شمعة جديدة لكل فريم
مثلا فريم الساعة كل 60 دقيقة سيدخل البرنامج اللوب مرة واحدة فقط في اول ثانية من تلك الساعة لكل الزواج
وهكذا لبقية الفريمات
الكابح برمجيا عبارة عن دالة شرطية تقارن وقت بدء الشمعة الحالية بوقت بدء الشمعة القادمة
سيشعر البرنامج ان هناك شمعة جديدة اذا تغير وقت بدء الشمعة
ركز على كلمة بدء
- 29-10-2021, 12:02 PM #24
هكذا يصمم ال suppresor او الكابح وميزته يكبح تكرار الاوامر
تخيل تدخل على اساس rsi تجاوز 70 على فريم الدقيقة---الدقيقة 60 ثانية ان سيضع 60 امر---امر كل ثانية!! مع الكابح فقط امر واحد مع بدء الشمعة يعني مع اول ثانية للدقيقة:
صورة:
الملف المرفق 540327
كود الكابح:
كود:for(int k=0;k<ArraySize(FRAME);k++) { if(time[k]!=iTime(NULL,FRAME[k],0)) { time[k]=iTime(NULL,FRAME[k],0); } }
آخر تعديل بواسطة alskndry ، 29-10-2021 الساعة 01:07 PM
- 29-10-2021, 03:00 PM #25
قبل ان تكمل لابد ان تتأكد ان الكابح يعمل بشكل صحيح
فضل طريقة للتأكد استخدام الدالة Print داخل الكابح
نريد طباعة الفريم نصا في جورنا الاكسبيرت
لاحظ في الصورة---الوقت, كل دقيقة يطبع PERIOD_M1
وكل خمس دقائق يطبع PERIOD_M5
وكل 15 دقيقة سيطبع PERIOD_M15
وكل يوم سيطبع الساعة 00:000 PERIOD_D1---- يعني دخل اللوب مرة واحدة مع اغلاق اليوم
وهكذا
- 29-10-2021, 03:01 PM #26
جملة الطباعة اذا تأكدت من صواب كل شيء احذفها لاحقا من الكود
مع جملة الطباعة هذه سيكون كامل الشروط للدخول والخروج مع دوالها التنفيذية لكل ازواجنا الخمسة وكل الفريمات التسعة
بعد الانتهاء من كل شيء ممكن تضيف بعض الجماليات مثل خيار الغاء بعض الفريمات مع خيار اعادة تفعيلها واشياء اخرى
- 29-10-2021, 03:03 PM #27
for في الكود السابق هو اللوب الاول - لوب الفريمات
اللووووووب الثاني سيكون لووووب الازواج--سيفر 5 مرات من خلال for الفرارة
سيكون داخل لوووب الفريمات كوضع طبيعي
حتى الان كودنا هو:
كود:string pairs[5]; ENUM_TIMEFRAMES FRAME[9]; datetime time[9]; int OnInit() { EventSetTimer(1); ////////////////////////STEP 01////////////// pairs[0]="CHFJPY"; pairs[1]="GBPCHF"; pairs[2]="EURAUD"; pairs[3]="GBPUSD"; pairs[4]="AUDCAD"; ////////////////////////STEP 02////////////// FRAME[0]=PERIOD_M1; FRAME[1]=PERIOD_M5; FRAME[2]=PERIOD_M15; FRAME[3]=PERIOD_M30; FRAME[4]=PERIOD_H1; FRAME[5]=PERIOD_H4; FRAME[6]=PERIOD_D1; FRAME[7]=PERIOD_W1; FRAME[8]=PERIOD_MN1; return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { EventKillTimer(); } void OnTimer() { for(int k=0;k<ArraySize(FRAME);k++) { if(time[k]!=iTime(NULL,FRAME[k],0)) { time[k]=iTime(NULL,FRAME[k],0); Print(EnumToString(FRAME[k])); } } }
- 29-10-2021, 03:35 PM #28
- 29-10-2021, 03:37 PM #29
المثال او الفكرة الفنية: مؤشر RSI
نريد من الخبير لكل أزواجنا وكل الفريمات التسعة ان يدخل امر بيع او شراء حسب تقاطعات المؤشر مع 30 او 70
اذا قطع 70 للاعلى بيع
اذا قطع 30 للاسفل شراء
او ممكن تسوي العكس--يعتمد عليك
- 29-10-2021, 03:37 PM #30