النتائج 2,161 إلى 2,175 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 25-05-2012, 02:43 PM #2161
رد:موضوع مخصص للأسئلة البرمجية
أستاذ أسامة
هل توجد طريقة أسهل لإستخراج الأعلى والأقل من بين قيم معينة
يعني لو عندنا 6 قيم لو إستخدمنا MathMax و MathMin هتكون بالشكل ده
لإستخراج الأكبر
كود PHP:double Higher1=MathMax(USD(),EUR());
double Higher2=MathMax(GBP(),JPY());
double Higher3=MathMax(AUD(),CHF());
double Final =MathMax(Higher1,Higher2);
double Final_H=MathMax(Final,Higher3);
- 25-05-2012, 07:22 PM #2162
- 26-05-2012, 03:53 PM #2163
رد:موضوع مخصص للأسئلة البرمجية
الله يخليك كده فعلا أسهل كتير بدل الـ 100 متغير إللي كنت عاملهم
-----------
سؤال كمان بعد إذنك
لو مثلا في أكتر من عملية على أكتر من عملة مفتوحة مثلا
EURUSD - GBPUSD - USDCHF
وعايز الإكسبيرت ما يفتحش عمليات تانية على اي منهم طالما مفتوحين قبل كده
الدالة العادية إللي بالشكل ده
كود PHP:string LastOrderSymb(){
string Lastsymbol;
for(int i =0;i<=OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==MagicNumber)Lastsymbol=OrderSymbol();
}
return(Lastsymbol);
}
أنا بقى عايز دالة تبحث كل أسماء العملات المفتوحة بحيث ما يفتحش عليها تاني
أنا فكرت في دالة من النوع bool بحيث تعود بـ false لو إسم العملة المفتوحة كذا وأضعها شرط في البيع والشراء
بس المشكلة إن الإكسبيرت بيشتغل على 15 عملةآخر تعديل بواسطة xcv114 ، 26-05-2012 الساعة 03:55 PM
- 26-05-2012, 04:43 PM #2164
رد:موضوع مخصص للأسئلة البرمجية
هل ممكن أعملها بالشكل ده
كود PHP:string AllOpenSymbs(){
string Lastsymbol;
string AOpenSymbs;
for(int i =0;i<=OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==MagicNumber){
Lastsymbol=StringSubstr(OrderSymbol(),0,6);}
AOpenSymbs=AOpenSymbs+Lastsymbol;
}
return(AOpenSymbs);
}
كود PHP:string AllSymbs=AllOpenSymbs();
كود PHP:if(Final_H==EUR && Final_L==USD && StringFind(AllSymbs,"EURUSD",0)==-1)Symb="EURUSD"+add_char;
كود PHP:if(Final_H==GBP && Final_L==USD && StringFind(AllSymbs,"GBPUSD",0)==-1)Symb="GBPUSD"+add_char;
فهل ده حل صحيح ؟
- 26-05-2012, 05:40 PM #2165
- 26-05-2012, 06:26 PM #2166
- 27-05-2012, 01:41 AM #2167
الحل الأول هو كما ذكرت مثلا أن تقوم بعمل داله لتقارن بين إسم العمله وهل هي مفتوحه أو لا
كود PHP:bool isopenedbefore(string sym){
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==sym&&OrderMagicNumber()==MagicNumber)return(true);
}
return(false);
}
حل آخر يمكنك عمل مصفوفه بحيث ستحفظ جميع أسماء العملات المفتوحه
تقوم بتعريف مصفوفه لتحتوي على أسماء العملات
كود PHP:string symbolsname[];
كود PHP:void OpendOrdersSymbol(){
ArrayResize(symbolsname,OrdersTotal());
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==MagicNumber)symbolsname[i]=OrderSymbol();
}
}
كود PHP:for(int i=0;i<OrdersTotal();i++){
if(symbolsname[i]=="EURUSD")
return;
}
- 27-05-2012, 04:41 AM #2168
- 27-05-2012, 04:49 AM #2169
رد:موضوع مخصص للأسئلة البرمجية
أستاذ أسامة ، أريد المساعدة فـ معرفة مكان الخطـأ فـ الاكسيبرت المرفق
الاكسيبرت المفترض يقوم بعمل التالى ..
اذا ظهر سهم أزرق وأغلقت الشمعة التى ظهر عليها السهم أعلى السحابة .
يفتح صفقة شراء .
واضفت خاصية Use_Candle_Retest ، Candle_Length
لتحديد اذا كان جسم الشمعة أكبر من عدد محدد من النقاط مثلا 70 نقطة ،
يقوم بفتح صفقة عندما يعود السعر لمنتصف جسم الشمعة التى جسمها 70 نقطة مثلا .
ولكن بعد عمل التعديلات السابقة لم يفتح صفقات !!
وقمت بإلغاء شروط البيع والذى يعمل فقط هو شرط الشراء الخاص بجسم الشمعة .
- 29-05-2012, 07:14 PM #2170
الآن أنت إستخدمت الحلقه for للبحث عن الشمعه وتحديد جسمها
كود PHP:for(int i=0;i<Bars;i++){
if(High[i]-Low[i] >=Candle_Length*point)double Price=(High[i]-Low[i])/2+Low[i];
if(Close[i]>Open[i])CandleBuy=true;
if(Close[i]<Open[i])CandelSell=true; }
فيجب أن تضع شرط آخر بحيث تقارن فقط الشمعه التي يظهر عندها السهم أو حسب ما تريد فلا أعلم الإستراتيجية تماما ثم تستخدم الأمر break لإنهاء الحلقه بعد التأكد من الشروط فأنت لا تريد إلا البحث في شموع محدده
وهذا سبب الخطأ عندك
فسوف ترى أن قيمة Price في كل مره ستتغير حتى تنتهي الحلقه وسوف تصبح قيمتها هي آخر شمعه على الشارت مثلا لو كانت الشمعه رقم 1000 فسوف يصبح في النهاية
كود PHP:double Price=(High[1000]-Low[1000])/2+Low[1000];
كود PHP:for(int i=0;i<Bars;i++){
double up_m =iCustom(NULL,0,"auto recommended",2,i);
if(High[i]-Low[i] >=Candle_Length*point&&up_m>1){
double Price=(High[i]-Low[i])/2+Low[i];
if(Close[i]>Open[i])CandleBuy=true;
if(Close[i]<Open[i])CandelSell=true;
break;
}
}
- 30-05-2012, 06:29 PM #2171
- 30-05-2012, 06:41 PM #2172
رد:موضوع مخصص للأسئلة البرمجية
استاذ أسامة ، يوجد مشكلة غريبة فـ الاكسيبرت المرفق ، يعمل بشكل جيد فـ الباك تست
على منصة fxdd ، ولكن بعض الأخوه ذكرو انه لايفتح صفقات عند العمل لايف أو لايفتح بعض الصفقات
فـ ما السبب فـ ذلك ، المفترض انه يعمل لايف كما يعمل عند الباك تست !!
ويوجد مشكلة أخرى انه عند فتح الصفقات بالاكسيبرت ثم إغلاق المنصة وفتحها يقوم بفتح نفس
الصفقات مره أخرى مع العلم أنها مفتوحة مسبقا !!
مرفق الاكسيبرت والمؤشرات والسيت فايل .
- 31-05-2012, 01:40 PM #2173
أستاذ أسامة عايزين ولو محاضرة واحدة ساعتين في برمجة المؤشرات
في أي وقت تكون فاضي فيه
لإني ضايع خالص في المؤشرات
- 31-05-2012, 03:47 PM #2174
السبب لأنك جعلت MaxTrades =3 فبالتالي هذا الشرط لن يفيد في حال أغلقت الإكسبرت وقمت بفتحه أيضا شرط
كود PHP:T!=Time[0]
لذلك يمكنك بدلا من إستخدام متغير T أن تستخدم المتغيرات العامة Global Variables
مثلا عند فتح الصفقه سوف تجعل
كود PHP:GlobalVariableSet("T",Time[0]);
كود PHP:GlobalVariableGet("T")!=Time[0]
كود PHP:GlobalVariableDel("T")
كود PHP:GlobalVariableSet("T"+Symbol(),Time[0]);
حتى إذا وضعت الإكسبرت على أكثر من عمله يكون لكل عمله المتغير الخاص به
إذا كنت لا تريد إستخدام هذه المتغيرات يمكنك بإستخدام الدوال بدلا من المتغير T سوف تستخدم دالة تقوم بمعرفة توقيت فتح آخر صفقه
كود PHP:datetime LastOpenendOrder(){
for(int i=OrdersTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
return(OrderOpenTime());
}
}
return(0);
}
كود PHP:Time[0]>LastOpenendOrder()
- 31-05-2012, 03:51 PM #2175
بالنسبه لمشكلة اللايف والباك تست فالإكسبرت لا يوجد به أي أخطاء وهذه المشكله ذكروها لي أكثر من مره حتى في إكسبرتاتي السبب الوحيد إما أن حجم اللوت به خطأ أو عدم تفعيل الإكسبرت بشكل صحيح
أو أي خطأ آخر يجب التأكد من خانة Experts و Journal
قم بوضع تنبيه في الإكسبرت بحيث يظهر رقم الخطأ عند فتح الصفقه لأن بعض الإخوه لا يلاحظ الأخطاء التي تظهر في الجورنال
كود PHP:int ticket=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,digits),5*Q,0,0," EA",MagicNumber,0,Blue);
if(ticket<0)Alert("Order Send Error "+GetLastError());
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM