النتائج 1 إلى 13 من 13
الموضوع: اكسبرتي الأول .. ارجوا التعديل
- 02-01-2016, 10:07 PM #1
اكسبرتي الأول .. ارجوا التعديل
السلام عليكم
اكسبرتي الأول بين يديكم
فكرته بسيطة جدا
يضع امر بيع معلق تحت كل شمعة تحقق 70 RSi وأكثر
ويضع امر بيع معلق تحت كل قاع
ويضع امر شراء معلق فوق كل شمعة تحقق 30 RSi واقل
----
الهدف متغير بتغير التايم فريم الذي اعطى الاشارة ويبدأ من 10 نقاط
وكذلك اللوت متغير .. لكن اللوت الأصلي 0.01
الستوب في الأصل لا يوجد ستوب لكني وضعت 200 نقطة احترازي
يلغي الأوامر المعلقة بعد 150 نقطة
-----
في حال تفعلت صفقة الشراء وعكست 50 نقطة ندخل بعقد عكسي بيع لوت 0.55
الدخول سيكون تحت اقرب قاع
هدف 20 نقطة واغلاق الصفقة الأصلية بعد 21 نقطة
(اللوت العكسي سيكون متغير مع تغير حجم اللوت الأصلي )
------
الإشكالية الأن :
1 -أنه يعكس الصفقات بالتتالي فلا يفتح صفقة عكسية جديدة الا بعد اغلاق الأولى مما يسبب طول مسافة الانعكاس
اريد كل صفقة تعكس 50 نقطة يفتح لها صفقة عكسية حتى لو لم تغلق الأولى
وايضا هو الآن لا يفتح صفقة عكسية الا بعد اغلاق امر معلق بنفس النوع
2- انه اذا فتح صفقة عكسية مثلا بيع .. يفتح لها صفقة عكسية شراء .. وهذا لا اريده وإنما اريد التمييز بين الصفقات الأصلية والعكسية
أرجوا التكرم بالمساعدة في تعديل هذه الجزئية فقد حاولت لمدة يومين متتالين لهذه الجزئية فقط .. ولم اصل لحل
- 03-01-2016, 07:32 PM #2
- 03-01-2016, 11:55 PM #3
وعليكم السلام ورحمة الله وبركاته
فكره مميزة إن شاء الله تكون ناجحه
راجعت الكود أنت قمت بالعمل الصعب وباقي الجزء الأسهل
المشكله لديك أنك جعلت الإكسبرت يبحث عن آخر صفقه مفتوحه فقط ثم يضع الأمر المعلق لها
كود PHP:for(int i=0;i<=OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magicnumber){
int ticket=OrderTicket();int type=OrderType() ;double lot=OrderLots();double SELL_Price=OrderOpenPrice();
double TP=OrderTakeProfit();double SL=OrderStopLoss(); string Comm=OrderComment();
}
//ÍÐÝ ÇáÃæÇãÑ ÇáãÚáÞÉ
if(type==OP_SELLSTOP&&(Bid>=SELL_Price+1500*Point)){
OrderDelete(ticket);
}
if(type==OP_BUYSTOP&&((Bid<=SELL_Price-1500*Point))){
OrderDelete(ticket);
}
}
لكن يجب أن تضع شرط إضافي قبل وضع الأمر المعلق للصفقه بأنه لم يفتح بعد مثلا يمكنك وضع كومنت للأمر العكسي بحيث يكون نفس رقم تكيت الأمر الأصلي ثم تستخدمه لاحقا لمقارنه
جرب عملها وأخبرني بالنتيجه
- 04-01-2016, 03:56 AM #4
شكرا لدعمك المتواصل
جربت هذا سابقا ولكنه لم ينجح معي .. (يوجد جزء مفقود عندي)
وضعته داخل الحلقة
ووضعت رقم التيكيت كومانت للصفقة العكسية بنفس الفكرة التالية تقريبا
https://forum.arabictrader.com/t3761...ml#post2818255
جرب تكرما .. تشغيل تايم فريم واحد مثلا H1
- 04-01-2016, 10:03 PM #5
100 صفقة في 8 ساعات كلها حققت الهدف
حساب ديمو
ولا انعكاس واحد
اللوت لكل الصفقات 0.01
الرافعة كانت 1:200
التسييل وهو مهم جدا (100%) باغلاق اعلى الصفقات خسارة
وهنا تبرز الاشكالية
يجب ان يراقب الاكويتي ففي فترة ما يجب ان يوقف تفعيل الصفقات (أو يهدج بقوانين خاصة) >>>>>> انتظر لمسات مستر دولار
أو أن يستخدم نظام تسييل 50-20% لكي يغلق بدوره هو الصفقات ولا ينفذها
سنلاحظ تفعل صفقات بنفس النقطة
- 05-01-2016, 02:45 AM #6
- 05-01-2016, 07:35 AM #7
آخر تعديل بواسطة أبو نـاصر ، 05-01-2016 الساعة 07:45 AM
- 05-01-2016, 08:26 AM #8
بخصوص الصفقات المتشابهة
بعضها بالخطأ بسبب اعادة تشغيل المنصة
وبعضها بسبب كون القاع مثلا أو ار اس اي على الساعة وعلى النصف ساعة (نفس القاع) فوضع له صفقتين .. وهذا لا بأس به
--------------
- سيتم معالجة المارجن والتحكم بالصفقات برمجيا
- حساب قيمة النقطة في الحسبان
- اعادة صياغة المعادلات باكثر دقة واضافة نقاط دخول اخرى
- 05-01-2016, 09:01 PM #9
انهيار كامل للحساب
ورجع الى راس المال 501
الأسباب بالترتيب حسب الأهمية
- لم يتم اعتماد الصفقات العكسية حتى الأن
- المارجين كول لم يساعد في المناورة
خاصة بعد ابتعاد السعر ومحاولة الدخول بصفقات عكسية فلم يقبل حجم اللوت
ومن جهة اعطى حماية باغلاق الصفقات
فلم نضع معادلة المناورة (بين المارجن والاكويتي والحساب)
صفقات اغلقها المارجين
- 07-01-2016, 10:45 AM #10
الله المستعان
عدة ايام في هذه الاسطر لم اجد منطق فيها
انتهت مشكلتها الآن
كود://========================== // البحث عن الاوامر المفعلة والمعلقة for(int i=0;i<=OrdersTotal();i++){ OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magicnumber){ ticket=OrderTicket();int type=OrderType() ;double lot=OrderLots();double SELL_Price=OrderOpenPrice(); double TP=OrderTakeProfit();double SL=OrderStopLoss(); string Comm=OrderComment(); } //========================== //شراء معاكس للبيع الأصلي if(type==OP_SELL&&(Bid>=(SELL_Price+400*Point))&&sub!=110){ if(CheckOrderExist(ticket)==False){ if ((High_3>High_4)&&(High_3>High_5)&&(High_3>High_2)&&(High_3>High_1 )&&(Low_3>Low_4 )&&(Low_3> Low_5 )){ Lots= 0.55; T_P = 200; S_L2 = 210; OrderSend_Buy(High_3, High_3+T_P*Point,0,ticket,period); OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES); OrderModify(ticket,OrderOpenPrice(),High_3+S_L2*Point,OrderTakeProfit(),0); } }} }
كود:bool CheckOrderExist(int ticket) { for(int i=OrdersTotal()-1;i>=0;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magicnumber&&(OrderType()<=OP_BUY || OrderType()<=OP_BUYSTOP)) { if(OrderComment()==ticket)return(true); } } return(false); }
آخر تعديل بواسطة أبو نـاصر ، 07-01-2016 الساعة 10:50 AM
- 07-01-2016, 11:33 AM #11
وهذا الكود أفضل من السابق
حيث يقرب نقطة التعديل
كود:if(CheckOrderExist(ticket,SELL_Price)==False){
كود:bool CheckOrderExist(int ticket , double newPrice) { for(int i=OrdersTotal()-1;i>=0;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magicnumber&&(OrderType()<=OP_BUY || OrderType()<=OP_BUYSTOP)) { if(OrderComment()==ticket) { if(OrderOpenPrice()>= newPrice && OrderType()!=OP_BUY) { OrderDelete(OrderTicket()); return(false); } return(true); } } } return(false); }
- 07-01-2016, 06:02 PM #12
للأسف لازلت اعاني في هذين السطرين
كنت اتمنى ان اجد حلا
- 24-02-2016, 06:03 PM #13
والله انك مجتهد وتستحق الشكر والتقدير على تفانيك
اتمنى ان تصبح مبرمج متمكن في القريب العاجل فلديك افكار لو تم برمجتها بنفسك اعتقد ستكون جيده
الاخوه ما يقصرون مستر دولار وغيره من المبرمجين ولكن نلتمس لهم العذر دائما فهم يعملون لنا بدون مقابل سوى الاجر االاكبر وهو الدعاء لهم