السلام عليكم ورحمه الله وبركاته
بسم الله الرحمن الرحيم
اعذرني اخي الكريم فانا لم اعرف هذه الطريقه .... الا يجب ان تفص قبل ان تعطى امر شراء اذا السعر وصل هذا لمستوى ام هي اوامر معلقه
افدنا جزاك الله
بارك الله فيكم وشكرا لكم اخوكم ابو يوسف
Printable View
تقدر تقول إني عاكس الوضع شوية
بس الطريقة شغالة وبتعمل باك تست وكمان شغلتها على حساب ديمو وإشتغلت
-------------
أنا عامل مثلا أمر الشراء
لو العمليات المفتوحة أقل من 1
إشتري من Buy_Price ( وإللي معرفة بمعادلة )
----------------
فالإكسبيرت بيفحص لو العمليات أقل من 1 والسعر الحالي Buy_Price يقوم يشتري
--------------
ونفس الكلام في البيع
ياااااااااااااااااه
--------------
إنت صح
-------------
أنا كده عامل الإكسبيرت يفحص لو الأوامر أقل من 1 يشتري مثلا يقوم يجي يعمل أوردر سيند يلاقي سعر الشراء خطأ
-----------
إزاي فاتت عليا دي
----------
ألف شكر يا أبو يوسف
السلام عليكم ورحمة الله أستاذ اسامة :eh_s(7):
لدي سؤال بخصوص طريقة كتابة دالة تقوم بفتح صفقات بشروط معينة داخليا وتعطيني عدد الصفقات و نوعها شراء أم بيع وهل هي رابحة أم خاسرة
مثلا نستخدم تقاطع موفينجين كشرط الدخول ما أريده هو عدم فتح الصفقة في المنصة أو الحساب
الصفقات ستفتح داخليا وفق ستوب لوز وهدف إفتراضي
كمثال لطريقة العمل مثلا سأفتح صفقة بعد 3 صفقات إفتراضية أو فتح صفقتين متتاليتين حقيقيتين بعد 3 صفقات إفتراضية
أو فتح صفقة بعد 5 صفقات إقتراضية وتكون دون الأخذ بعين الإعتبار تقاطع الموفينجات إذا كانت الصفقة الخامسة الإفتراضية شراء سيفتح السادسة الحقيقية شراء
مرفق محاولتي أرجو من فضلك توضيح الأخطاء و طريقة العمل :hands:
وبارك الله فيك :eh_s(7):
أولا بالنسبه للأخطاء
خطأ 130 وضع ستوب لوز أو هدف خاطئ تأكد من الهدف والأستوب لوز الذي قمت بتحديدهم
خطأ 138 إعادة تسعير وهذا لأنك وضعت سعر الدخول Buy_Price و Sell_Price أي أنها ستكون دخول معلق فسوف تستخدم
OP_BUYLIMIT و OP_BUYSTOP و OP_SELLLIMIT و OP_SELLSTOP
إستخدام لشرط LastOrder خاطئ فأنت جعلته بهذا الشكل
هكذا أنت طبقت شرط LastOrder على الأستوب لوز فقط وليس على فتح وإغلاق الصفقات فيجب أن تجعلهكود PHP:if(LastOrder!=1)
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;}
أو أن تضيف الشرط مع شرط عدد الصفقاتكود PHP:if(LastOrder!=1){
ونفس الشيء بالنسبه للبيعكود PHP:if(orderstotal()<1&&LastOrder!=1){
وعليكم السلام ورحمة الله وبركاته
أولا تعريف المتغيرات في الداله الخارجيه
ثانيا لن تستخدم orderstotal فليس لها علاقة بالموضوع فنحن نبحث عن الشروط ولا نبحث عن عدد الصفقات المفتوحهكود PHP:int NumBuyOrder();
{
int c=0;
int total = OrdersTotal();
for (int cnt=0 ; cnt >= total)
{
if (ma22<ma11&&ma2>ma1 && Time0!=Time[0]; ){ virsutalOrder = "Buy" ; xbid==Bid ;Time0=Time[0]};
if(Bid>=xbid+xTakeProfit) TypeOrder =="Profit" ;
else
if(Bid<=xbid-xStopLoss) TypeOrder =="loss" ;
if(TypeOrder =="Profit" || TypeOrder =="loss")
}{
c++;
}
return(c);
}
int NumSellOrder();
{
int c=0;
int total = OrdersTotal();
for (int cnt=0 ; cnt >= total)
{
if (ma22>ma11&&ma2<ma1 && Time0!=Time[0]; ){ virsutalOrder = "Buy" ; xbid==Bid ;Time0=Time[0]};
if(Bid<=xbid+xStopLoss) TypeOrder =="Profit" ;
else
if(Bid>=xbid-xTakeProfit) TypeOrder =="loss" ;
if(TypeOrder =="Profit" || TypeOrder =="loss")
}{
c++;
}
return(c);
}
هذي الفكره كنت عملتها سابقا في إكسبرت بطريقه أبسط وبدون إستخدام دوال فقط إستخدمت GlobalVariableSet و GlobalVariableGetكود PHP:int total = OrdersTotal();
for (int cnt=0 ; cnt >= total)
{
إذا كنت تريد إستخدام الدوال الخارجيه فما الذي تريد عمله بالضبط ؟
طيب لو عايز الإكسبيرت يبيع أو يشتري بمجرد لمس مستوى على الـ rsi
يعني مثلا يشتري لو لمس مستوى 20
والهدف يكون 50 نقطة
ولو عكس السعر يبرد كل 50 نقطة ( والهدف للكل نقطة دخول العقد الأول )
-----------------
ممكن مثال لكود الشراء
وياريت توضيح لموضوع التبريد ده عشان أول مرة أتعامل معاه
وفي بعض إكسبيرتك يا أستاذ أسامة بلاقي
HideTP & HideSL
مش فاهم يعني إية ممكن توضيح ؟
يعني أنا دلوقتي عملت الإكسبيرت إللي في المرفقات ده
المفروض إنه يشتري لما الـ rsi يلمس مستوى 35 / ويبيع لما الـ rsi يلمس 65
والهدف 50 نقطة
ولو عكس يبرد كل 50 ( أنا إستخدمت المضاعفات على أساس Multiplier =1 يعني نفس قيمة العقد الأول )
لو عايز يبقى أهداف كل عقود التبريد تكون نقطة دخول العقد الأول ---- تكون إزاي ؟
والإكسبيرت إللي أنا عملته مش بيفتح أي عملية ( مرفق )
بدلا من إستدعاء مؤشر الآر إس آي للشمعه السابقه
سوف تستخدم الشمعه الحاليهكود PHP:double rsi=iRSI(Symbol(),0,14,PRICE_CLOSE,1);
ثم تبدأ المقارنه كالعادهكود PHP:double rsi=iRSI(Symbol(),0,14,PRICE_CLOSE,0);
بالنسبه للتبريد فالفكره في أن نقوم بعمل داله لمعرفة سعر إفتتاح الصفقه ثم تكون الصفقه التاليه يتم الدخول فيها بعد أن يتحرك السعر عدد نقاط معينه خساره
لذلك مثال دالة لمعرفة سعر إفتتاح آخر صفقه
ثم تضع شرط مثلا في البيع سيصبحكود PHP:double lastopenendprice()
{
for(int i=OrdersTotal();i>0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
return(OrderOpenPrice());
}
}
return(0);
}
وفي الشراء سيصبحكود PHP:if(Bid-lastopenedprice()>20*Point)
كود PHP:if(lastopenedprice()-Ask>20*Point)
هذه المتغيرات لإخفاء الهدف والأستوب لوز
فمثلا إذا كانت خاصية HideTP ترو فعندما يقوم الإكسبرت بفتح الصفقه لن يضع الهدف الحقيقي لكن سيضع بدلا منه 0 ثم بداخل الإكسبرت نفسه يقوم بحساب عدد النقاط التي تربحها الصفقه وعندما تصل إلى عدد نقاط الهدف يتم غلق الصفقه بإستخدام دالة غلق الصفقات