النتائج 1 إلى 11 من 11
- 18-08-2012, 04:54 AM #1
طلب تعديل اكسبيريت ( الرجاء من الغالي الأستاذ أسامة الدخول )
السلام عليكم ورحمة الله وبركاته
كل عام والأمة الإسلامية والعربية بألف خير ، وتقبل الله صالح أعمالكم وصيامكم وقيامكم
لدي اكسبيريت بسيط الهدف منه تعديل التيك بروفت الخاص بالصفقات المفتوحة وذلك لتفادي المراقبة الدائمة للشاشة
كون طريقتي بالمتاجرة هي بالمضاعفات بناءاً على دعم ومقاومة من طريقة رقمية والرنج اليومي
المهم هو أن الإكسبيريت لابد أن يعمل التالي :
إذا كان عدد الصفقات المفتوحة = 1 لا تعديل
إذا كان عدد الصفقات المفتوحة = 2 يتم تعديل التيك بروفت لكل الصفقتين 1 ( الصفقة الأولى ) و 2 ( صفقة التبريد ، التعزيز ) إلى نقطة دخول الصفقة رقم 1
إذا كان عدد الصفقات المفتوحة = 3 يتم تعديل التيك بروفت لكل الصفقات الثلاث ، 1 ( الصفقة الأولى ) و 2 ( صفقة التبريد ، التعزيز ) و3 ( صفقة التبريد الثانية ) إلى نفس الهدف الموضوع للصفقة رقم 3
* مع ملاحظة أنه هذا الفعل يطبق على صفقات البيع على حده وكذلك على صفقات الشراء على حده
وقام كلٌ من الغالي المهندس xcv114 والأخ urlsaver بالمساعدة في تصحيح وتعديل الدوال كوني مبتدىء في هذا البحر الكبير
وبعد عمل الدوال تم عمل كومبايل فلم ينتج أخطاء في الكود ولكن بعد وضعه على الشارت لم يعمل أبداً وفي الجورنال اتضح أيضاً أنه لايعدل الأهداف كما هو مطلوب بل يرسل تعديل بشكل خلاف ما أردت ولا ينفذها أيضاً
فأتمنى من الأستاذ أسامة المساعدة في حل المشكلة وتصحيح الخطأ الخاص بالتعديل
مع العلم بأني اتأسف كثيرا ً لكثرة مراسلتي له و طلباتي منه فهو رجل ُ ذو خلق عالي يساعد الكل وهذا ما جعلني أطلبه نصا ً بالاسم
الكود في المرفقات
- 20-08-2012, 02:58 AM #2
وعليكم السلام ورحمة الله وبركاته
في البدايه لديك خطأ في دالة معرفة سعر دخول أول صفقه
كود PHP:double FirstOrderPrice(int type)
{double c=0;
for (int i=0;i<=OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && OrderType()==type)
{
c=OrderOpenPrice();
}
}
return(c);
}
لتصبح
كود PHP:double FirstOrderPrice(int type)
{double c=0;
for (int i=0;i<=OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && OrderType()==type)
{
c=OrderOpenPrice();
return(c);
}
}
return(c);
}
مرفق الإكسبرت بعد التعديل
- 20-08-2012, 09:16 AM #3
رد:طلب تعديل اكسبيريت ( الرجاء من الغالي الأستاذ أسامة الدخول )
MR.dollar
شكراً لك يأستاذي وأنت من شجعتني لدخول هذا العالم بطيبك وكرمك وحرصك دوما ً على مساعدة الكل وتلبية كل الطلبات ، ماشاء الله تبارك الله ، حفظك الله ياغالي
#######
بعد تجربة الإكسبيريت لم يعمل مع العلم بأنه تم التجربة بمنصة رباعية وخماسية ولا أعلم ما السبب ولا توجد أخطاء بالجورنال ، هي المفترض بالصفقة الثانية يقوم الاكسبيريت بتعديل الهدف لكلا الصفقتين إلى نقطة الدخول لصفقة رقم 1
فما هي المشكلة أستاذ أسامة هل تكون بدالة معينة تأخر التعديل أو تمنع خصوصاً التي يتم استدعاءها مرتين وأكثر
- 21-08-2012, 01:29 AM #4
- 21-08-2012, 05:21 AM #5
بالفعل تم تعديل الماجيك إلى 0 وعمل الاكسبيريت على كلا المنصتين
لكن وجدت خطأ في أحد الدوال والتي لا تجعل الاكسبيريت يؤدي العمل بمثل ما أرغب ولا أعرف لماذا
كنت أرغب بأنه إذا كانت عمليات الشراء = 1 لا يعمل تعديل وإذا كانت =2 فيجعل قيمة التيك بروفت لكل الصفقتين هو نقطة دخول العملية رقم 1 وإذا كانت عمليات الشراء = 3 يجعل قيمة التيك بروفت للكل هو نفس قيمة الهدف لصفقة رقم 3
فاليوم كانت عندي ( على الحساب التجربي ) صفقة بيع على الاسترالي وحدث التالي :
الصفقة الأولى ( مرقمة برقم 1 )
كان الهدف المحدد للصفقة رقم 1 هو 1.04320
لكن نزل السعر وتفعلت صفقة التعزيز ( التبريد الأولى ) فأصبح مجموع عمليات البيع المفتوحة = 2 وكان الهدف المحدد لصفقة رقم 2 هو 1.04754
لكن بمجرد تفعيل صفقة رقم 2 قام الاكسبيريت بتعديل التيك بروفت للصفقتين إلى نفس نقطة دخول صفقة رقم 2 !!!
وهذا خطأ
والصواب ( إذا كانت الصفقات = 2 إذا التعديل يكون لنفس نقطة دخول صفقة رقم 1 ، إذا كانت = 3 التعديل يكون لنفس هدف آخر صفقة فتحت أي نفس هدف الصفقة رقم 3 )
والسؤال الآخر هل احتاج لمتغير الماجيك نمبر في حال فعلت الاكسبيريت على اكثر من زوج حتى لا يحصل خلطآخر تعديل بواسطة Moath Mohammed ، 21-08-2012 الساعة 05:25 AM
- 22-08-2012, 12:23 AM #6
رد:طلب تعديل اكسبيريت ( الرجاء من الغالي الأستاذ أسامة الدخول )
يعطيك العافية اخي مستر دولار واخي معاذ بن محمد
لو تتكرم عندي سؤال ؟
هل هذا الاكسبرت تطبيق للمؤشر الذي يحقق 5000 نقطة خلال اسبوعين وهو مستويات عماد ؟
تحياتي لكم جميعا
- 22-08-2012, 04:44 AM #7
يعافيك ربي ، فقط للتوضيح هذا الاكسبيريت ليس له علاقة بفكرة المهندس عماد
إنما الفكرة هي يالغالي تعتمد على عدد الصفقات المفتوحة بأي اتجاه وللتوضيح
هي فكرة تعمد على قيم محددة وضعت للدوال حتى يتعامل معها الاكسبيريت بدلا ً من التدخل اليدوي والمتابعة الدائمة
والفكرة هي على ثلاثة مستويات وقيم
فلو كان مجموع الصفقات المفتوحة على الزوج هو صفقة واحدة فالإكسبيريت لن يعمل ويدعها كما هي بلا تعديل
لو كان مجموع الصفقات المفتوحة على الزوج هو صفقتين فالإكسبيريت يعمل على تعديل التيك بروفت لكل الصفقتين لنقطة دخول أول صفقة بحيث تخرج صفقة بصفر أرباح وصفقة بربح
لو كان مجموع الصفقات المفتوحة على الزوج هو ثلاثة صفقات فالإكسبيريت يعمل على تعديل التيك بروفت لكل الصفقات الثلاثة إلى الهدف للصفقة الثالثة وبحيث تخرج صفقتين رابحتين وثالثه خاسرة فيصبح المجموع الكلي ربح
أما كيفية تحديد وخول الصفقات وحجم العقد فهذه لا تعتمد على مؤشر محدد بل بطريقة يدوية تعتمد على الرينج اليوم للزوج وهي من عمل المبدع الأستاذ جمال ممدوح في فترات سابقة
فالعقد الأولي يكون عند وصول السعر لأقصى منقطة أي منطقة الرنج اليومي ( وهنا مثلا بيع )
عقد ثاني كتعزيز أولي بعد ارتفاع الزوج بمقدار ثلثي الرينج اليومي ويكون بضعف العقد الاول
عقد ثاني كتعزيز ثاني بعد ارتفاع الزوج بمقدار الرينج كاملا ً ويكون ب4 أضعاف العقد الأولي
وحسبت الهدف بعد الصفقة الأولى هي مثلا 50 % من قيمة الرينج
لو تفعل التعزيز الأول تكون الأهداف هي نقطة دخول الصفقة رقم 1
لو تفعل التعزيز الثاني تكون الأهداف هي مثلا 40 % من الرينج وتعدل للكل
في المحصلة النهائية النتيجة هي + + - = +
طيب لو سأل واحد ليه في الصور كل العقود 0.01 ولم تغيرها تبعاً للشرح ؟
الجواب هنا أني أعمل على حساب تجريبي للتأكد من عمل الاكسبيريت بشكل صحيح و خلوه من أي خطأ
ولو لا حظت في زوج الباوند دولار وزوج الاسترالي دولار أني بعت من أي رقم المهم وعززت له بعد 15 نقطة فقط كي أطلع على عمل الاكسبيريت
لماذا لا تجعل فكرة الرينج الية بالكل ؟
ببساطة كوني مبتدىء بالبرمجة لا أستيطع ذلك حاليا ً
ثانياً أفضل التعامل مع مؤشر حساب الرينج للأستاذ جمال ممدوح ودراسة وتجربة الفكرة والعمل بها يدوي حتى احترافها ثم بعد ذلك نجد الحل
ثالثاً فقط تضع اوامر معلقة وصلها السعر فالحمدلله لو لم يصل تلغى بنهاية اليوم واليوم الجديد ارقام جديدة ومستويات جديدة
بالأخير إن كان الاكسبيريت يسير بنفس ما ترغب فحمداً لله وللمعلومية يوجد به خطأ وانتظر تصحيح الأستاذ أسامة وتعليمي إياه لذلك حتى الآن فهو غير مكتمل ولا يترجم ماهو مكتوب هنا وأعلى الموضوع
- 22-08-2012, 07:19 PM #8
##
UP
- 28-08-2012, 12:36 AM #9
- 28-08-2012, 12:46 AM #10
فكرة الرينج اليومي كنا برمجنا لها إكسبرت سابقا وخصوصا هذه الإستراتيجية
راجع هذا الموضوع
https://forum.arabictrader.com/t141767.html
وهذه كانت آخر مشاركه بها آخر نسخة من الإكسبرت
https://forum.arabictrader.com/showt...=1#post2450799
- 28-08-2012, 08:32 AM #11
رد:طلب تعديل اكسبيريت ( الرجاء من الغالي الأستاذ أسامة الدخول )
MR.dollar
شكرا ً لك يا غالي وتعبتك كثيراً كيثراً معي
ولازلت لم أفهم لماذا الدالة الموجودة في start لا تعمل لما تكون القيمة للصفقات المفتوحة تساوي أو أكبر من 3
فالمفترض بناءاً على الكود الموجود أن الصفقات بعد تفعيل الصفقة الثالثة يكون التيك بروفت للكل هو آخر تيك بروفت ، وفي بداية الكود كنا قد عملنا دالة لمعرفة آخر تيك بروفت .
فلا مشكلة بالأكواد لكن المشكلة هنا بأنها في حال كانت الصفقات المفتوحة تساوي 2 فالعمل يتم على أكمل وجه
لكن لما يكون يساوي 3 هنا لا تغيير !
هنا الكود المقصود
كود:int start() { if(orderstotal(OP_BUY)>1 && orderstotal(OP_BUY)<3){ModifyTP(OP_BUY);} if(orderstotal(OP_SELL)>1 && orderstotal(OP_SELL)<3){ModifyTP(OP_SELL);} if(orderstotal(OP_BUY)>=3){ for (int i=OrdersTotal();i>=0;i--){ OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if (OrderTakeProfit()!=GetlastTP(OP_BUY) && OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && OrderType()==OP_BUY){ OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),GetlastTP(OP_BUY),0); } } } if(orderstotal(OP_SELL)>=3){ for ( i=OrdersTotal();i>=0;i--){ OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if (OrderTakeProfit()!=GetlastTP(OP_SELL) && OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && OrderType()==OP_SELL){ OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),GetlastTP(OP_SELL),0); } } } //---- return(0); }
مرفق بالأسفل صورة من عمليات التجربة على الديمو
هل المشكلة ربما تكون في دالة معرفة آخر تيك بروفت بحيث أنها تحسب آخر بروفت وليس البروفت الجديد أي تقوم بحسب البروفت للصفقة الثانية وليست الثالثة الجديدة ؟
هنا الدالة
كود:double GetlastTP(int type) {double c=0; for (int i=OrdersTotal();i>0;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && OrderType()==type) { c=OrderTakeProfit(); } } return(c); }