النتائج 4,291 إلى 4,305 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 30-08-2013, 07:00 AM #4291
رد:موضوع مخصص للأسئلة البرمجية
وعليكم السلام ورحمة الله وبركاته
سوف تقوم بقسمة رأس المال على المبلغ الذي تريده فمثلا هنا تريده كل 100 دولار بالتالي سيكون
كود PHP:int Percent=AccountBalance()/100;
ثم سيكون حجم اللوت للصفقة هو
كود PHP:double Lot=Percent*Per_100_usd;
كود PHP:if(DayOfWeek()=1&&TimeCurrent()-iTime(Symbol(),1440,0)<3600*WaitingHours)return;
هذا الشرط معناه إذا كان الفرق بين التوقيت الحالي و توقيت إفتتاح شمعة يوم الإثنين أقل من عدد ساعات معينه
في المتغير WaitingHours فلن يكمل الإكسبرت عمله
طبعا تضع الشرط في بداية كود الإكسبرت
- 30-08-2013, 07:03 AM #4292
رد:موضوع مخصص للأسئلة البرمجية
خطأ
التصحيح
كود PHP:MathAbs(Trigger-Ask)<20*Point;
حتى إذا كان السعر مثلا Trigger أقل من سعر الاسك بالتالي النتيجة ستكون 20 نقطة لكن بالسالب فبدلا من أن أضيف شرطين مره الرقم بالسالب ومره بالموجب قمت بإستخدام الداله فهي تقوم بتحويل القيمه السالبه مباشرة إلى القيمه الموجبه
والرقم 20 يحول إلى قيمة النقطه
- 30-08-2013, 07:10 AM #4293
- 30-08-2013, 03:07 PM #4294
- 30-08-2013, 06:58 PM #4295
رد:موضوع مخصص للأسئلة البرمجية
بعد التجربة ديمو لم يعمل الاغلاق الكلي للصفقات والأوامر المعلقة وبذلك قمت بتعديل مفصل لدوال الاغلاق للصفقات المفعلة وللصفقات المعلقة
وتمت التجربة مرة أخرى واشتغل الاغلاق كما يجب لكن لم تعمل جزئية الماجيك نمبر للاكسبيرتات حيث استمرت في المضاعفات ولم تبدأ باللوت الأساسي
ثم قمت بتعديل الماجيك نمبر حيث جعلتها موحدة بالاكسبيرتات باسم MagicNo عوض MagicNo1;MagicNo2 .... والماجيك نمبر الرئيسي MagicNo_EA
كود PHP:extern double MagicNo_EA=1;
int MagicNo;
int start()
{
MagicNo=MagicNo+MagicNo_EA;
double acc=AccountEquity();
if(Win_Stop&&(acc >=NewEquity))
{
CloseDeleteAll();
CloseDeleteAllCurrent();
CloseDeleteAllNonPending();
CloseDeleteAllCurrentNonPending();
MagicNo_EA=MagicNo_EA+1;
NewEquity=NewEquity+USDProfit;
}
Comment(NewEquity);
}
كود PHP:if((OrderType()==OP_BUY||OrderType()==OP_SELL)&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo)
أرجو مراجعة الاكسبيرت (بالمرفقات)
ولك الشكر الجزيل أستاذي الكريم
آخر تعديل بواسطة kira-h ، 30-08-2013 الساعة 07:09 PM
- 31-08-2013, 07:07 AM #4296
- 31-08-2013, 07:43 AM #4297
رد:موضوع مخصص للأسئلة البرمجية
أستاذ أسامه لو تكرمت لي سؤال آخر بخلاف الذي في الإقتباس .. و أعتذر لأني أتعبتك معي .. في ميزان حسناتك إن شاء الله ..
حاولت أقوم بعمل دوال و حساب معادله تعود لي بسعر التعادل في حالة فتح عقود من نفس النوع بأحجام مختلفه و من نقاط مختلفه كالتبريد المضاعف .. لأقوم بحسابها مثلا بعد خمس مضاعفات و أغلق الصفقات عند هذا السعر .
فقمت بتعريف خمس دوال كل داله تعود بسعر الافتتاح للصفقه رقم 1 و أخرى تعود بسعر الافتتاح للصفقه رقم2 حتى الصفقه خمسه .. و كذلك خمس دوال أخرى لتعود بحجم اللوت لكل صفقه ...
كود PHP:
double openprice1()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==1) {double openprice1 =OrderOpenPrice() ;}
}
}
return( openprice1);
}
/////////////////
double openprice2()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==2) {double openprice2 =OrderOpenPrice() ;}
}
}
return( openprice2);
}
////////////////////
double openprice3()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==3) {double openprice3 =OrderOpenPrice() ;}
}
}
return( openprice3);
}
//////////////////////
double openprice4()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==4) {double openprice4 =OrderOpenPrice() ;}
}
}
return( openprice4);
}
//////////////////////
double openprice5()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==5) {double openprice5 =OrderOpenPrice() ;}
}
}
return( openprice5);
}
//////////////////
//+++++++++++++++
/////////////////
double lot1()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==1) {double lot1 =OrderLots() ;}
}
}
return( lot1);
}
/////////////////
double lot2()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==2) {double lot2 =OrderLots() ;}
}
}
return( lot2);
}
/////////////////
double lot3()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==3) {double lot3 =OrderLots() ;}
}
}
return( lot3);
}
/////////////////
double lot4()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==4) {double lot4 =OrderLots() ;}
}
}
return( lot4);
}
/////////////////
double lot5()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==5) {double lot5 =OrderLots() ;}
}
}
return( lot5);
}
/////////////////////
كود PHP:
if( orderstotal()>=5)
{
double equi =( (lot1()*openprice1() )+(lot2()*openprice2() )+(lot3()*openprice3() )+(lot4()*openprice4() ) +(lot5()*openprice5() ) ) / ( lot1()+lot2()+lot3()+lot4()+lot5() ) ;
}
فما الأخطاء بالأكواد أو الفكره بارك الله فيك ..
و جزاك الله كل خير .آخر تعديل بواسطة dentist_hussein ، 31-08-2013 الساعة 07:47 AM
- 31-08-2013, 03:21 PM #4298
آخر تعديل بواسطة kira-h ، 31-08-2013 الساعة 03:28 PM
- 31-08-2013, 10:42 PM #4299
رد:موضوع مخصص للأسئلة البرمجية
يوجد حل أسهل و إستخدام الداله GlobalVariableSet لتغيير الماجيك نمبر ثم يمكن لاحقا أن تستدعي الإكسبرتات الأخرى القيم بالداله GlobalVariableGet
مثلا ستقوم بتعديل كود هذا الإكسبرت إلى
كود PHP:static int Num;
if(Win_Stop&&(acc >=NewEquity))
{
CloseDeleteAll();
CloseDeleteAllCurrent();
CloseDeleteAllNonPending();
CloseDeleteAllCurrentNonPending();
NewEquity=NewEquity+USDProfit;
Num++;
GlobalVariableSet("AddedNumber",Num);
}
ثم في الإكسبرتات الأخرى سوف يقوم قيمة الماجيك نمبر لكل واحد
كود PHP:newMagicNumber=MagicNumber+GlobalVariableGet("AddedNumber");
و newMagicNumber هو الماجيك نمبر الجديد الذي ستستخدمه مع الصفقات
- 31-08-2013, 11:27 PM #4300
- 01-09-2013, 06:51 AM #4301
رد:موضوع مخصص للأسئلة البرمجية
أولا لديك أخطاء في إستدعاء حجم لوت و سعر كل صفقة معينه
أنت وضعت الشرط
كود PHP:if (orderstotal()==3) {double openprice3 =OrderOpenPrice() ;}
فالصحيح هو كمثال
كود PHP:double openprice3()
{
int OrderNumber;
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
OrderNumber++;
if (OrderNumber==3) {
double openprice3 =OrderOpenPrice() ;
return( openprice3);
}
}
}
return( 0);
}
وتحسب نقطة التعادل مباشرة
مثال هذه دالة قمت بعمله و إستخدامها في إكسبرتاتي سابقا
كود PHP:double BreakPoint(int type)
{
double Price;double Lots;
for(int i=0;i<=OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
{
Price+=OrderOpenPrice()*OrderLots();
Lots+=OrderLots();
}
}
if(Lots!=0) return(Price/Lots);
}
- 01-09-2013, 07:45 PM #4302
جزاك الله كل خير أستاذي العزيز ...
بالنسبه للسؤال بارك الله فيك .. كنت أريد عندما تفتح صفقه بمجرد لمس مستوى معين لا يتم فتح أخرى إلا بعد تحرك السعر عدد نقاط معين من آخر مستوى سواء في نفس الشمعه أو بعد إغلاقها .. و الإقتباس فيه مافكرت في عمله ..
أرجو التصحيح و جزاك الله كل خير
- 04-09-2013, 07:13 AM #4303
رد:موضوع مخصص للأسئلة البرمجية
طيب بما أن سعر فتح آخر صفقة هو بمجرد لمس مستوى معين بالتالي لا يوجد داعي لمعرفة سعر المستوى لكن يمكن أن نحدد سعر آخر صفقة تم فتحها سيكون أسهل بما أنهم من نفس النقطه
وستضع الشرط فقط
فلا داعي لعمل أي داله جديده ويكفي أن تستخدم الداله LastOrderOpenPrice
كود PHP:if(MathAbs(Bid-LastOrderOpenPrice())>LastOrderDef*point )
- 05-09-2013, 06:03 AM #4304
رد:موضوع مخصص للأسئلة البرمجية
تمام أستاذ أسامه
لكن هكذا كما ذكرت حضرتك سيحسب الفرق بين سعر البيد الحالي و سعر دخول آخر صفقه لحظة دخول الصفقه التاليه أي مع تحقق الشروط .. ولو كان الشرط مثلا إعادة لمس نفس المستوى المساوي لنقطة دخول آخر صفقه .. وقتها سيحسب الفرق بين البيد و سعر دخول آخر صفقه و البيد الآن قريب أو مساوى لسعر دخول آخر صفقه .. فأعتقد أنه لن يتحقق الشرط كما أريد .. لذلك كنت قد فكرت سابقا بداله تحفظ السعر أو الفرق عندما يصبح الفرق كما أريده ..
.. وأيضا واجهتني مشكله بالنسبه للشروطكود PHP:if ( orderstotal()<5 && Time0!=Time[0] && d>=LastOrderDef *point )
كود PHP:Time0!=Time[0]
- 06-09-2013, 07:13 AM #4305
رد:موضوع مخصص للأسئلة البرمجية
طيب الأفضل الآن أن تضيف مستويات المؤشر التي تقوم بالدخول منها إلى الإكسبرت
ما هو المؤشر الذي تستخدمه ؟
بالنسبه للخطأ لديك في الكود السابق الذي قمت بعمله
الداله
كود PHP:D()
كود PHP:double d=MathAbs(Close[0]-D() );
فعندما وضعت الشرط
كود PHP:if ( d>=LastOrderDef *point )
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM