النتائج 16 إلى 30 من 175
الموضوع: دورة صناعة الاكسبيرتات
- 19-02-2008, 11:12 PM #16
رد: دورة صناعة الاكسبيرتات
عندي مشكلتين وسؤالين
* ماذا لو كان step 20 وبعد الإغلاق بعشرة دقائق تجاوز هذه العشرين نقطة ( خلال العشر دقائق ) طبعاً سيفشل عمل أوردر معلق ....
أريد عند الفشل أن يعمل أوردر بسعر السوق ... كيف تتم معالجة هذه المشكلة ؟
* أريد أن يمسح الأوردر المعلق بعد إغلاق الأوردر الثاني المفعل بربح بدل من مسحه عند تفعيل الثاني
وشكراًآخر تعديل بواسطة !MMM! ، 19-02-2008 الساعة 11:27 PM
- 25-02-2008, 01:25 PM #17
رد: دورة صناعة الاكسبيرتات
مجهود جبااااار
وفقك الله
- 27-02-2008, 10:56 PM #18
رد: دورة صناعة الاكسبيرتات
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
في هذا الدرس سنشرح المزيد من الأوامر المتعلقة بالاكسبيرتات والصفقات التجارية وكيفية التعامل معها.
وبواسطة هذه الوظائف الخاصة بالصفقات نستطيع الشراء أو البيع الفوري والمعلق أو حذف الصفقات المعلقة أو الاستعلام عن الصفقات المفتوحة حاليا أو الصفقات المنفذة.
كل صفقة نقوم بها سواء كانت فورية أو معلقة فإن لها رقم فريد غير متكرر على مستوى الصفقات التي تفتح من البروكر نفسه .
وهو عبارة عن رقم تسلسلي لجميع الصفقات الحقيقية أو الديمو لكل الحسابات الموجودة في السيرفر الخاص بكل بروكر .
مثلا أنا فتحت صفقة شراء من حسابي وأخذت الرقم 20034 وأنت أيضا لك حساب في نفس الشركة وفتحت بعدي مباشرة صفقة بيع من حسابك فهي ستأخذ الرقم 20035 .
ومن خلال هذا الرقم نستطيع معرفة حجم العمل لأي شركة فوركس وذلك بمعرفة عدد الصفقات التي يتم فتحها كل يوم مثلا .
فمثلا فتحت أنا صفقة أخذت الرقم 10000 وبعد ساعة فتحت صفقة أخرى فكان رقمها 100300 فهذا يعني أنه خلال هذه الساعة تم فتح 300 صفقة.
ولكننا لن نعرف طبعا عدد الصفقات الحقيقية من الديمو . ولكنه رقم يعبر عن حركة الشركة بشكل عام .
المهم من كل الكلام السابق فإن أهم شيء لنا علينا معرفته أن لكل صفقة رقم Ticket وهو رقم فريد لهذه الصفقة فقط .
حتى الصفقة المعلقة التي نحذفها لها رقم فريد يبقى معلقا بها حتى النهاية .
وجدنا في الدرس السابق كيف قمنا بعمل حلقة على كل الصفقات الحالية ومعرفة عدد الصفقات المتعلقة بالاكسبيرت فقط عن طريق ميزة الرقم السري الذي يميز الصفقات عن بعضها البعض.
وكيف استطعنا أيضا إغلاق الصفقات المفتوحة أو حذف الصفقات المعلقة .
واستخدمنا في ذلك تقنية بسيطة وهي عبارة عن حلقة تمر على كل الصفقات من أول صفقة حتى آخر صفقة .
وفي حال وجدنا صفقة تحقق الشروط المطلوبة قمنا بعدها أو حذفها أو إغلاقها حسب نوع العمل المطلوب .
لا يمكن بأي حال من الأحوال التعامل مع صفقة قبل اختيارها أولا ويتم اختيارها عن طريق الوظيفة OrderSelect .
كل الأوامر المتعلقة بالصفقات تقريبا تحتاج قبل استدعائها تنفيذ الوظيفة OrderSelect . وإلا فإننا سنحصل على رسالة خطأ .
لذلك يجب الانتباه جيدا أننا فعلا قمنا باختيار الصفقة المطلوبة وبعدها نستطيع عمل أي شيء على هذه الصفقة المختارة .
مثلا نستطيع معرفة أي معلومة عن الصفقة المختارة مثل سعر الدخول لهذه الصفقة أو نوع الصفقة هل هي بيع أو شراء أو غيره .
أو تاريخ فتح الصفقة أو ربح الصفقة الحالي وغيره من المعلومات الأخرى الهامة .
بما أننا لا بد من أن نختار الصفقة من خلال OrderSelect قبل أن نقوم بأي عملية على الصفقة المختارة لذلك سنتكلم قليلا عن تقنية الاختيار هذه.
لكل حساب قسمين من الصفقات .
القسم الأول : هو القسم الذي يحوي على الصفقات المنفذة وغير المغلقة أو الصفقات المعلقة وغير المنفذة .
وهي الصفقات التي نراها في صفحة Trade أسفل برنامج التداول .
القسم الثاني : وهو القسم الذي يحوي على الصفقات المغلقة أو الصفقات المعلقة المحذوفة .
وهي الصفقات التي نراها في صفحة History .
في الحقيقة فإن لكل صفقة رقمين :
الأول : رقم التيكيت الذي تحدثنا قبل قليل .
الثاني : رقم تسلسلي في القسم الذي يتبع له وهو يبدأ من الصفر - واحد - اثنان وهكذا حتى آخر صفقة .
ولكل قسم أرقام تسلسلية خاصة به .
ادخل على صفقاتك الحالية فإن أول صفقة لها الرقم صفر والصفقة التي بعدها رقمها واحد وهكذا .
هذا الرقم لن تراه في جدول الصفقات . بل سترى رقم التيكيت فقط .
الآن حان وقت شرح الوظيفة OrderSelect
لهذه الوظيفة ثلاث بارامترات :
الأول : رقم الصفقة التسلسلي أو التيكيت والذي يتحدد نوعه حسب قيمة البارامتر الثاني .
البارامتر الثاني : نوع الرقم هل هو تسلسلي أو تيكيت . ويأخذ قيمتين إما SELECT_BY_POS وهذا يعني أن الرقم نوعه تسلسلي.
أو القيمة SELECT_BY_TICKET وهذا يعني أن الرقم نوعه تيكيت .
البارامتر الثالث : نوع القسم الذي سنختار منه الصفقة هل هو الصفقات الحالية أو الهيستوري . وله قيمتان إما MODE_TRADES وهذا يعني أننا سنعمل على الصفقات الحالية. وهي القيمة الافتراضية .
أو القيمة MODE_HISTORY وهذا يعني أننا سنعمل على الصفقات الهيستوري فقط .
فمثلا الكود التالي يعني أنني أختار الصفقة ذات الرقم التسلسي 3 في الصفقات الحالية:
كود PHP:OrderSelect(3, SELECT_BY_POS,MODE_TRADE);
كود PHP:OrderSelect(3, SELECT_BY_POS);
والكود التالي يعني أنني أختار الصفقة ذات رقم التيكيت 25689 في الصفقات الحالية:
كود PHP:OrderSelect(25689, SELECT_BY_TICKET,MODE_TRADE);
كود PHP:OrderSelect(4567, SELECT_BY_TICKET,MODE_HISTORY);
- 27-02-2008, 11:06 PM #19
- 27-02-2008, 11:13 PM #20
- 28-02-2008, 12:23 PM #21
رد: دورة صناعة الاكسبيرتات
جزاك الله كل خير اخي وضاح وزادك من فضله وعلمه
- 28-02-2008, 12:46 PM #22
رد: دورة صناعة الاكسبيرتات
شكرا لك على الموضوع القيم وبالتوفيق للجميع
- 03-03-2008, 03:47 AM #23
رد: دورة صناعة الاكسبيرتات
كيف يتعرف الاكسبرت على المؤشرات وتقاطعها ويعمل بفتح وغلق الصفقات الفورية بدون وضع اوامر لصفقات معلقة
واقول مثال على كلامي وارجو الرد عليه طريقة رقمية وبرمجية ان امكن
استراتيجية افتراضية لتوضيح وضع شرط مركب بمعنى
الشرط الأول
تقاطع (CCI باعدادات بيريود 30 , مضبوط على سعر الاغلاق) مع (RSI في بيريود 15 , مضبوط على سعر الهاي)
الشرط الثاني
تقاطع (CCI باعدادات بيريود 25, مضبوط على سعر اللو) مع (RSI في بيريود 9, مضبوط على سعر الفتح)وبدون تحقق هذين الشرطين معا لا يفتح ولا يغلق صفقاته(الفورية)
بمعنى انه اذا تحقق الاول قبل الثاني يفتح شورت ويغلق اي صفقة مفتوحة لونج
واذا تحقق الثاني قبل الاول يفتح لونج ويغلق اي صفقة مفتوحة شورت
واذا تحقق الاول ثم الثاني ثم الاول في مدى معين وليكن شمعتين على التايم فريم المختار (تحقق شورت كاذب)
يقوم بفتح صفقة لونج بضعف قيمة الصفقة السابقة لتعويض الخسارة
واذا تحققت حالة دخول شورت مثلا مرتين متتاليتين يقوم بتعزيز الصفقة بمثل قيمتها(مضاعفتها)
وكلما تحققت الحالة مرة اخرى يقوم بتعزيز اخر
أعرف ان سؤالي كبير ولكن ايضا عشمي بحضرتك اكبر من سؤاليآخر تعديل بواسطة محمود علي ، 03-03-2008 الساعة 04:01 AM
- 09-03-2008, 05:59 AM #24
- 09-03-2008, 06:07 AM #25
رد: دورة صناعة الاكسبيرتات
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
في هذا الدرس سوف نشرح فكرة وطريقة عمل الاكسبيرت 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_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));
- 09-03-2008, 06:09 AM #26
رد: دورة صناعة الاكسبيرتات
والآن نفس التقنية نقوم بها مع الترند الصاعد من أجل صفقة البيع وهي لها الكود التالي:
كود PHP:if(ObjectFind(SellStop_TrendName) == 0)
{
SetObject("High" + SellStop_TrendName,
ObjectGet(SellStop_TrendName, OBJPROP_TIME1),
ObjectGet(SellStop_TrendName, OBJPROP_PRICE1) + SellStop_StepUpper*Point,
ObjectGet(SellStop_TrendName, OBJPROP_TIME2),
ObjectGet(SellStop_TrendName, OBJPROP_PRICE2) + SellStop_StepUpper*Point,
ObjectGet(SellStop_TrendName, OBJPROP_COLOR));
SetObject("Low" + SellStop_TrendName, ObjectGet(SellStop_TrendName, OBJPROP_TIME1),
ObjectGet(SellStop_TrendName, OBJPROP_PRICE1) - SellStop_StepLower*Point,
ObjectGet(SellStop_TrendName, OBJPROP_TIME2),
ObjectGet(SellStop_TrendName, OBJPROP_PRICE2) - SellStop_StepLower*Point,
ObjectGet(SellStop_TrendName, OBJPROP_COLOR));
vH = NormalizeDouble(ObjectGetValueByShift("High" + SellStop_TrendName, 0), Digits);
vM = NormalizeDouble(ObjectGetValueByShift(SellStop_TrendName, 0), Digits);
vL = NormalizeDouble(ObjectGetValueByShift("Low" +SellStop_TrendName, 0), Digits);
sl = vL + SellStop_StopLoss*Point;
tp = vL - SellStop_TakeProfit*Point;
if(Bid >= vM && Bid <= vH && OrderFind(MagicSellStop) == false)
if(OrderSend(Symbol(), OP_SELLSTOP, SellStop_Lot, vL, 3, sl, tp, "",
MagicSellStop, 0, Red) < 0)
Print("Err (", GetLastError(), ") Open SellStop Price= ", vL, " SL= ", sl,
" TP= ", tp);
if(Bid >= vM && Bid <= vH && OrderFind(MagicSellStop) == true &&
glbOrderType == OP_SELLSTOP)
{
OrderSelect(glbOrderTicket, SELECT_BY_TICKET, MODE_TRADES);
if(vL != OrderOpenPrice())
if(OrderModify(glbOrderTicket, vL, sl, tp, 0, Red) == false)
Print("Err (", GetLastError(), ") Modify Sell Price= ", vL, " SL= ", sl,
" TP= ", tp);
}
}
كود PHP:bool OrderFind(int Magic)
{
glbOrderType = -1;
glbOrderTicket = -1;
int total = OrdersTotal();
bool res = false;
for(int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderMagicNumber() == Magic && OrderSymbol() == Symbol())
{
glbOrderType = OrderType();
glbOrderTicket = OrderTicket();
res = true;
}
}
return(res);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void SetObject(string name,datetime T1,double P1,datetime T2,double P2,color clr)
{
if(ObjectFind(name) == -1)
{
ObjectCreate(name, OBJ_TREND, 0, T1, P1, T2, P2);
ObjectSet(name, OBJPROP_COLOR, clr);
ObjectSet(name, OBJPROP_STYLE, STYLE_DOT);
}
else
{
ObjectSet(name, OBJPROP_TIME1, T1);
ObjectSet(name, OBJPROP_PRICE1, P1);
ObjectSet(name, OBJPROP_TIME2, T2);
ObjectSet(name, OBJPROP_PRICE2, P2);
ObjectSet(name, OBJPROP_COLOR, clr);
ObjectSet(name, OBJPROP_STYLE, STYLE_DOT);
}
}
- 12-03-2008, 05:29 PM #27
رد: دورة صناعة الاكسبيرتات
بارك الله بك أخ وضاح
أنت تفجر قنبلة ببرمجة الميتا على مستوى العالم العربي
- 13-03-2008, 04:45 AM #28
- 13-03-2008, 11:10 AM #29
- 13-03-2008, 10:38 PM #30
رد: دورة صناعة الاكسبيرتات
جزاك الله كل خير اخي وضاح
المواضيع المتشابهه
-
طلب صناعة إكسبرت RSI
By FOREX_WAR in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 22آخر مشاركة: 29-04-2017, 10:58 PM -
طلب = صناعة سكربت
By cobra100 in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 6آخر مشاركة: 28-10-2008, 02:41 PM -
طريقة صناعة الاكسبيرتات الاليه
By ماجد كو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 24آخر مشاركة: 05-05-2008, 03:02 PM