رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة spiders101
قمت بإضافة الخاصية للاكسيبرت ولكن وجدت الكود كتب بشكل مختلف فـ اكسيبرت آخر .
دالة LotManage()
كود PHP:
double LotManage(){
double lot = MathCeil(AccountBalance() * RiskPercent / 1000) / 100;
if(lot<MarketInfo(Symbol(),MODE_MINLOT))lot=MarketInfo(Symbol(),MODE_MINLOT);
if(lot>MarketInfo(Symbol(),MODE_MAXLOT))lot=MarketInfo(Symbol(),MODE_MAXLOT);
return (NormalizeDouble(lot,Lot_Digits));
}
وتم تعريف الـ
كود PHP:
extern int Lot_Digits=2;
لماذا تم وضع Lot_Digits مع الـ lot فـ أمر الـ return
كود PHP:
return (NormalizeDouble(lot,Lot_Digits));
ده الإستخدام الصحيح لإن بدون NormalizeDouble قد يكون اللوت بهذا الشكل 0.1001 ولن تقبله المنصة
بتستخدم NormalizeDouble لتقؤيب حجم اللوت لعدد معين وهو هنا Lot_Digits بحيث يكون Lot_Digits هو عدد الأرقام بعد الفاصلة العشرية إللي بتقبله المنصة
فلو اللوت بالشكل ده 0.1001 بعد التقريب سيكون 0.10 أي 0.1
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
تأكد من الشرط
فربما أنك إستخدمته في جزء آخر من الكود وأصبح
بالتالي لن يفتح صفقه إلا في الشمعه التاليه
تأكدت منه أخي أسامه وهو مكتوب مع الشروط بهذا الشكل
ومكتوب بعد أمر البيع و الشراء
PHP]Time0=Time[0]; [/PHP]
و الإكسبيرت لا يتأخر بمقدار شمعه كامله في وضع الأوامر و لكن يتأخر فقط دقائق قد تصل إلى خمس دقائق حتى يظهر فوق باليسار programmed by ... ثم يضع الأوامر .
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة xcv114
كود PHP:
return (NormalizeDouble(lot,Lot_Digits));
ده الإستخدام الصحيح لإن بدون NormalizeDouble قد يكون اللوت بهذا الشكل 0.1001 ولن تقبله المنصة
بتستخدم NormalizeDouble لتقؤيب حجم اللوت لعدد معين وهو هنا Lot_Digits بحيث يكون Lot_Digits هو عدد الأرقام بعد الفاصلة العشرية إللي بتقبله المنصة
فلو اللوت بالشكل ده 0.1001 بعد التقريب سيكون 0.10 أي 0.1
نعم قد تحدث مثل هذه الأخطـاء ، وتم التعديل .
اقتباس:
المشاركة الأصلية كتبت بواسطة xcv114
حاول يا محمد تجمع أكواد الإكسبيرت شوية منعا للخبطة
يعني مثلا شروط تحديد اللوت إنت عامل شوية في شروط البيع والشراء وشوية في إستارت
حاول تجمعهم عشان الإكسبيرت كده بيعدي على أول شرط مثلا MoneyManagement ويقوم محدد اللوت على أساس رأس المال وبعد كده بيعدي على شرط تحديد اللوت حسب ربح أخر صفقة ولو أخر صفقة خسرانة بيغير حجم اللوت وبعد كده بيدخل على شروط البيع والشراء يلاقي شروط تانية لتحديد قيمة اللوت
حاول تجمعهم في شرط واحد في إستارت بحيث تكون عارف مع كل حالة اللوت النهائي هيكون إية بإستخدام if و else if
يعني مثلا بالشكل ده
كود PHP:
if(profit()<0 && Use_Mult==true){Lots=lastlot2()*Multiplier;}
else if(profit()>0 && UseMoneyManagement==true){Lots=LotManage();}
else if(UseMultiplier&& WinorLoss()==false){Lots=lastlot()*Multiplier;}
وطبعا إنت تعدل في الكود لإن ده مجرد مثال
ورتب الشروط بحيث ما يكونش في تضارب بينها
--------------
التضارب عندك في إنك إستخدمت
كود PHP:
else {Lots=Firstlot;}
وبما إن الإكسبيرت يقرأ من فوق لتحت فإنه يمر على شرط UseMoneyManagement ويحدد اللوت
ولو الصفقة الأخيرة رابحة أو Use_Mult==false فإنه سيمر على شرط كود PHP:
else {Lots=Firstlot;}
ويقوم بتغير اللوت مرة أخرى
كلامك صحيح استاذ يوسف الأكواد كانت تحتاج الى تجميع وتنظيم ولحل التضارب وضعت الشرط كالتالى ..
كود PHP:
if(Use_Mult){
if(profit(OP_BUY)<0 ||profit(OP_SELL)<0 ){Lots=lastlot2()*Multiplier;}
else {Lots=Firstlot;}
}
ولكن هل استخدام else if أو if فقط فـ الأكواد التالية قد يؤثر على عمل الاكسيبرت او عمل بعض الأكواد !!
كود PHP:
//---------Conditions for Closing Orders by Opposite Signals & USD_Profit & lossratio -----//
if(AccountProfit()>=USD_Profit && Use_USD_Profit==true){CloseOrders();}
else if(AccountProfit()<=-(lossratio*AccountBalance()/100) && LossRatio==true){CloseOrders();}
else if(up>1 && up2==-1 && CloseOppositeSignals==true){
closeorders(OP_SELL);}
else if(down>1 && down2==-1 && CloseOppositeSignals==true){
closeorders(OP_BUY);}
//---------Use_Mult & Multiplier & FiboMultiplier ---------------//
else if(Use_Mult){
if(profit(OP_BUY)<0 ||profit(OP_SELL)<0 ){Lots=lastlot2()*Multiplier;}
else {Lots=Firstlot;}
}
else if(UseMultiplier){
if(WinorLoss()==false){Lots=lastlot()*Multiplier;}
if(WinorLoss()==true){Lots=Firstlot;}
}
else if(UseFiboMultiplier){
if(WinorLoss()==false){
if(NumberOfLosses()==1)Lots=LastLot(MagicNumber,1);
else {Lots=LastLot(MagicNumber,1)+LastLot(MagicNumber,2);}
}
else if(WinorLoss()==true){Lots=Firstlot;}
}
//---------Money Managment -------------------------//
else if(UseMoneyManagement){Lots=LotManage();}
//---------trailing stop----------------------------//
else if(TrailingStop>0)MoveTrailingStop();
else if(BreakEven>0)MoveBreakEven();
//-------------------------------------------------//
وهل الكود الخاص بالمضاعفات التالى يوجد به أخطـاء لأنه سبب مشاكل فى بعض الأحيان مع اكسيبرتات أخرى من قبل
كود PHP:
if(Use_Mult){
if(profit(OP_BUY)<0 ||profit(OP_SELL)<0 ){Lots=lastlot2()*Multiplier;}
else {Lots=Firstlot;}
}
2 مرفق
رد:موضوع مخصص للأسئلة البرمجية
استاذ اسامة ، انا قمت بمحاولة لدمج المؤشرين بالمرفقات فـ مؤشر واحد بالمرفقات ايضـا ، ولكن الآن توجد مشكلة عدم اتفاق قيم المؤشرين ، احدهما أخذ قيم كبيرة والآخر قيم صغيرة ولم أستطع تعديل القيم حتى تتفق معـا .
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
قد يكون السبب في أن الهدف والأستوب قليل في بعض العملات فحسب ما تقول أغلب المشكله مع الباوند ين فربما السبب لأن الإسبريد لها كبير بالتالي الهدف والاستوب 10 نقاط تعتبر قليله فيظهر هذا خطأ قم بزيادة الهدف والأستوب قليلا وقم بإستخدام الداله NormalizeDouble لتعديل نقاط الهدف والأستوب لوز
انا مستخدم بالفعل NormalizeDouble للتارجت والاستوب وايضـا سعر الأسك والبيد ، ولكن لم أفهم مشكلة الهدف والأستوب قليل هل قصدك ان المنصة لاتقبل تارجت او استوب 10 نقط لزوج الباوند ين وتقبله لباقى الأزواج !! ، مع ان هذه المشكلة لم تظهر مع منصة FXDD بتارجت واستوب 10 نقط للباوند ين ، وانا جعلت التارجت والاستوب 20 نقطة للباوند ين وفتح صفقة وعمل مودفاى ايضا للتارجت والاستوب ، ولكن سأتابع الاكسيبرت فترة للتأكد من ذلك .
3 مرفق
رد:موضوع مخصص للأسئلة البرمجية
استاذ اسامة ، انا قمت بعمل اكسيبرت بسيط لمؤشر الهايكن أشى الموجود بالميتاتريدر فتح وإغلاق الصفقة مع تغير إشارة الهايكن والاكسيبرت يعمل بشكل جيد ، وقمت بعد ذلك بعمل اكسيبرت لمؤشر الهايكن أشى المرفق كود PHP:
Heiken_Ashi_Smoothed_Alert[1]
ولكن وجدت الاكسيبرت فى بعض الأحيان لايخرج من الصفقة مع تغير لون شموع الهايكن مع ان الشروط هى نفسها المستخدمة فـ الاكسيبرت الآخر ، فـ هل يوجد مشكلة فـ المؤشر تسبب هذا الخطـأ واذا كانت توجد مشكلة كيف يمكن تعديلها ليعمل بشكل صحيح .
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة spiders101
استاذ اسامة ، انا قمت بعمل اكسيبرت بسيط لمؤشر الهايكن أشى الموجود بالميتاتريدر فتح وإغلاق الصفقة مع تغير إشارة الهايكن والاكسيبرت يعمل بشكل جيد ، وقمت بعد ذلك بعمل اكسيبرت لمؤشر الهايكن أشى المرفق
كود PHP:
Heiken_Ashi_Smoothed_Alert[1]
ولكن وجدت الاكسيبرت فى بعض الأحيان لايخرج من الصفقة مع تغير لون شموع الهايكن
مع ان الشروط هى نفسها المستخدمة فـ الاكسيبرت الآخر ، فـ هل يوجد مشكلة فـ المؤشر تسبب هذا الخطـأ واذا كانت توجد مشكلة كيف يمكن تعديلها ليعمل بشكل صحيح .
أخي سبايدر ارفقت لك اكسبيرت للمؤشر الذي حضرتك ارفقته و فيه القيم الخاصة بتح أو اغلاق عقد بعد ثبات اللون ، تقبل تحياتي