النتائج 46 إلى 60 من 61
- 31-10-2021, 11:26 PM #46
وللتوضيح: الكود السابق يفي بالغرض وهو يعادل كأنك سحبت الخبير على كل تشارتات الازواج ولكل الفريمات التسعة لكل زوج
ولكن مع توقع نشوء مشكلة لو طبقت على تشارت زوج يتوقف عليه التداول بعض ساعات اليوم.
- 31-10-2021, 11:30 PM #47بسبب NULL وتعني زوج التشارت الحالي - أنت أصبحت تحت رحمة زوج التشارت الحالي -- وتفترض انه اذا نشأ شمعة جديدة عليه سينشأ شمعة جديدة على بقية الازواج وهذا يخالف واقع الحال لبعض الازواج
ويترتب على هذا ايضا تغيير المصفوفة time من مصفوفة ذات بعد واحد الى مصفوفة ذات بعدين لإخصاء المشكلة نهائياً--فتكون هكذا بلغت الكمال ولا مزيد
فيصبح كل زوج بفريمه معتمد على نفسه وليس على زوج التشارت اللي طبقنا عليه--استقلالية 100% عن زوج التشارت الحالي!
- 31-10-2021, 11:36 PM #48
ولأن الأمر كذلك لوووووووب i المخصص للأزواج سيكون اجباريا قبل الجمل الشرطية لاكتشاف الكابح
صورة:
الملف المرفق 540406آخر تعديل بواسطة سلمان_العتيبي ، 31-10-2021 الساعة 11:41 PM
- 31-10-2021, 11:36 PM #49
آخر تعديل بواسطة سلمان_العتيبي ، 31-10-2021 الساعة 11:43 PM
- 31-10-2021, 11:45 PM #50
الكود كاملا بعد هذه التحسينات:
كود:string pairs[5]; ENUM_TIMEFRAMES FRAME[9]; datetime time[5][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++) { for(int i=0;i<ArraySize(pairs);i++) { if(time[i][k]!=iTime(pairs[i],FRAME[k],0)) { time[i][k]=iTime(pairs[i],FRAME[k],0); double rsi2=iRSI(pairs[i],FRAME[k],14,PRICE_CLOSE,2); double rsi1=iRSI(pairs[i],FRAME[k],14,PRICE_CLOSE,1); if(rsi2<70 && rsi1>70) { string comment_Buy=EnumToString(FRAME[k]); int tickBuy=OrderSend(pairs[i],OP_BUY,1.00,MarketInfo(pairs[i],MODE_ASK),3,0,0,comment_Buy,1234,0,clrBlue); } else if(rsi2>30 && rsi1<30) { string comment_Sell=EnumToString(FRAME[k]); int tickSell=OrderSend(pairs[i],OP_SELL,1.00,MarketInfo(pairs[i],MODE_BID),3,0,0,comment_Sell,1234,0,clrRed); } } } } }
- 31-10-2021, 11:46 PM #51وبكذا تحرر الكود كاملا من أي علاقة بالتشارت اللي تطبق عليه واصبح سحب الخبير فعلا على تشارت واحد كأنه سحبة على 45 تشارت -
- 01-11-2021, 03:09 AM #52
السلام عليكم
اخي الكريم حفظ قيمة time يجب ان يكون بعد فتح الصفقة فعليا وليس قبل، اي بعد دالة فتح الصفقة وتحقق الشرط tickBuy>0 ثم تصفيره بعد التنفيذ tickBuy=0
ايضا كما نعلم عند اعادة تشغيل الاكسبيرت او المنصة سيتم تصفير القيم المحفوظة بال time
فالافضل نستخدم شرط فوليوم الشمعة بالمصفوفتين او شرط عدد الصفقات المفتوحة (بدلالة الكومنت لحفظ الفريم) لنفس الشمعة على ان لا يتجاوز صفقة واحدة
وهكذا...آخر تعديل بواسطة kira-h ، 01-11-2021 الساعة 03:36 AM
- 01-11-2021, 10:42 AM #53
مرحبا اخي حسن
أولا احيي فيك عمق ردك-رد فلسفي عميق لإنسان مجرب وفاهم
اردنا اعلاه نموذجا مثاليا متكاملا لأهم اجزاء النظام الشامل لكل الفريمات وكل الأزواج
ولكن ما يخص الدوال التنفيذية ومشاكلها تحتها ربما عشرات المشاكل ولكنها من الامور المعلومة وتموضع المتغير time ومكانه الصحيح في البرنامج يعود لك كصاحب فكرة
وماذكرته انت يعتبر حل وايضا قد لا يكون حلا وسأبين هذا:
السنة الماضية ان كان لأحد علي فضل فهو أحد الاخوة من سوريا حيث اجبرني ومن ورا ضرسي ان اتعامل مع منصة اكسنس
هذه المنصة حقيقة ساهمت في في فهمي للكثير من المشاكل -- لأنها منصة سيئة اضطرتني ان افهم اكثر وادرك بعض الامور الخفية. سؤها سبب تحسني
من هذه المشاكل انه في قاعدة البيانات الخبير يفهم ان الزوج eurusd مثلا مسموح عليه التداول ولكن في ال real-time او الواقع فالحقيقة هي ان التداول معطل عليه. يعني trade is disabled
هذه المشكلة لاينفع معها فوليوم volume وماشابه
ودلة OrderSend اعلاه مبسطة لانها خارج مايبحث عنه الاخوة هنا--عالجنا الجزء الصعب وبسطناه للأفهام
وشخصيا لدوال OrderSend اصبحت افضل استخدامها تحت اداة while لعدد محدود من المحاولات منعا لتعليق البرنامج
تخيل جعلنا time تحت OrderSend والتريد عليه معطل ولكن الوسيط في قاعدة البيانات التي نستدعي منها التريدنق كوندشنز للزوج يقول مسموح!
مع كل تايمر جديد--كل 1 ثانية حسب الكود اعلاه سيدخل البرنامج داخل اللوب ويعيد نفس الدوامة
ونعيد مشاكل الدوال التنفيذية موضوع مختلف عن قلب هذا الموضوع
ولاتنسى ارتباط الدوال التنفيذية بالدوال الفنية -- موضوع متشابك ولكنه له خطوات واضحة وحسب رؤية المستخدم
انا شخصيا افضل النمط اعلاه--يعني اضحي ببعض الصفقات اذا كان السبب سوء المنصة
واذا كنت اريدها ساضيف تعشيقات ونقاط تشييك وفرز كثيرة في البرنامج-كما فعلت في خبير المليونير حيث يوجد كشاف للتباين بين ال realtime وبين قاعدة البيانات.آخر تعديل بواسطة سلمان_العتيبي ، 01-11-2021 الساعة 10:47 AM
- 01-11-2021, 10:49 AM #54ايضا للمناسبة السعيدة بطرد سفير لبنان ساجيب الاسئلة حتى نهاية تداولات الاثنين القادم
- 01-11-2021, 09:34 PM #55
الاخ الحبيب العتيبي : جزاك الله خيرا على هذا الشرح ... طبعا 100 % مفهوم بالنسبة لي و ذلك باختصار لان كل الاكسبرتات التي انفذها هي داشبوردات ، يتم تنفيذها على شارت واحد وال 28 زوج ( شارت ) مخفيين وعند فتح شارت لاي زوج بطريقة الية اقوم باضافة اي موشر و ما شابه اليه .. امس لما تكلمنا عن الفريمات لم يخطر ببالي سوى وضع الفريمات في مصفوفة مع الازواج حسب شرحك و تحليلك ...
تحرير الشارتات من سيادة الشارت اللي تسحب عليه اكسبرت يدل على ملكة قوية و تحليل دقيق ..
جهود مباركة اخي العتيبيآخر تعديل بواسطة اميرالمنتدى ، 01-11-2021 الساعة 09:37 PM
- 02-11-2021, 06:43 AM #56
بارك الله فيك اخي الكريم،
طيب لاحظ عند تفضيلك لتلك التضحية قد لا تفتح اغلب الصفقات، يعني تريد أن تتحقق حركة تكة جديدة (التنفيذية المسموحة بالسوق) بنفس الثانية الجديدة لكل لوب بكل عناصر المصفوفتين! ومع حفظ التوقيت مسبقا يعني عدم تكرار الشرط بنفس الشمعة! غالبا لن تفتح اي صفقة الا مصادفة حتى لو المنصة جيدة،
يوجد حل اخر بعدم العمل على مصفوفة الأزواج والاكتفاء فقط بالفريمات، يعني نضع اكسبيرت على كل زوج يعمل لحاله بمصفوفة الفريمات، حتى نستطيع العمل بنظام التكة عوض الزمن (فالتكة تعمل على كل الفريمات لنفس الزوج)، هكذا بنظري افضل وارحم من كل ما سبق
كذلك من المسلمات استخدام منصة جيدة ترحب بالاكسبيرتات، مع حاسوب جيد المواصفات،
الكود وتعليقاتك طبعا تعليمية احترافية زادتنا علما، جزاك الله عنا خيرا،
وبالتوفيق للجميع إن شاء اللهآخر تعديل بواسطة kira-h ، 02-11-2021 الساعة 07:00 AM
- 02-11-2021, 09:52 AM #57
تجربتي اخي تقول ان المنصة فتحت على كل الازواج التي تحققت شروطها بنسبة خطأ منصة 0%
ايضا نحن نفر من تطبثق الخبير على كل التشارتات--هذه هي البلادة التي نفر منها
واعيد هناك حلول كثيرة للدوال التنفيذية وارتباطها بتحديث الفريم من عدمه--ولكن نعيد كلها حلول داخلية لمن أحبها
ولكن استخدام الفوليوم او التايم -- سيكونون نفس الاداء لارتباطهم ببعض ولن يحلوا المشاكل الداخلية لو وجدت
- 02-11-2021, 10:01 AM #58
مثلا انت لو اصريت علي لحل المشاكل الداخلية والتي تكفل عدم تحديث الوقت حتى وضع امر جديد تحقق شرطه او اخبار الخبير انه لايمكن فعلا في ال realtime فالحل بكل بساطة:
1) اكتشاف الايرور رقم 133 او رقم 136 او رقم 148 وطبعا الايرور رقم 64 ورقم 65 ولا سادس لها.
ونحن هنا نتحدث عن الرن=تايم ايرورز وليس عن الكومبايليشن ايرورز--لاحظ
2) تعطيل ذلك الزوج حصرا
- 02-11-2021, 07:40 PM #59
- 02-11-2021, 09:40 PM #60
يفترض عدم مناقشة الامور البدائية التي نفر منها
هذه تعتبر انتكاسة
المشاكل الداخلية يجب ان تربط باكواد الاخطاء الثلاثة التي ذكرناها 133 و 136 و 148 وايضا معها العامة 64 و 65 --لمن يبحث عن أعلى جودة (تحديث و الخطأ رقم 132)
ولكن دالة volume او time نفس الشيء --- بالعكس ارى فوليوم عديمة الجدوى عند المقارنة والفوليوم عدد التكات ولادخل له بفوليوم الصفقة
اسفل حل نموذجي احترافي اعتمده مع OrrderSend: الرد القادمآخر تعديل بواسطة سلمان_العتيبي ، 02-11-2021 الساعة 09:49 PM