1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم اخي ماستر دولار
لدي مشكلة مرفقة اسقله عند اي اختبار لاحد اكسبرتاتي
لا اعرف لمادا دائما تحصل معي
و لكن اشك ان دالة في الاكسبيرت هي سبب المشكل
حيت تقوم بمراجعة 25 شمعة التي سبقت وتطبق عليها بعض الشروط ادا نجحت تقوم بفتح الصفقة
ادا كان هدا سبب المشكلة كيف احلها
لان اساس الاكسبيرت يقوم على فحص 25 شمعة سابقة للشمعة المفتوحة وتطبيق بعض الشروط عليها عند كل تحرك للسعر داخل الدالة ستارت
بارك الله فيك
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
استاذنا الكريم لاحظ الصورة التالية لخط مؤشر "سوبر ترند" ...كيف نجعل الاكسبرت يفتح شراء عند اقتراب السعر من الخط الاخضر بفارق 5 نقاط مثلا او عند لمس الخط ...
كود PHP:
supertrendb15=iCustom(NULL,15,"SuperTrend",0,1);
الملف المرفق 352636
https://forum.arabictrader.com/images/misc/pencil.pnghttps://forum.arabictrader.com/images/misc/pencil.pngوسؤال اخر اخي الكريم :
كود PHP:
bool LastOrderProfit(){
bool L;
for(int i=OrdersHistoryTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
if(OrderProfit()>0)return(true);
else return(false);
}
}
return(true);
}
هذه الدالة تحسب اذا كان هناك خسارة في الصفقة المنتهية السابقة فيدخل الاكسربت في مضاعفات تاليا.كيف يمكن التعديل ليصبح الاكسبرت يحسب اخر 6 صفقات مثلا اذا اغلقت بالسالب يبدا بالمضاعفات.(6 كمثال)....جزاك الله خيرا.
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة kwahab
استاذنا الكريم لاحظ الصورة التالية لخط مؤشر "سوبر ترند" ...كيف نجعل الاكسبرت يفتح شراء عند اقتراب السعر من الخط الاخضر بفارق 5 نقاط مثلا او عند لمس الخط ...
كود PHP:
supertrendb15=iCustom(NULL,15,"SuperTrend",0,1);
الملف المرفق 352636 https://forum.arabictrader.com/images/misc/pencil.pnghttps://forum.arabictrader.com/images/misc/pencil.pngوسؤال اخر اخي الكريم :
كود PHP:
bool LastOrderProfit(){
bool L;
for(int i=OrdersHistoryTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
if(OrderProfit()>0)return(true);
else return(false);
}
}
return(true);
}
هذه الدالة تحسب اذا كان هناك خسارة في الصفقة المنتهية السابقة فيدخل الاكسربت في مضاعفات تاليا.كيف يمكن التعديل ليصبح الاكسبرت يحسب اخر 6 صفقات مثلا اذا اغلقت بالسالب يبدا بالمضاعفات.(6 كمثال)....جزاك الله خيرا.
سوف تضع شرط إذا كان إفتتاح الشمعه أكبر من قيمة الخط + عدد نقاط المحدده ثم إقترب السعر وأصبح أقل من قيمة الخط +عدد نقاط المحدده
مثال
كود PHP:
supertrendb15=iCustom(NULL,15,"SuperTrend",0,1);
if(Open[0]>supertrendb15+5*Point&&Close[0]<=supertrend15+5*point)
{
//open buy
}
تريد وضع شرط إذا كان آخر 6 صفقات خاسره مثلا فيفتح مضاعفات
مثال
كود PHP:
bool LastOrderProfit(){
bool L;
int LostNum;
for(int i=OrdersHistoryTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
if(OrderProfit()>0)return(true);
else {
LostNum++;
}
if(LostNum>=6)return(false);
}
}
return(true);
}
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
وعليكم السلام ورحمة الله وبركاته
في الصوره التي أرفقتها أنت تقوم بعمل أوبتمايز Optimization وليس باك تست للإكسبرت
أزل علامة الصح من مربع optimization عند عمل الباك تست
والله سهوت ولم لفكر فيها
بارك الله فيك
هدا هو الخطأ الان
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم استاذ أسامة
سؤالي بخصوص قناة linear regression channel
استطعت الحصول على سعر منتصف القناة عن طريق الامر
كود:
ObjectGet("C",OBJPROP_PRICE1)
فكيف يمكن الحصول على سعر حواف القناة؟
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة تاجر
السلام عليكم استاذ أسامة
سؤالي بخصوص قناة linear regression channel
استطعت الحصول على سعر منتصف القناة عن طريق الامر
كود:
ObjectGet("C",OBJPROP_PRICE1)
فكيف يمكن الحصول على سعر حواف القناة؟
وعليكم السلام ورحمة الله وبركاته
لا يمكنك إستدعاء الحد العلوي والسفلي بنفس طريقة ObjectGet
لكن يمكنك حسابها بالمعادلات الخاصة بالمؤشر
كود PHP:
double a,b,c,sumy=0.0,sumx=0.0,sumxy=0.0,sumx2=0.0,h=0.0,l=0.0;
int x;
for(int i=0; i<barsToCount; i++)
{
sumy+=Close[i];
sumxy+=Close[i]*i;
sumx+=i;
sumx2+=i*i;
}
c=sumx2*barsToCount-sumx*sumx;
b=(sumxy*barsToCount-sumx*sumy)/c;
a=(sumy-sumx*b)/barsToCount;
for(x=0;x<barsToCount;x++)
LR_line[x]=a+b*x;
for(x=0;x<barsToCount;x++)
{
if(Close[x]-LR_line[x] > h) h = Close[x]-LR_line[x];
if(LR_line[x] - Close[x]> l) l = LR_line[x] - Close[x];
}
if (h>l)
{
for(x=0;x<barsToCount;x++)
{
Sup_line[x]=a-h+b*x;
Res_line[x]=a+h+b*x;
}
}
else
{
for(x=0;x<barsToCount;x++)
{
Sup_line[x]=a-l+b*x;
Res_line[x]=a+l+b*x;
}
}
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
وعليكم السلام ورحمة الله وبركاته
لا يمكنك إستدعاء الحد العلوي والسفلي بنفس طريقة ObjectGet
لكن يمكنك حسابها بالمعادلات الخاصة بالمؤشر
كود PHP:
double a,b,c,sumy=0.0,sumx=0.0,sumxy=0.0,sumx2=0.0,h=0.0,l=0.0;
int x;
for(int i=0; i<barsToCount; i++)
{
sumy+=Close[i];
sumxy+=Close[i]*i;
sumx+=i;
sumx2+=i*i;
}
c=sumx2*barsToCount-sumx*sumx;
b=(sumxy*barsToCount-sumx*sumy)/c;
a=(sumy-sumx*b)/barsToCount;
for(x=0;x<barsToCount;x++)
LR_line[x]=a+b*x;
for(x=0;x<barsToCount;x++)
{
if(Close[x]-LR_line[x] > h) h = Close[x]-LR_line[x];
if(LR_line[x] - Close[x]> l) l = LR_line[x] - Close[x];
}
if (h>l)
{
for(x=0;x<barsToCount;x++)
{
Sup_line[x]=a-h+b*x;
Res_line[x]=a+h+b*x;
}
}
else
{
for(x=0;x<barsToCount;x++)
{
Sup_line[x]=a-l+b*x;
Res_line[x]=a+l+b*x;
}
}
السلام عليكم اخي العزيز اسامة
أشكرك من كل قلبي لمجهودك يالغالي
بصراحة حاولت جاهدا مع الكود ولكن لم أنجح لان قدراتي البرمجية محدودة جداً
لذلك ارفقت لك المؤشر المراد التعديل عليه لتعديله ، الله يبارك فيك
طبعا لازم نعيد تسمية القناة الى C كي يتعرف عليها المؤشر
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة تاجر
السلام عليكم اخي العزيز اسامة
أشكرك من كل قلبي لمجهودك يالغالي
بصراحة حاولت جاهدا مع الكود ولكن لم أنجح لان قدراتي البرمجية محدودة جداً
لذلك ارفقت لك المؤشر المراد التعديل عليه لتعديله ، الله يبارك فيك
طبعا لازم نعيد تسمية القناة الى C كي يتعرف عليها المؤشر
مرفق المؤشر بعد التعديل
راجع الكود جيدا
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة تاجر
سؤال ثاني اخي اسامة الله يرضى عليك
إذا تم تحريك القناة يدويا كيف اجعل المؤشر يتحرك معها تلقائياً ؟
تلقائيا بما أن المؤشر يأخذ بيانات توقيت بداية ونهائية القناة فسوف يعتمد في الحسابات بناء على البيانات الجديده في كل مره تتغير