النتائج 1 إلى 12 من 12
- 26-09-2019, 01:35 PM #1
كيفية قراءة بيانات الشموع من الاحدث الى الاقدم
السلام علكيم
لو سمحتم اخواني للاسف واجهتني مشكلة اخرى وانا اعمل على المؤشر وهي كيف اجعل الكود اللي اكتبه يقرأ البيانات من الشموع الاقدم الى الاحدث
كود:for(int i=0; i<n; i++) { Y[i]=(iHigh(NULL,0,i)+iLow(NULL,0,i))/2; //Print(Y[i]); }
لانه الان عامل لي مشكلة في حسابتي
وانا جربت اني انقص من المتغير i-- ولكن ماحلت المشكلة وتعمل فقط على عكس المصفوفة
شكراً لكم وارجو اغلاق الموضوع لان طلع سبب المشكلة ليس عكس المصفوفه ولا اعلم اين المشكلةآخر تعديل بواسطة Hussam_FX ، 26-09-2019 الساعة 01:46 PM
- 26-09-2019, 05:38 PM #2
- 27-09-2019, 01:49 AM #3
للاسف استاذي الفاضل الكود لم يعمل معي ممكن يكون لجهلي بالشئ
ارجو حضرتك انك تتقبل اعرضلك الفكرة لعلى وعسى تقدر تفيدني
ده الكود بالكامل هعرضه لحضرتك
كود:input int t; double sum_x=0,sum_y=0,sum_xy=0,sum_x2=0; double b1,b0,yy; //+------------------------------------------------------------------+ int OnInit() { double x[];ArrayResize(x,t); double y[];ArrayResize(y,t); double xy[];ArrayResize(xy,t); double x2[];ArrayResize(x2,t); //-------------------------Elements of X------------------------------ for(i=0; i<t; i++) { x[i]=i; //Print(x[i]); } //-----------------------Calculation Sum X----------------------------- for(i=0; i<t; i++) { sum_x=sum_x+x[i]; //Print(sum_x); } //-------------------------Elements of X2------------------------------ for(i=0; i<t; i++) { x2[i]=MathPow(x[i],2); //Print(x2[i]); } //-----------------------Calculation Sum X2----------------------------- for(i=0; i<t; i++) { sum_x2=sum_x2+x2[i]; //Print(sum_x2); } //-------------------------Elements of Y------------------------------ for(i=0; i<t; i++) { y[i]=((iHigh(NULL,0,i)+iLow(NULL,0,i))/2); //Print(y[i]); } //-----------------------Calculation Sum Y----------------------------- for(i=0; i<t; i++) { sum_y=sum_y+y[i]; //Print(sum_y); } //-------------------------Elements of X*Y------------------------------ for(i=0; i<t; i++) { xy[i]=(x[i]*y[i]); //Print(xy[i]); } //-----------------------Calculation Sum X*Y----------------------------- for(i=0; i<t; i++) { sum_xy=sum_xy+xy[i]; //Print(sum_xy); } b1=((t*sum_xy)-(sum_x*sum_y))/((t*sum_x2)-(MathPow(sum_x,2))); b0=(sum_y/t)-((sum_x/t)*(b1)); yy=(b1*t)+b0; Print(yy);
زي ماحضرتك شايف انا كتبت الكود والحمد لله بس المشكلة كلها زي ما هوضح ليك في شيت الاكسيل
المفروض ان يكون ترتيب X وال Y بالمنظر ده
المهم اني لما بعمل كود ضرب المصفوفتين في بعض بيقوم الكود بضرب المصفوفه بتاعت ال X في ال Y
ولكن المشكلة انه بيتم قراءة مصفوفة ال Y من الأسفل وبالتالي الناتج بيتغير تغيير كبير
وانا يمكن بقالي 4 أيام بحاول ادول على حل وحاولت اني اعكس قراءة مصفوفة ال Y واعمل لوب تاني زي ماحضرتك وضحت ولكن برده بتكون نفس النتيجه
وارجو من حضرتك او اي احد من الاخوة مساعدتي لان يمكن دي اخر خطوة عندي فارجو من حضراتك الاهتمام ومساعدتي فيه واخير اسف للاطالة
وشكراً
- 28-09-2019, 03:45 PM #4
UP.........................
- 29-09-2019, 12:13 AM #5كود PHP:
ضع متغير خارجي
int bars=iBars(Symbol(),PERIOD_CURRENT);
ثم
//-------------------------Elements of Y------------------------------
for(i=bars-1; i>=o; i--)
{
y[i]=((iHigh(NULL,0,i)+iLow(NULL,0,i))/2);
//Print(y[i]);
}
آخر تعديل بواسطة elassari ، 29-09-2019 الساعة 12:16 AM
- 29-09-2019, 12:26 AM #6
- 30-09-2019, 01:06 AM #7
جرب هذا الكود
كود PHP:
input int t;
int bars=iBars(Symbol(),PERIOD_CURRENT);
double sum_x=0,sum_y=0,sum_xy=0,sum_x2=0;
double b1,b0,yy;
//+------------------------------------------------------------------+
int OnInit()
{
double x[];ArrayResize(x,t);
double y[];ArrayResize(y,t);
double xy[];ArrayResize(xy,t);
double x2[];ArrayResize(x2,t);
//-------------------------Elements of X------------------------------
for(int i=bars;i>=0;i--)
{
x[i]=i;
//Print(x[i]);
}
//-----------------------Calculation Sum X-----------------------------
for(i=0; i<t; i++)
{
sum_x=sum_x+x[i];
//Print(sum_x);
}
//-------------------------Elements of X2------------------------------
for(i=0; i<t; i++)
{
x2[i]=MathPow(x[i],2);
//Print(x2[i]);
}
//-----------------------Calculation Sum X2-----------------------------
for(i=0; i<t; i++)
{
sum_x2=sum_x2+x2[i];
//Print(sum_x2);
}
//-------------------------Elements of Y------------------------------
for(int i=bars;i>=0;i--)
{
y[i]=((iHigh(NULL,0,i)+iLow(NULL,0,i))/2);
//Print(y[i]);
}
//-----------------------Calculation Sum Y-----------------------------
for(i=0; i<t; i++)
{
sum_y=sum_y+y[i];
//Print(sum_y);
}
//-------------------------Elements of X*Y------------------------------
for(i=0; i<t; i++)
{
xy[i]=(x[i]*y[i]);
//Print(xy[i]);
}
//-----------------------Calculation Sum X*Y-----------------------------
for(i=0; i<t; i++)
{
sum_xy=sum_xy+xy[i];
//Print(sum_xy);
}
b1=((t*sum_xy)-(sum_x*sum_y))/((t*sum_x2)-(MathPow(sum_x,2)));
b0=(sum_y/t)-((sum_x/t)*(b1));
yy=(b1*t)+b0;
Print(yy);
- 30-09-2019, 02:02 AM #8
- 30-09-2019, 02:27 AM #9
اخواني الاعزاء المثال بصورة اوضح
كود://double x[6]={7,10,4,3,2,9}; double x[6]={9,2,3,4,10,7}; double y[6]={10,15,5,4,3,13}; //+------------------------------------------------------------------+ int OnInit() { for(int i=0; i<ArraySize(x); i++) { x[i]=i; Print(x[i]); } //------------------------------------------------------------- for(int i=0; i<ArraySize(y); i++) { Print(y[i]); } //---------------------------------------------------------------- for(int i=0; i<ArraySize(xy); i++) { xy[i]=(x[i]*y[i]); Print(xy[i]); }
المثال بصورة اوضح بالارقام اني عندي مصفوفة ولتكن x كما في الكود السابق يتم قراءتها من اليسار الى اليمين
وانا حابب انها يتم قراءتها من اليمين الى الشمال لان بعد ذلك اقوم بضربهم في بعض وبالتالي الناتج بيكون غير صحيح لو المصفوفه مقلوبة
حاولت اني اعمل اقلب القراءة بهذة الطريقة
for(int i=x[5];i>=0;i--)
ولكن تبقى المشكلة كما هي والمصفوفة ايضاً تقراء من اليسار الى اليمين
هنا في هذا المثال باماكاني تبديل الارقام ولكن اذا تم وضع متغير بيكون الموضوع شبه مستحيل
فارجو منكم مساعدتي في حلها ولكم جزيل الشكرآخر تعديل بواسطة Hussam_FX ، 30-09-2019 الساعة 02:29 AM
- 30-09-2019, 03:53 PM #10كود PHP:
//double x[6]={7,10,4,3,2,9};
double x[6]={9,2,3,4,10,7};
double y[6]={10,15,5,4,3,13};
//+------------------------------------------------------------------+
int OnInit()
{
for(int i=6; i>=0; i--)
{
x[i]=i;
Print(x[i]);
}
//-------------------------------------------------------------
for(int i=6; i>=0; i--)
{
Print(y[i]);
}
//----------------------------------------------------------------
for(int i=6; i>=0; i--)
{
xy[i]=(x[i]*y[i]);
Print(xy[i]);
}
- 30-09-2019, 05:14 PM #11
استاذي الفاضل
النتيجة نفسها ولو حابب تعرف كيف نفسها جرب انك تعمل Print(xy[i]); في الحالتين
في الحالة الاولى كما ترى
في الحلة الثانية وهي اني اعكس المصفوفة داخل ال Loop
نفس النتيجة
ولكن اذا عكست المصفوفة من المتغير x بالاعلى كما هو موضح بالصورة التالية
ستكون هذه النتيجة الصحيحة كما يظهر بالاسفل
اتمنى اني اكون وصلت لحضرتك وللاعضاء الفكرة بصورة افضل
انا ابحث عن طريقة عملية اني اقرااء مصفوفة متغيرة واقدر اتحكم في اتجاه القراءة لان النظام يقوم بقراءتها وتخزينها من اليسار الى اليمين
حتى لو عكسنا ال Loop يظل النظام يقراءها بتلك الصورة
وبانتظار حل من باقي الاعضاء لمن له المقدرة على المساعدة
ملاحظة مهمه المثال السابق ماهو الا مثال عملي بسيط للتوضيح فقط
وانا لا استخدم مصفوة ذات قيمة ثابته والا كان الموضوع سهل
انا استخدم مصفوفه متغيره
- 01-10-2019, 10:09 AM #12
تم حل المشكلة ولله الحمد
للمعلومية حل المشكلة من خلال ArrayReverse
شكراً لكل من ساهم في المشاركة والمساعدة