وعليكم السلام ورحمة الله وبركاته
الخطأ لديك أنك قمت بتعريف الخطوط خارج الداله OnTick بالتالي فتم تعريفها مره واحده فقط
مرفق الإكسبرت المعدل
Printable View
صباح الخير الاساتذة المشرفين والخبراء
عندي مشكلة في وضع شرطين دخول للصفقة بدل شرط واحد حيث لا اعرف كيف اقوم به.
فمثلا عملت اكسبرت يدخل باشارة من ٍSAR والتاكيد من ADX لكن الذي يحصل لو اتى اشارة ADX بعد فترة من اشارة SAR لا يدخل الصفقات فاحاول وضع شرطين دخول
مثلا الشرط الاول اذا اتى اشارة شراء من SAR انظر الى ADX فلو كان شراء افتح صفقة شراء
الشرط الثاني: اذا اتى اشارة شراء من ADX انظر الى SAR فلو كان شراء افتح صفقة شراء
ونفس الامر للبيع طبعاً.
عدم تكون الشروط في 1 وتكونه في 2 لكن لا استطيع ان اجعله يفتح في 2 وارجوا مساعدتي في هذا الامر.
الملف المرفق 488687
الكود في المرفق
شكراً مقدماً
الحل الأفضل الذي أستخدمه هو تعريف متغيرات من نوع static ثم تأخذ هذه المتغيرات قيمه عندما يحدث شرط الدخول في كل مؤشر
ثم عندما تجتمع جميع الشروط يتم الدخول في الصفقه
مثال
مرفق الإكسبرتكود PHP:static int Sar_Signal,ADX_Signal;
if(sar1 < sma1 && sar2 > sma2)Sar_Signal=1;
if(adxP > adxM &&adxP2 < adxM2)ADX_Signal=1;
if(sar1 > sma1 && sar2 < sma2)Sar_Signal=-1;
if(adxP < adxM &&adxP2 > adxM2)ADX_Signal=-1;
شكراً استاذ على المساعدة الاكسبرت وصل الى ما اريد لكن لم افهم منطق static والارقام اللي وضعته معه :)
ميزة المتغير من نوع static أن قيمته لا تتغير إلا عندما تعطيه أنت القيمه الجديده بالتالي حسب الكود ما قمت بعمله هو
إذا جاءت إشارة SAR يأخذ المتغير الأولى قيمة 1 وتظل هذه القيمه ثابته
ثم في أي شمعة لاحقة عندما يتحقق شرط ADX يأخذ المتغير الثاني قيمة 1 وتظل هذه القيمه ثابته
ثم أضع في شروط الدخول عندما تصبح قيمة المتغير الأول = 1 والثاني = 1 فيتم الدخول في صفقة الشراء
لكن يجب أن تغير قيمة المتغيرين بعد ذلك = 0 ثم تنتظر تحقق الشروط مره أخرى وإلا في هذه الحاله سوف تظل قيمتهم = 1 إذا لم تقم بتغييريها بعد الدخول في الصفقه وسوف يظل الشرط كأنه محقق
قم بعمل دالة تحسب عدد الصفقات المفتوحه للزوج الواحد
مثال
كود PHP:int TotalOrders()
{
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
}
return(cnt);
}
السلام عليكم أخي أسامة
أخي أسامة كيف يمكنني تحديد الزوج الذي اخترق السعر أعلم أن ;(Print(pairs[i]+" Level > "+80 تعود بقيمة الأزواج المفعلة علي المركت لكن ما أريده الزوج المخترق للسعر عند التنبيه تحياتي أخي الفاضل.
اخي مستر دولار اريد مساعدة ضروري
هل يوجد دالة او طريقة تجعل الاكسبرت يغير رقم الماجيك نمبر كل مرة يفتح فيها صفقات
على سبيل المثال :
ظهر اشارة شراء فيقوم الاكسبرت بفتح صفقة شراء بماجيك نمبر رقمه 1
ثم ظهر اشارة بيع فيقوم الاكسبرت بفتح صفقة بيع بماجيك نمبر رقمه 1
ثم ظهر اشارة شراء فيقوم الاكسبرت بفتح صفقة شراء بماجيك نمبر رقمه 2
ثم ظهر اشارة بيع فيقوم الاكسبرت بفتح صفقة بيع بماجيك نمبر رقمه 2
ثم ظهر اشارة شراء فيقوم الاكسبرت بفتح صفقة شراء بماجيك نمبر رقمه 3
ثم ظهر اشارة بيع فيقوم الاكسبرت بفتح صفقة بيع بماجيك نمبر رقمه 3
وهكذا وهكذا مع امكانية وضع حد اقصى لعدد الماجيك نمبر .....
ارجو الافادة
--------------------------------------+كود PHP:#property indicator_chart_window
int lastAlert=2;
int OnInit()
{
return(INIT_SUCCEEDED);
}
double Signal[];
string pairs[];
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
ArrayResize(pairs,SymbolsTotal(true));
ArrayResize(Signal,SymbolsTotal(true));
for(int i=0;i<SymbolsTotal(true);i++)
{
pairs[i]=SymbolName(i,true);
double Current = iStochastic(pairs[i],PERIOD_M1,14,3,3,MODE_SMA,0,MODE_MAIN,0);
if(Current>80)
{
Print(pairs[i]+" Level > 80");
}
if(Current<20)
{
Print(pairs[i]+" Level < 20");
}
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+----------------------------