النتائج 2,386 إلى 2,400 من 10363
الموضوع: موضوع مخصص للأسئلة البرمجية
- 03-07-2012, 07:50 PM #2386
- 03-07-2012, 09:08 PM #2387
رد:موضوع مخصص للأسئلة البرمجية
- 04-07-2012, 12:58 AM #2388
رد:موضوع مخصص للأسئلة البرمجية
آخر تعديل بواسطة spiders101 ، 04-07-2012 الساعة 01:19 AM
- 04-07-2012, 01:20 AM #2389
الداله
تعود بقيمة البيانات المدرجه في نافذة Market Watch فالإكسبرت يجلب من هذه النافذه ولو لاحظت عند عمل باك تست سوف تجد خانة Symbol properties لو ضغطت عليها سوف تجد جميع بيانات العمله التي ستعمل لها الباك تست ومنها الإسبريدكود PHP:MarketInfo( string symbol, int type)
يمكن تغيير الإسبريد في الميتاتريدر وبما أنك ذكرت السؤال فسوف أشرحها في موضوع مستقل
- 04-07-2012, 01:30 AM #2390
قد يكون السبب في أن الهدف والأستوب قليل في بعض العملات فحسب ما تقول أغلب المشكله مع الباوند ين فربما السبب لأن الإسبريد لها كبير بالتالي الهدف والاستوب 10 نقاط تعتبر قليله فيظهر هذا خطأ قم بزيادة الهدف والأستوب قليلا وقم بإستخدام الداله NormalizeDouble لتعديل نقاط الهدف والأستوب لوز
- 04-07-2012, 01:06 PM #2391
- 04-07-2012, 03:05 PM #2392
رد:موضوع مخصص للأسئلة البرمجية
شكرا جزيلا أخي أسامه تم التعديل و الإكسبيرت يضع الأوامر الآن و لكن لاحظت ان الإكسبيرت يضع فقط الباي ستوب و لا يضع السيل ستوب و عندما أقوم بإلغاء تفعيل الباي ستوب أو مسح شروط الباي ستوب أجده يضع السيل ستوب ... و لا يضع الإثنان معا لا اعلم لماذا ؟؟
أيضا لاحظت تأخر الإكسبيرت حتى يتفعل لمده تصل خمس دقائق ..
رجاء الإطلاع
و بارك الله فيك
الإكســــــــــــــــــبيرت
- 04-07-2012, 07:25 PM #2393
رد:موضوع مخصص للأسئلة البرمجية
استاذ اسامة ، الاكسيبرت المرفق بعد إضافة مضاعفات فيبوناتشي ظهرت مشكلة بسيطة ، وهى انه بعد فتح صفقة رابحة وبعدها صفقة خاسرة الصفقة التى تليها يتم حساب المضاعفات لها بطريقة خطـأ ، وانا أريد ان يبدأ فـ فتح صفقات المضاعفات مرة أخرى بنفس الطريقة 1-2-3-5-8-13-21-34-55-89 وذلك بعد آخر صفقة أغلقت على خسارة ، مرفق صورة للتوضيح .
- 04-07-2012, 08:55 PM #2394
هذا لأنك وضعت الشرط
فبالتالي عندما يضع الأمر المعلق الأول وعند المقارنه مره أخرى مع الأمر الثاني فلن يتحقق هذا الشرط بالتالي لن يضعهكود PHP:MyBuyPendingOrdersTotal(MagicNumber)==0
إجعل شروط أوامر البيع والشراء المعلقه في جملة شرطيه واحده
مثال :
كود PHP:if (MyBuyPendingOrdersTotal(MagicNumber)==0 && Time0!=Time[0]) {
if((TimeCurrent()-LastClosedOrderTime())/60/60>=99999){
if(StopLoss==0||HideSL){SL=0;}else{SL=Ask-StopLoss*point;}
if(TakeProfit==0||HideTP){TP=0;}else{TP=Ask+TakeProfit*point;}
if(UseRecTP)TP=(buy+TP_R);
if(UseRecSL)SL=(buy-SL_R);
if(USE_BUYSTOP==TRUE) OrderSend(Symbol(),OP_BUYSTOP,Lots1,NormalizeDouble(buy,Digits),3,SL,TP,"first",MagicNumber,0,Green);
////////
if(StopLoss==0||HideSL){SL=0;}else{SL=Bid+StopLoss*point;}
if(TakeProfit==0||HideTP){TP=0;}else{TP=Bid-TakeProfit*point;}
if(UseRecTP)TP=(sell-TP_R);
if(UseRecSL)SL=(sell+SL_R);
if(USE_SELLSTOP==TRUE) OrderSend(Symbol(),OP_SELLSTOP,Lots1,NormalizeDouble(sell,Digits),3,SL,TP,"first" ,MagicNumber,0,Green);
PlaySound("Alert.wav");
Time0=Time[0];
}
}
- 04-07-2012, 08:57 PM #2395
رد:موضوع مخصص للأسئلة البرمجية
استاذ اسامة ، كيف اضيف خاصية الـ UseMoneyManagement للاكسيبرت المرفق
- 04-07-2012, 09:06 PM #2396
السبب في الآتي
المفروض في أول صفقه خاسره مثلا 1 لوت فالمضاعفه الأولى تكون 1 لوت أيضا ثم المضاعفه الثانيه يتم جميع آخر صفقتين وهكذا
لذلك يجب أن تضيف شرط إذا كانت أول صفقه خاسره فحجم اللوت سيكون نفسه
يمكنك عمل داله لحساب عدد الصفقات الخاسره المتتاليه
ثم ستضيف شرطكود PHP:int NumberOfLosses(){
int N;
for(int i=OrdersHistoryTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
if(OrderProfit()>0){
return(N);
}
else{
N++;
}
}
}
return(N);
}
كود PHP:if(WinorLoss()==false){
if(NumberOfLosses()==1)Lots=LastLot(MagicNumber,1);
else {Lots=LastLot(MagicNumber,1)+LastLot(MagicNumber,2);}
}
- 05-07-2012, 12:28 AM #2397
- 05-07-2012, 02:27 AM #2398
رد:موضوع مخصص للأسئلة البرمجية
قمت بإضافة الخاصية للاكسيبرت ولكن وجدت الكود كتب بشكل مختلف فـ اكسيبرت آخر .
دالة 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));
}
لماذا تم وضع Lot_Digits مع الـ lot فـ أمر الـ returnكود PHP:extern int Lot_Digits=2;
- 05-07-2012, 03:52 AM #2399
رد:موضوع مخصص للأسئلة البرمجية
استاذ اسامة انا اريد كود يقوم بمضاعفة الصفقات المفتوحة فـ حالة خسارتها ، اى اذا كانت أخر صفقة مفتوحة بيع أو شراء البروفت لها سالب يقوم بمضاعفة العقد التالى .
انا استخدمت من قبل هذا الكود لعمل ذلك
وقمت بتعريف دوالكود PHP:if(profit(OP_BUY)<0 ||profit(OP_SELL)<0 && Use_Mult==true){Lots=lastlot2()*Multiplier;}
else {Lots=Firstlot;}
كود PHP:double profit(int type)
{
double pr;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&& type==OrderType()){
pr=OrderProfit(); // Profit For last opened Trade olny , If ALL opened Trades Use pr=pr+OrderProfit(); //
}
}
return(pr);
}
كود PHP:double lastlot2(){
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
double lotsnumber=OrderLots();
}
}
return(lotsnumber);
}
وتعريف متغير خارجى
كود PHP:extern bool Use_Mult=false;
ولكن الغريب ان الاكسيبرت لايفتح العقود بإستخدام خاصية MoneyManagement مع وجود هذا الشرط فـ الاكسيبرت وعند حذفه تعمل الخاصية !!آخر تعديل بواسطة spiders101 ، 05-07-2012 الساعة 04:07 AM
- 05-07-2012, 06:40 AM #2400
رد:موضوع مخصص للأسئلة البرمجية
حاول يا محمد تجمع أكواد الإكسبيرت شوية منعا للخبطة
يعني مثلا شروط تحديد اللوت إنت عامل شوية في شروط البيع والشراء وشوية في إستارت
حاول تجمعهم عشان الإكسبيرت كده بيعدي على أول شرط مثلا 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;}
ورتب الشروط بحيث ما يكونش في تضارب بينها
--------------
التضارب عندك في إنك إستخدمت
وبما إن الإكسبيرت يقرأ من فوق لتحت فإنه يمر على شرط UseMoneyManagement ويحدد اللوتكود PHP:else {Lots=Firstlot;}
ولو الصفقة الأخيرة رابحة أو Use_Mult==false فإنه سيمر على شرطويقوم بتغير اللوت مرة أخرىكود PHP:else {Lots=Firstlot;}
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM
الأكثر زيارة

رد مع اقتباس
.gif)
