بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
في هذا الدرس سوف نشرح فكرة وطريقة عمل الاكسبيرت TrenMeLeaveMe والذي لاقى رواجا كبيرا في المنتديات الأجنبية.
وهناك الكثير الذين أضافوه لاستراتيجياتهم ومؤشرات أخرى يقوم الاكسبيرت بالمتاجرة على أساسها.
فكرة الاكسبيرت بسيطة جدا لكنها قوية أيضا في نفس الوقت.
فكما هو معروف أن السعر يمشي وفق ترندات صاعدة أو هابطة ويظل يمشي وفق ترند معين حتى يتم كسر هذا الترند عند نقطة معينة من الترند.
وبما أن نقطة الكسر لا يمكن التكهن بها إلا أن حد الكسر هو خط الترند نفسه.
بمعنى أن الكسر سيكون لهذا الترند عاجلا أم آجلا ولكن السعر الذي سينكسر عند الترند غير معروف.
لذلك كان هذا الاكسبيرت هو الحل لهذه المشكلة بحيث أن الاكسبيرت يتابع السعر على الترند المطلوب ويقوم بوضع أوردر معلق على حدود الترند.
ويقوم أيضا بتعديل سعر الدخول للأوردر المعلق كلما مشى السعر مع الترند دون أن يكسره.
بمجرد كسر السعر للترند فإن الأوردر يكون له بالمرصاد في أفضل نقطة دخول.
هذه هي فكرة الاكسبيرت بشكل عام وبصراحة فإن هذه الفكرة لم يتطرق لها أحد من قبل على مستوى العالم وبشهادة الجميع.
المهم نعود للاكسبيرت وطريقة عمله.
يتطلب الاكسبيرت أن يقوم المتاجر يدويا برسم الترند الذي ينتظر كسره والذي يجب أن يسميه باسم خاص لكي يتعرف عليه الاكسبيرت.
الآن سيقوم الاكسبيرت بفحص الترندات المرسومة على الشارت وفي حال وجد الاكسبيرت ترندا خاصا به فإنه يقوم بوضع أوردر معلق مناسب له.
حسب الإعدادات التي حددها المستخدم نفسه من هدف وستوب لوز وعدد نقاط الكسر وهكذا.
في الحقيقة هناك نسختان من الاكسبيرت . النسخة الأولى تتعامل فقط مع كسر الترندات.
النسخة الثانية تتعامل مع كسر واختراق الترندات.
ونحن هنا سنشرح النسخة الأولى لأنها أقل تعقيدا وأسهل على الشرح.
أولا سنشرح الخصائص الخاصة بالاكسبيرت وهي:
كود PHP:
extern string BuyStop_Trend_Info = "_______________________";
extern string BuyStop_TrendName = "buystop";
extern int BuyStop_TakeProfit = 50;
extern int BuyStop_StopLoss = 30;
extern double BuyStop_Lot = 0.1;
extern int BuyStop_StepUpper = 10;
extern int BuyStop_StepLower = 50;
extern string SellStop_Trend_Info = "_______________________";
extern string SellStop_TrendName = "sellstop";
extern int SellStop_TakeProfit = 50;
extern int SellStop_StopLoss = 30;
extern double SellStop_Lot = 0.1;
extern int SellStop_StepUpper = 50;
extern int SellStop_StepLower = 10;
الخاصية BuyStop_Trend_Info هي عبارة عن خط أفقي لفصل الخصائص عن بعضها وليس له أهمية.
الخاصية BuyStop_TrendName وهي اسم الترند الذي رسمه المستخدم على الشارت لكي يتعامل معه الاكسبيرت على أنه ترند هابط وعند كسره يشتري. الخاصية BuyStop_TakeProfit وهي عدد النقاط المطلوبة كهدف من أوردر الشراء. الخاصية BuyStop_StopLoss وهي عدد نقاط الوقف لعملية الشراء. الخاصية BuyStop_Lot وهي عدد اللوتات لصفقة الشراء. الخاصية BuyStop_StepUpper وهي عدد النقاط الفاصلة بين الترند وبين نقطة الدخول. الخاصية BuyStop_StepLower وهي عدد النقاط الفاصلة بين السعر وبين الترند وهي منطقة تجهيز الصفقة. بحيث يضع الاكسبيرت صفقة الشراء في حال اقترب السعر من الترند بهذا المقدار من النقاط. الخصائص الباقية نفس الشرح ولكنها لصفقة البيع. الكود التالي: كود PHP:
int MagicBuyStop = 1101;
int MagicSellStop = 1102;
int glbOrderType;
int glbOrderTicket;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
Comment("TrendMeLeaveMe by Waddah Attar");
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int deinit()
{
Comment("");
return(0);
}
عرفنا أيضا متحولين يضمان رقمين سحريان لكي يستطيع الاكسبيرت الفصل بين صفقة البيع وصفقة الشراء.
المتحولات الأخرى ستلزمنا في البرنامج بعد قليل. كما تلاحظون أنه لا يوجد كود في الوظيفتين init و deinit . المعالجة كلها ستكون في الوظيفة start كما سنرى الآن. كود PHP:
int start()
{
double vH, vL, vM, sl, tp;
if(ObjectFind(BuyStop_TrendName) == 0)
{
SetObject("High" + BuyStop_TrendName,
ObjectGet(BuyStop_TrendName, OBJPROP_TIME1),
ObjectGet(BuyStop_TrendName, OBJPROP_PRICE1) + BuyStop_StepUpper*Point,
ObjectGet(BuyStop_TrendName, OBJPROP_TIME2),
ObjectGet(BuyStop_TrendName, OBJPROP_PRICE2) + BuyStop_StepUpper*Point,
ObjectGet(BuyStop_TrendName, OBJPROP_COLOR));