الآن أين هي المشكلة التي تقف عندها ؟؟ الموضوع تاه مني .
Printable View
يا باشا لازم الموضوع يتوه منك .. عشان اخدت اجازة مني انبارح .... :0016:
انا والحمد لله وصلت لأن افصل صفقات الشراء عن البيع في والربح .. فأصبح الشراء قائم بذاته والبيع كذلك ..
وبقي ثلاث نقاط .. اثنان عليك وان شاء الله اوصل انا للثالثة عشان متقلش عليك :0016:
النقطتين هما...
اولا جعل الاكسبيرت يغلق الصفقات بتحقق الهدف او اكبر منه .. لأنه اذا تخطي السعر الربح المطلوب بسرعة لا يغلق الصفقات وتظل مفتوحة
ثانيا ان السعر عندما يتخطي مسافة الاستيب ثم يعود داخلها وتتحقق الشروط على الشموع يفتح صفقة جديدة .. رغم ان المسافة اصبحت اقل من الاستيب المحدد !!!
....
والنقطة الثالثة والاخيرة ان شاء الله لأكتمال الفكرة .. هي المضاعفات ..
وانا اضفتها بالفعل في النسخة الاخيرة والتي لا تظهر بها اخطاء برمجية ولكنها لا تفعل المضاعفات ويبقي اللوت ثابتا ..
وانا سألت حضرتك .. هل يلزم تعريف متغيريين للمضاعفات واحد للشراء والاخر للبيع حتي يلتزم بضاعفات البيع على البيع ومضاعفات الشراء على الشراء
وكيف اكتب دالة تعطيني حجم لوت أخر صفقة شراء مفتوحة ؟؟؟؟؟؟
.. آسف على الاطالة .. بس تراني بكتب من الشغل ومستعجل .. ههههههههه
وشكرا يا باشا على اهتمامك و جزاك الله كل خير
السلام عليكم ورحمة الله وبركاته
تحية طيبة إخواني الكرام وبعد
أريد دالة مضاعفات التعويض للستوب ضعف الهدف بالمتوالية التالية :
1-2-6-18-54-162
إذا كان لا يوجد وهذا ما أعتقد، فالحل الوحيد هو أن نضع مثلا بالمتغيرات الخارجية اللوتات بالترتيب التالي:
lots1=0.01
lots2=0.02
lots3=0.06
lots4=0.18
lots5=0.54
lots6=1.62
وعند تحقق شرط الدخول يتم معاينة لوت آخر صفقة خاسرة بالهيستوري وعليه يتم إصدار أمر الشراء او البيع باللوت الموالي المحدد بالمتغيرات الخارجية بالترتيب
إذا كان لوت آخر صفقة خاسرة بالهيستوري هو lots1 يفتح الصفقة بلوت lots2 وإذا كان بلوت lots2 يفتح الصفقة بلوت lots3.... وهكذا إلى أن نصل... وإذا كان بلوت lots6 يفتح بلوت lots1
كيف ذلك ؟
بارك الله فيكم
:asvc:
وعليكم السلام ورحمة الله وبركاته
من الأرقام التي كتبتها فواضيع أن عامل المضاعفه عندك هو آخر لوت مضروب في 3
إلا المضاعفه الأولى فتكون مضروبه في 2 لذلك يمكنك إستخدام دالة المضاعفات العاديه لكن وضع شرط بسيط يحسب إذا كان عدد الصفقات الخاسره = 1 فيجعل المضاعفه * 2
مثال
كود PHP:int TotalLostOrders()
{
int TotalLost;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderProfit()<0)TotalLost++;
else return(TotalLost);
}
}
return(TotalLost);
}
ثم ستضع الشرط عند المضاعفهكود PHP:double LastOrderlot()
{
int TotalLost;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
return(OrderLots());
}
}
return(0);
}
كود PHP:if(TotalLostOrders()==1)newLot=LastOrderlot()*2;
else newLot=LastOrderlot()*3;
[QUOTE=MR.dollar;2759373]
يا سلام عليك يا مستر دولار .. والله جات في وقتها .. كنت لسه بسأل عليها استاذ جميل ..كود PHP:double LastOrderlot()
{
int TotalLost;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
return(OrderLots());
}
}
return(0);
}
ولو اضفنلها int Type .. يبقي حنعرف آخر لوت للشراء او البيع ..يا تري انا صح والا غلطان ؟؟؟
انا عرفت متغيرين للمضاعفات لكن فيه قوس خطأ مش عارف هو فين ؟؟؟
ومش عارف لو كانت حتعطي النتيجة الصحيحة أم لا ؟؟
ارجوا افادتي وجزاكم الله كل خير
الملف المرفق 393457
تسلم يا استاذي انا شفت التعديلات .. بس لقيت مشكلة صغيرة .. وهي عدم فتح التبيريد في الاتجاه المعاكس .. بل يفتح صفقات التبريد في كلا الجانبين من الصفقة .. انا وضحت الصفقات على الصورة .. شوف كده وقولي رأيك
الملف المرفق 393551
اذاي يا استاذي الشرط مكتوب
اي اذا انطبق شرط الشموع وكانت هناك صفقات شراء يكون السعر الجديد هو سعر آخر صفقة شراء منقوص منه الاستيب .. والا اصبح السعر هو سعر السوق للشراءكود PHP:if(Close[2]<Open[2]&&Close[1]>Open[1]){ if(TotalOrderByType(OP_BUY)>0) priceb=LastOrderBuyPriceB()-step*point; else priceb=Ask;
وبهذا يجب ان يحدد فتح الصفقة الجديدة على سعر آخر ناقص سعر الاستيب وهنا يكون فتح الصفقات الجديدة دائما عندما ينعكس السعر .. والا انا فاهم غلط .. ارجوك يا استاذ جميل .. كمل جميلك معايا وفهمني الغلط جاي منين ؟؟
بالنسبة للمضاعفات يا استاذ جميل .. انا سألت حضرتك سؤال ولم تجاويني عليه ..
هل يلزم تعريف متغيرين لمعرفة آخر لوت شراء وآخر لوت بيع .. وهل الكود الذي ارفقه استاذي مستر دولار للاخkira-hوهو
يمكن استخدامهكود PHP:double LastOrderlot()
{
int TotalLost;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
return(OrderLots());
}
}
return(0);
}
ولو اضفنلها int Type .. يبقي حنعرف آخر لوت للشراء او البيع
كده انا ماشي صح والا ايه ؟؟؟؟؟؟؟؟؟؟؟؟؟
الأخوة الأعزاء بعد مزيد من التحية
طلبي الأول:
أقوم ببرمجة اكسبرت ولكن وقفت عند نقطة في صلب الاكسبرت فكرت فيها ومش عارف اوصل لها لحل فقلت ارجع لكم لانكم المرجع الأول لي بعد الله سبحانه وتعالى
محتاج دالة تقوم لي بارجاع رقم الشمعة الخاصة باللو ورقم الشمعة الخاصة بالهاي لليوم السابق بالنسبة للافتتاح الخاص باليوم السابق بمعنى
اليوم السابق تم تحقيق هاي لهذا اليوم محتاج دالة تعود لي برقم الشمعة بالنسبة لشمعة الافتتاح لنفس اليوم وكذلك اللو
هنفترض اليوم السابق تم تحقيق هاي لهذا اليوم عند شمعة الساعة 8 مساءا محتاج دالة تقول لي ان الهاي حدث عند شمعة الساعه 20 يعني تعود لي بالرقم 20 وهو رقم الشمعة التي تم تسجيل اعلى سعر لهذا اليوم عندها بالنسبة لافتتاح اليوم الذي حدث عنده الهاي وهو اليوم السابق وليس رقم الشمعة بالنسبة لمكاني الحالي على الشارت اي النظر لليوم السابق وحساب رقم الشمعة التي حدث عندها الهاي ورقمها بالنسبة لافتتاح اليوم الخاص بها وهو هنا اليوم السابق
طلبي الثاني
هذا الاكسبرت اكسبرت مضاعفات تعزيز بمعنى عند الدخول في صفقة فرضا شراء وقام السعر بالارتداد علي مسافة نتغير خارجي اسميته Step يقوم بفتح عقد مضاعف تعزيز اي شراء ايضا وكل ما السعر ينزل يفتح عقد ضعف العقد السابق حتى الان لا توجد مشكلة ولكن المشكلة اريد وضع هدف جميع الصفقات الموجوده على المنصة على هدف اخر عقد مضاعفة حتى يتم اغلاق جميع الصفقات عند نفس السعر لاخر مضاعفة مع العلم ان عند الدخول في اول عقد لا يوجد له استوب بل فقط هدف ولكن عند الدخول في المضاعفات ارغب في وضع هدف كل الصفقات على نفس هدف اخر عقد مضاعفة
وجزاكم الله خير مقدماً