النتائج 1 إلى 8 من 8
الموضوع: سؤال للمبرمجين والفائدة للجميع
- 12-09-2011, 09:42 PM #1
سؤال للمبرمجين والفائدة للجميع
السلام عليكم يا اخوان...
هل توجد امكانية برمجة الاكسبيرتات للعمل بالطريقة الاتية:
اذا قام الاكسبيرت بعمل صفقة بيع, تكون الصفقة التي تليها شراء والتي بعدها بيع وهكذا..
بحيث ان الاكسبيرت يقوم بعملية الشراء عند اكتمال شروط الدخول للشراء وعدم الدخول بصفقة شراء اخرى في نفس الشروط التي دخل عليها مسبقا..
لان الخلل في هذه الطريقى ان الشروط تصلح ل10 نقاط ولكن في حال اغلاق الصفقة, تفتح نفس الصفقة من جديد بسبب اكتمال نفس الشروط السابقة, في حين ان الشروط ستتغير الى بيع بعد وقت قليل...
او هل بالامكان عمل مؤقت بين اغلاق الصفقة وفتح اخرى؟؟؟
ارجو من الاخوة المبرمجين التكرم بافادتنا ولكم جزيل الشكر...
- 13-09-2011, 03:06 AM #2
الحل أن تختبر آخر صفقة مغلقة في الـHistory، فإن كانت شراءً مثلاً وأغلقت على ربح (أو خسارة لو أن هذه طريقتك) فلا تفتح صفقة جديدة من نفس النوع
يعني:
قبل فتح أي صفقة، تتأكد من:
١. تحقق الشروط
٢. عدم وجود صفقة مفتوحة من نفس الاتجاه
٣. أن تكون آخر صفقة مغلقة من الاتجاه الآخر
ولو تريد الكود فأخبرني
- 13-09-2011, 04:06 AM #3
الاخ العزيز
ممكن عمل اكسبيرت كهذا قبل فتح صفقة يتفقد اخر عقد اغلق و لا يفتح أذا كانو من نفس النوع
- 13-09-2011, 07:30 AM #4
اشكرك على الرد اخ ابو ايمن.. اذا ممكن تتفضل وترسل الكود ولو في امكانيه تفيدنا بموقع يشرح كيفية عمل الكود او بعض التعديلات لانه قلما تجد مواقع مفيده بهذا المجال وبالاخص باللغه العربية.... اشكرك جزيل الشكر
- 13-09-2011, 02:37 PM #5
OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY);
if((OrderType()==OP_SELL)){
OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY);
if((OrderType()==OP_BUY)){
هاتحط الكود ده الاول اما تتوافر شروط الامر الشراء
والثانى للبيع
اتمنى يكون واضح
- 15-09-2011, 02:37 AM #6
عزيزي وايز..في حال انني اردت ان استخدم اكثر من زوج, الطريقة الموضحه اعلاه تجبر الاكسبيرت على عمل صفقة واحده فقط والانتظار لحد الانتهاء منها وبعد ذلك يعمل صفقه معاكسه في اي زوج اخر... هل يمكن ان تعمل الطريقة على كل زوج على حده؟؟ وهل من الممكن استخدام اكثر من اكسبيرت بنفس البرنامج؟؟
- 15-09-2011, 11:11 AM #7
غير الكود عشان يبقى كده
OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY);
if((OrderType()==OP_SELL)&&(OrderSymbol()== OrderSymbol())){
OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY);
if((OrderType()==OP_BUY)&&(OrderSymbol()== OrderSymbol())){
- 15-09-2011, 01:23 PM #8
تشكر ياغالي
عزيزي وايز بخصوص خاصية الموني مانجمنت... الكود الوحيد اللي حصلته بالنت هو هذا
//-- external input
extern double LotPercent = 2.0 // mean 2.0%
//-- pass variable
double LotSize;
void LotsCalc() {
if(MarketInfo(Symbol(),MODE_MINLOT) == 0.1) int LotsDigit = 1;
else if(MarketInfo(Symbol(),MODE_MINLOT) == 0.01) LotsDigit = 2;
double MinLots = NormalizeDouble(MarketInfo(Symbol(),MODE_MINLOT),L otsDigit);
double MaxLots = NormalizeDouble(MarketInfo(Symbol(),MODE_MAXLOT),L otsDigit);
double AcFrMar = NormalizeDouble(AccountFreeMargin(),2);
LotSize = (AcFrMar*(LotsPercent/100))/1000;
if(LotSize > MaxLots) LotSize = MaxLots;
if(LotSize < MinLots) LotSize = MinLots;
}
هل هو الكود الصحيح؟؟
وبخصوص تعديلك الاخير على الاكسبيرت, اذا كان بيفتح الصفقات بناء على اللي قبلها, كيف بيفتح اول صفقه بناء على ماذا؟؟
اشكرك عزيزي عسى الله لايحرمنا من خبرتك بهذا المجال