أخي أسامه سؤال بعد إذنك ,,,,
بالنسبه للماجيك نمبر لو أنا فاتح شارتات كتير لعملات مختلفه و شارتات لنفس العمله و حاطط نفس الإكسبيرت ,,, لازم يكون الماجيك مختلف على كل شارت ؟؟ ولو إكسبيرتات مختلفه نفس الكلام برده ؟
Printable View
أخي أسامه سؤال بعد إذنك ,,,,
بالنسبه للماجيك نمبر لو أنا فاتح شارتات كتير لعملات مختلفه و شارتات لنفس العمله و حاطط نفس الإكسبيرت ,,, لازم يكون الماجيك مختلف على كل شارت ؟؟ ولو إكسبيرتات مختلفه نفس الكلام برده ؟
استاذ اسامة فـ الاكسيبرت المرفق ، قمت باضافة دالة لاغلاق الصفقات مع ظهور الاشارة العكسيـة
ووضع شروطها مع شرط المؤشر ،
هل الكود صحيح بعد التعديل ،، وهل يوجد طريقة أسهل من ذلك لإضافة شرط الاغلاق للاشارة العكسية مع شروط المؤشر لأنى قمت بوضع شروط الشراء مرتين وكذلك البيع !!
الطريقة السابقه سوف تصلح في حال أنك إستخدمت المضاعفات مع عدم إغلاق الصفقة الخاسره بحيث الداله
سوف تعود بقيمة الصفقات المفتوحهكود PHP:orderstotal()
لكن في هذا الإكسبرت الصفقات الخاسره تغلق بالتالي هذا الشرط لن يتحقق أبدا وسوف يظل يفتح مضاعفات
لذلك يمكنك مثلا وضع عداد مع كل صفقة مضاعفات تفتح يزيد العداد 1 بحيث تحسب عدد المضاعفات التي فتحت
وعندما تغلق صفقة على ربح يصفر العداد حتى يبدأ من جديد
وأيضا شرط عندما يصل إلى أقصى مضاعفه يصبح حجم اللوت هو حجم اللوت الإبتدائي
مثال
مرفق الإكسبرت بعد التعديلكود PHP:if(UseMultiplier&&Multi_Numbers<MaxMultiplierOrders)
{
if(WinorLoss()==false){
Lots=lastlot()*Multiplier;Multi_Numbers++;}
}
else Lots=Firstlot;
if(WinorLoss()==true){
Lots=Firstlot;Multi_Numbers=0;}
سوف تستخدم الحلقه for للبحث عن آخر شمعة ظهر عندها السهم سواء شراء أو بيع
مثال
ثم سيكون رقم الشمعة التي ظهر عندها آخر سهم هي barnumber ومنها يمكنك تحديد الشراء إذا كان الإغلاق أكبر من الهاي لهذه الشمعهكود PHP:int barnumber;
for(int i=1;i<Bars;i++){
double up=iCustom(Symbol(),0,"arrow",0,i);
if(up<5000){
barnumber=i;
break;
}
}
كود PHP:if(Close[1]>High[barnumber])
{
// buy
}
أنت وضعت شروط التنبيه
وهذا خاطئكود PHP:if (ld_28 > ld_36 && ld_28 > 0.0 || (SoundAlert == true) ){ld_44 = ld_28;PlaySound("alert.wav");}
if (ld_36 > ld_28 && ld_36 > 0.0 || (SoundAlert == true) ){ld_52 = ld_36;PlaySound("alert.wav");}
بهذه الطريقة انت تقارن إذا تحقق الشرط أكبر من 0 أو كان SoundAlert يساوي true وفي هذه الحاله سوف يتحقق الشرط دائما فيجب أن تغير الشرط بحيث عند تحقق الشروط وكان التنبيه تفعيل فيتم التنبيه
جرب إضافة هذا الجزء OrderSelect
ليصبح
كود PHP:if(Ticket>0){
OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES);
SL=High[iHighest(Symbol(),PERIOD_H1,2,50,1)];
TP=OrderOpenPrice()-((SL-OrderOpenPrice())*2);
OrderModify(Ticket,OrderOpenPrice(),SL,TP,0,Red);}
Print(SL,"___",TP);
}
ألف شكر أستاذ أسامة على إجابة السؤالين
بس للأسف عندي سؤال كمان
أنا عايز
لو أخر عملية مغلقة كانت خسرانة ولو فرضا أنا داخل بلوت 1
العملية إللي بعدها تكون بـ 2 لوت
وسواء العملية التانية خسرت أو ربحت يعود مرة أخرى للوت الأساسي 1
لماذا قمت بإضافة أوامر البيع والشراء مرتين
يمكنك فصل أمر إغلاق الصفقات عن أوامر البيع وشراء مثلا
ثم ستجعل أوامر الدخول في الصفقه كما هيكود PHP:if(up1<5000 && down2<5000 && CloseOppositeSignals==true){
CloseSellOrders();
}
if(down1<5000 && up2<5000 && CloseOppositeSignals==true){
CloseBuyOrders();
}
شرط فتح الصفقات لن يكون مرتبط بأي حال بشرط إغلاق الصفقات فكل جزء سيكون منفصل
كود PHP:
if(up1<5000 && down2<5000 && CloseOppositeSignals==true){
CloseSellOrders();
}
if(down1<5000 && up2<5000 && CloseOppositeSignals==true){
CloseBuyOrders();
}
if(up1<5000 && down2<5000 ){
if(orderstotal()<MaxTrades){
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
if(UseMultiplier==true)
{
if(WinorLoss()==false)Lots=lastlot()*Multiplier;
if(WinorLoss()==true)Lots=Firstlot;
}
OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,digits),5*Q,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits)," EA",MagicNumber,0,Blue);
}
}
if(down1<5000 && up2<5000){
if(orderstotal()<MaxTrades){
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*Point;}
if(UseMultiplier==true)
{
if(WinorLoss()==false)Lots=lastlot()*Multiplier;
if(WinorLoss()==true)Lots=Firstlot;
}
OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,digits),5*Q,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits)," EA",MagicNumber,0,Red);
}
}