النتائج 1 إلى 11 من 11
- 13-12-2012, 10:16 PM #1
سؤال حول الدالة البرمجية GlobalVariableGet .. لتسجيل نوع أمر الصفقة
الى خبراء البرمجة .. السلام عليكم ورحمة الله وبركاته
لقد بحثت عن داله تعمل على تعاقب نوع اوامر الصفقات .. بحيث تجعل عملية بيع تتلوها عملية شراء تتلوها بيع وهكذا
بيع
شراء
بيع
شراء
وهكذا
فوقع البحث على دالة GlobalVariableGet
وبحكم عدم الالمام الجيد في اللغة الانجليزية واجهت صعوبة في فهم هذه الدالة
المراد منكم اخواني المبرمجين الافادة عن مدى فعالية هذه الداله للمهمة المطلوبة .. وكيف يمكن ان يكتب الكود البرمجي لتحقيق تنفيذ المهمة كما هو مطلوب
وما الخيارات البديلة لمثل ذلك
ودمتم جميعا سالمين
- 13-12-2012, 11:27 PM #2
+1
- 14-12-2012, 12:23 AM #3
رد:سؤال حول الدالة البرمجية GlobalVariableGet .. لتسجيل نوع أمر الصفقة
لن تحتاج لها ويكفي ان تعمل دالة عبارة عن حلقة لأستخراج نوع آخر صفقة وبالتالي تطلب عدم تنفيذ نفس النوع ، والدالة تختلف اذا كنت تستدعي معرفه عقد مفتوح او عقد مغلق .
هذا مثال للدالة لمعرفة آخر عقد مغلق فأذا كان شراء اوجه الأمر الى البيع
كود PHP:void CheckLastOrder()
{
datetime lastCloseTime = 0;
int cnt = OrdersHistoryTotal();
for (int i=0; i < cnt; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
if (OrderSymbol() == Symbol() && lastCloseTime < OrderCloseTime() && OrderType()== OP_BUY)
{
GO SELL
}
}
}
- 14-12-2012, 01:46 AM #4
يمكنك أن تستخدم الطريقة التي شرحها الأخ جميل
بالنسبه للداله GlobalVariableGet و GlobalVariableSet
تستخدم لحفظ قيم في الذاكره العامه ويمكنك إسترجاعها حتى لو أغلقت الميتاتريدر
بالنسبه لإستخدامها في الكود الذي تريده
يمكنك حفظ قيمة في الذاكره بحيث عندما يتم فتح صفقة شراء تتحول إلى 1 وعندما يتم فتح صفقة بيع تتحول إلى -1
ثم تضع في الشروط هذه المقارنه
مثال
كود PHP:if(GlobalVariableGet("NextOrderType")!=1)
{
OrderSend(Symbol(),OP_BUY,Lots1,NormalizeDouble(Ask,Digits),3,SL,TP,"EA",MagicNumber,0,Blue);
GlobalVariableSet("NextOrderType",1);
}
if(GlobalVariableGet("NextOrderType")!=-1)
{
OrderSend(Symbol(),OP_SELL,Lots1,NormalizeDouble(Bid,Digits),3,SL,TP,"EA",MagicNumber,0,Red);
GlobalVariableSet("NextOrderType",-1);
}
- 14-12-2012, 01:47 PM #5
مشكور اخي جميل على المساعدة ولا حرمك الله الاجر
الكود الذي كتبته اقتصر فقط على معرفة اخر صفقة مغلقة ليتم بعدها تحديد الصفقة التالية ولكن المطلوب هو لا يقف على كون الصفقة الاخيرة مغلقة فقط .. فقد تكون لم تغلق بعد
جزاك الله خيرا
- 14-12-2012, 01:55 PM #6
- 14-12-2012, 02:15 PM #7
- 15-12-2012, 03:34 PM #8
- 15-12-2012, 08:45 PM #9
الإكسبرت الذي أرفقته به أخطاء برمجيه فأنصحك أن تراجع الدروس التعليميه مره أخرى
هذا كود الإكسبرت بعد التعديل
لكن هذا الكود سيظل يفتح بيع ثم شراء بدون شروط أو توقف
كود PHP:extern double Lots = 0.1;
extern int TakeProfit = 10;
extern int StopLoss = 10;
extern int MagicNumber = 100;
/*************
*
* Testing EA
*
*/////////
void init() {
Print("** INIT **");
}
void start() {
if(Volume[0] > 1) {
return;
}
if(GlobalVariableGet("NextOrderType")!=1)
{
OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),3,StopLoss,TakeProfit,"EA",MagicNumber,0,Blue);
GlobalVariableSet("NextOrderType",1);
}
if(GlobalVariableGet("NextOrderType")!=-1)
{
OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),3,StopLoss,TakeProfit,"EA",MagicNumber,0,Red);
GlobalVariableSet("NextOrderType",-1);
}
}
- 15-12-2012, 10:25 PM #10
مشكور أستاذ اسامة على التصحيح
المقصود هو ان يقوم الاكسبيرت بفتح صفقة عند كل افتتاح للشمعه .. ويقوم في الافتتاح التالي للشمعه التالية فتح صفقة معاكسة
أراك هنا حذفت شرط سعر الافتتاح
كرما منك تعديل الاكسبيرت كما هو مطلوب .. وجزاك الله خيرا
- 16-12-2012, 01:36 AM #11
كيف بالامكان اضيف شرط تحقق فتح الصفقة عند سعر الافتتاح