النتائج 16 إلى 30 من 524
الموضوع: تصميم "عظم باكتسر فوري"
- 02-07-2017, 03:45 PM #16
((2)) ثانيا) خاصية تحديد الازواج التي تريد تطبيق الباكتستر الفوري عليها برمجياً
مجرد ان نتحدث عن التعامل مع اشياء على التشارت من خلال الضغط بالماوس, أول مايقفز لأذهاننا هو أهمية استخدام الدالة OnChartEvent
حتى الآن: مر علينا دالة OnInit ودالة OnTimer -- وكلها ضرورية جدا, ومثلها في اضلرورة دالة OnChartEvent
انظر للصورة:
هذه الدالة نصنعها منذ البدء عند انشاء خبير جديد,
آخر تعديل بواسطة فيلسوف البادية ، 02-07-2017 الساعة 03:50 PM
- 02-07-2017, 03:49 PM #17
وكما ترى يوجد فيها 4 متغيرات وهي:
id من نوع int يعني عدد صحيح
lparam من نوع long يعني قيمتها عدد صحيح طويل
dparam من نوع double يعني قيمتها عدد عشري
sparam من نوع string يعني قيمتها "نص"
- 02-07-2017, 03:55 PM #18
أول متغير هو id
OnChartEvent دالة تتألف من 4 متغيرات كما ذكرنا,
أول متغير هو id وقلنا أنه من نوع int وهي اختصار integer وتعني عدد صحيح,
فأنت لديك 12 ولدا, لهم اسماء وهي: محمد و وليد وخالد الخ, او بالإمكان تقول رقم 1 وتعني محمد ورقم 2 وتعني وليد, ورقم وتعني خالد الخ,
كم ابناء هذه الدالة في لغة mql4 ؟؟
ج: لها 12 من الابناء, مرقمين من 0 الى 11 ---- 0 و1 و 2 و 3 و 4 و 5 و 6 و 7 و 8 و 9 و 10 و 11
فبإمكانك استخدام اسم الابن او استخدام رقم الابن برمجيا, فالأمر سيان.
في الصورة أسفل ابناء او توابع هذه الدالة OnChartEvent الـ 12:
وكل تابع له وظيفة محددة, وقد تفهم انت شيئا من الوظيفة الخاصة بكل دالة بمجرد قراءة الاسم
مثلا التابع الثاني CHARTEVENT_MOUSE_MOVE ربما من كلمة ماوس تفهم ان لها علاقة بحركة الماوس على التشارت
وربما بشوية ذكاء منك وقبل أي شرح تميز بين
CHARTEVENT_CLICK
و
CHARTEVENT_OBJECT_CLICK
قد تفهم ان الاولى الضغط على اي مكان في التشارت
بينما الثانية خاصة بالضغط على شيء يوجد على التشارت.
object = شيء
إذن المتغير id يقبل 12 قيمة مختلفة, انظر للصورة في الرد السابق وكل قيمة لها غاية محددة,
تخيل رسمت مربع على التشارت--إذن "انا رسمت شيء"
هذا الشيء سيكون وظيفته لو ضغطت عليه هو "اغلاق الصفقات المفتوحة على اليورو دولار" مثلاً,
أنت حددت شيء وأنت كمبرمج ومتداول حددت هدف هذا الشيء, وهذا الهدف يتحقق بحاجة اسمها "الضغط على الشيء" وبالانجليزي "OBJECT_CLICK"
إذن استخدم الابن CHARTEVENT_OBJECT_CLICK
فانت برمجيا رسمت شيء وجعلت هدفه برمجيا اغلاق اي صفقة مفتوحة على اليورو دولار, وأنه لن يغلق هذه الصفقات الا اذا ضغطت على هذا الشيء الذي هو شكل مربع مثلاًَ.
لغة انجليزية:
click ; يعني "اضغط على"آخر تعديل بواسطة فيلسوف البادية ، 02-07-2017 الساعة 03:59 PM
- 02-07-2017, 04:01 PM #19
ثاني متغير هو lparam وهو خاص بقيمة س على محور السينات--يعني قيمة الزمن
وثالث متغير هو: dparam وهو خاص بقيمة ص على محور الصادات, يعني قيمة السعر
فكل ابن من الابناء 12 اعلاه اذا لزم الأمر معه قيمتين lparam و dparam
وبعض التوابع ال 12 لايلزم, حيث لاتحتاج هذه القيم
فأنت اذا ضغطت بالماوس على التشارت او على شيء محدد على التشارت, فإنه سيعطيك قيمتين قيمة السعر وقيمة الزمن في تلك النقطة,
يعني قيمة x و قيمة y --- الاحادثيات للزوج المرتب (س,ص)
- 02-07-2017, 04:07 PM #20
sparam
ورابع متغير هو: sparam وهو خاص باسم الشيء الذي ضغطت عليه اذا كان الابن يتعامل مع الاشياء او قد يكون الماسك لحركة الماوس, حسب التابع يكون معناه.
هذا المتغير sparam تحديدا هو المتغير الأهم الذي سنستخدمه كثير في الباكتستر الفوري, مع المتغير الأول بقيمة ObjectClick
فنحن فقط سنستخدم واحدا فقط من هذه ل 12 تابع, وهو CHARTEVENT_OBJECT_CLICK
وقيمة هذا المتغير دائما هي اسم الشيء
اذا تذكر A_EURUSD --- اذا ضغطت عليه على التشارت فإن قيمة SPARAM ستكون اسم الشيء وليس قيمة الشيء.
على التشارت يوجد زوج اسمه EURUSD--يعني قيمته EURUSD ولكن اسمه الذي يميزه هو B_EURUSD
فقيمة SPARAM ليست قيمة الشيء بل هي اسم الشيء. نرجو التركيز.
قيمة sparam ليست قيمة الشيء
قيمة sparam هي اسم الشيء
بناء عليه
sparam = B_EURUSD
قلنا: كل "شيء" له اسم وله قيمة.آخر تعديل بواسطة فيلسوف البادية ، 02-07-2017 الساعة 04:09 PM
- 02-07-2017, 04:20 PM #21
إذن طالما اكثر كلامنا السابق عن اشياء والضغط عليها نستخدم احد توابع OnChartEvent
وهو التابع CHARTEVENT_OBJECT_CLICK
التوابع الـ 11 الأخرى لا أعتقد اننا سنحتاجها
نضيفها داخل الدالة الأم OnChartEvent ---نلحق الابن بامه -- انظر للصورة:
- 02-07-2017, 04:24 PM #22
وحتى الآن هذا هو الكود البرمجي الذي شرحناه
كود PHP:string str;
string S[] = {"EUR" ,"GBP" ,"AUD" ,"NZD" ,"USD" ,"CAD" ,"CHF" ,"JPY"};
string pairs[28];
int OnInit()
{
EventSetTimer(1);
str =StringSubstr(Symbol(),6,10);
///////////////////////////
int j=-1;
for(int i=0;i<=6;i++)
{
for(int k=i+1;k<=7;k++)
{
j++;
pairs[j]=S[i]+S[k]+str;
}
}
return(INIT_SUCCEEDED);
}
////////////////////////
void OnTimer()
{
for(int i=0;i<28;i++)
{
ObjectCreate( "B_"+StringSubstr(pairs[i],0,6), OBJ_LABEL,0,0,0);
ObjectSet( "B_"+StringSubstr(pairs[i],0,6), OBJPROP_CORNER,0);
ObjectSet( "B_"+StringSubstr(pairs[i],0,6), OBJPROP_XDISTANCE,20);
ObjectSet( "B_"+StringSubstr(pairs[i],0,6), OBJPROP_YDISTANCE,50+i*13);
ObjectSetText( "B_"+StringSubstr(pairs[i],0,6), StringSubstr(pairs[i],0,6),9,"Tahoma",clrWhite);
//
ObjectCreate( "A_"+StringSubstr(pairs[i],0,6), OBJ_LABEL,0,0,0);
ObjectSet( "A_"+StringSubstr(pairs[i],0,6), OBJPROP_CORNER,0);
ObjectSet( "A_"+StringSubstr(pairs[i],0,6), OBJPROP_XDISTANCE,5);
ObjectSet( "A_"+StringSubstr(pairs[i],0,6), OBJPROP_YDISTANCE,50+i*13);
ObjectSetText( "A_"+StringSubstr(pairs[i],0,6), CharToStr(110),9,"wingdings",clrWhite);
}
}
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
if(id==CHARTEVENT_OBJECT_CLICK)
{
}
}
- 04-07-2017, 09:31 AM #23
ملخص ماسبق:
وضعنا 58 شيئا على التشارت:
1) اسماء الادوات المالية ال 28
2) 28 مربع صغير, كل زوج على يساره مربع
--
وحددنا الأهداف حتى الآن بوضوح:
1) اسماء الأزواج لكي نضغط عليها فيتفعل الزوج ويكون مشمولا بالباكتستر الفوري
2) المربعات, عند الضغط على اي مربع فإنه يلغي الزوج بجانبه وبالتالي لانختبر استراتيجيتنا عليه.
سأستخدم في هذا الموضوع كلمة استراتيجية تجوزا ومسايرة للناس, رغم انني ضد هذه الكلمة--نرى انها خاصة بحكومات الدول.
- 04-07-2017, 03:16 PM #24
جزاك الله خير على الموضوع التعليمي المميز سوف أضعه في أهم المواضيع التعليميه ليكون مرجع دائم
متابعين معك
https://forum.arabictrader.com/t141872.html
- 04-07-2017, 04:16 PM #25
حياكم الله اخي
الموضوع تحديدا لم أطرحه لتعليم غيري, بل موجه لعتاة البرمجة ليكو بناءه جهد مشترك, وعلى وجه الخصوص موجه لك و لوضاح عطار وأي مبرمج آخر لديه الرغبة للمشاركة او التعلم والبناء على ماسبق.
مثلا انا لدي عشرات البكتسترات الفوية الجاهزة, لافكار مختلفة وطرحت بعضها في المنتدى في القسم العام,
اعتقد مع مراجعتها من الأول قد ترون هناك طرق برمجية أفضل, لتكون أسرع مثلا--أكثر دقة--سليمة من الاخطاء المحتملة.
فقط امهلوني حتى انفض كل مالدي واثناء ذلك لو هناك ملاحظات-برمجية-ارجو عدم التردد.
طبعا اهمية هذا الموضوع--هو فعلا موضوع مهم وغير مطروق-من أصحاب السوابق وأعتقد هناك تحولات كبرة في مجال الفوركس سواء كتداول او كبرمجة الخ.
لأنه لابد من التطبيق على فكرة بسيطة من أجل تمام الشرح, دعنا نتفق أن تكون هذه الفكرة مؤشر AO--تقاطع متوسط 5 مع 34
باختصار--اذا AO قطع الصفر للاعلى ندخل شراء والخروج اذا قطعه للاسفل ثم ندخل بيع
فكرة بسيطة جدا من أجل الشرح ليس الا
فيما بعد الاسطر البسيطة في البرنامج للفكرة نعدلها لأي فكرة اخرى ولكن يبقى عظم البرنامج كما هو.آخر تعديل بواسطة فيلسوف البادية ، 04-07-2017 الساعة 04:19 PM
- 05-07-2017, 01:55 PM #26
((1)) اولا لابد نعرف الادوات المالية ونعني الازواج التي نريد اختبارها دفعة واحدة
((2)) ثانيا) خاصية تحديد الازواج التي تريد تطبيق الباكتستر الفوري عليها برمجياً
((3)) ثالثا) منقطة العرض على التشارت,
الجزء الثاني, تبقى الاشياء الصعبة وسنعود لإكمالها لاحقاً, حيث لازلنا بصدد برمجة الاساسيات قبل التطرق الأفكار الرئيسية.
نريد الان عند تطبيق خبير الباكتستر الفوري.
1) ان يصبح التشارت بخلفية سوداء لايوجد عليه الشموع, ولايوجد عليه خطوط الشبكة ولايوجد عليه ال OHCL صفحة سوداء صمة -- فقط تظهر الزمن ومحور السعر واسم رمز التشارت والفريم الزمني.
2) خاصية خيار اظهار التشارت كـ 1) شموع او كـ 2) خطي او 3) اخفاؤه
يتم ذلك على النحو التالي: ويكون هذا لأامر داخل دالة OnInit لتحدث هذه التغييرات لحظة التطبيق على التشارت.
عند إزالة الخبير من على التشارت لابد ان يعود وضع التشارت كما كان, نمط الشموع وخطوط الشبكة grid
كان التشارت هكذا,
فأصبح هكذا:
بعد إضافة الاسطر التالية الى دالة OnInit
- 05-07-2017, 01:57 PM #272) خاصية خيار اظهار التشارت كـ 1) شموع او كـ 2) خطي او 3) اخفاؤه
1) الشيء الأول اذا ضغطنا عليه يظهر الشموع
2) الشيء الثاني اذا ضغطنا عليه يظهر المود الخطي--تشارت خطي
3) الشيء الثالث اذا ضغطنا عليه يخفي الشموع وتعود الصفحة كما كانت في الرد الاخيرر--تشارت نظيف.
هذه الاشياء الثلاثة نريدها 3 دوائر صغيرة متجاورة أفقيا فوق اسماء الازواج
اذن القيمة=دائرة صغيرة
ملحوظة: القيمة هي ماتراه على التشارت سواء رقم أو شكل أو اي شيء آخر.
واسماءها يجب أن تكون معبرة عن وظيفتها:
اذن الشيء الاول سيتم تسميته CANDLES_MODE وتعني اظهر الشموع--نمط الشموع
الشيء الثاني سيتم تسميته LINE_MODE -- يعني النمط الخطي
الشيء الثالث سيتم تسميته CANDLES_HIDE وتعني اخف الشموع بحيث لاتظهر على التشارت.
لغة انجليزية:
HIDE = يخفي
ملخص:
الشيء الاول: قيمته دائرة صغيرة واسمه CANDLES_MODE
الشيء الثاني: قيمته دائرة صغيرة واسمه LINE_MODE
الشيء الثالث: قيمته دائرة صغيرة واسمه CANDLES_HIDE
لاتنسى مانردده ببغائيا على الدوام: لكل شيء اسم و قيمة.آخر تعديل بواسطة فيلسوف البادية ، 05-07-2017 الساعة 02:05 PM
- 06-07-2017, 11:26 PM #28
نضيف الأسطر التالية على البرنامج - على دالة OnTimer -- يظهر يمين النتيجة على الشتارت--3 دوائر أفقية فوق اسماء الازواج.
التسميات في الاقتباس تم تعديلها قليلا لتكون معبرة أكثر, ستكون على النحو التالي:
الشيء الاول: قيمته دائرة صغيرة واسمه CHART_HIDE
هدفه: اخفاء الشموع
الشيء الثاني: قيمته دائرة صغيرة واسمه CHART_CANDLES
هدفه: اظهار الشموع
الشيء الثالث: قيمته دائرة صغيرة واسمه CHART_LINE
هدفه: اظهار المود الخطي
الدوائر يعبر عنها في الوِندنقز بالرقم 108 كما يظهر في البرنامجآخر تعديل بواسطة فيلسوف البادية ، 06-07-2017 الساعة 11:29 PM
- 06-07-2017, 11:30 PM #29
===== شكل 108 == عبارة عن دائرة صغيرة ممتلئة ===
آخر تعديل بواسطة فيلسوف البادية ، 06-07-2017 الساعة 11:33 PM
- 08-07-2017, 03:59 AM #30
عناوين ماسيأتي: هو كل شيء نتصوره من اجل باكتستر فوري نموذجي وهي:
1) اظهار الازاوج على التشارت وطريقة تفعيلها او الغائها
2) بعض خواص التشارت نفسه,
3) طريقة عرض الصفقات على التشارت مرتبة زمنيا حسب وقت دخول الصفقة للازواج المختارة
4) عند الضغط على رقم صفقة معينة نريد ان نرسم خط من وقت سعر الدخول عند وقت الدخول الى سعر الخروج عند وقت الخروج. بحيث تكون منطقة مضللة. ونظهر اعلى انعكا وافضل ربح والربح او الخسارة المغلقة.
5) اضافة خصائص الرقم الدمية للتحكم في فترة الاختبار او تحديد الاهداف الخ
8) صفحة عرض الهستوري للدروداون على اسؤا الاحتمالات بحيث تحوي قراف يشمل الاكويتي كل يوم, البلنس كل يوم, وخط اسؤا دروداون
7) اظهار السعر الحالي لكل زوج,
من فضلك تستطيع مراجهة بعض مواضيعي ذات العلاقة في القسم العام لفهم مانتحد عنه.