عمر عمر
13-05-2016, 08:31 PM
السلام عليكم و رحمة الله تعلى و بركاته
عندي سؤال برمجي لو سمحت و تكرمت بالإجابة يا استاذ اسلام العوامي
قمت بإتسخدام طريقة الجداول ذات بعد واحد أو مصفوفات ذات بعد واحد
Array[n] i
لترتيب قيم متغيرات بطريقة تصاعدية أو تنازلية
كود ملأ الجدول و ترتيبه انتهيت منه بدون مشاكل
المشكلة بعد الإنتهاء من الترتيب أريد الأن أن اضهر ذالك الجدول المملوء أو اطبعه على الشارت مع تحديد احداثيات x و y
جربت طريقة
Comment
لكنها سيئة حيث أنني عندما أضعها مرتين مثلا تحت بعض, تحذف القيمة السابقة و تضهر الجديدة فقط
أما طريقة
ObjectCreate
فلم أعرف كيف استخدمها مع الجداول
أرجو كتابت الكود كاملا مع الشرح
و سأكون شاكرا لك و أجرك عند الله استاذ اسلام العوامي
اسلام العوامى
14-05-2016, 11:12 AM
السلام عليكم و رحمة الله تعلى و بركاته
عندي سؤال برمجي لو سمحت و تكرمت بالإجابة يا استاذ اسلام العوامي
قمت بإتسخدام طريقة الجداول ذات بعد واحد أو مصفوفات ذات بعد واحد
Array[n] i
لترتيب قيم متغيرات بطريقة تصاعدية أو تنازلية
كود ملأ الجدول و ترتيبه انتهيت منه بدون مشاكل
المشكلة بعد الإنتهاء من الترتيب أريد الأن أن اضهر ذالك الجدول المملوء أو اطبعه على الشارت مع تحديد احداثيات x و y
جربت طريقة
Comment
لكنها سيئة حيث أنني عندما أضعها مرتين مثلا تحت بعض, تحذف القيمة السابقة و تضهر الجديدة فقط
أما طريقة
ObjectCreate
فلم أعرف كيف استخدمها مع الجداول
أرجو كتابت الكود كاملا مع الشرح
و سأكون شاكرا لك و أجرك عند الله استاذ اسلام العوامي
،،،وعليكم السلام ورحمة الله وبركاته،،،
،،،اهلا بك اخي الفاضل ، يمكن عمل حلقة تكرارية واستخدام امر ObjectCreate داخل الحلقة لعمل المطلوب ، وسأقوم بارفاق مثال بعد قليل،،،
،،،تقبل تحياتي،،،
اسلام العوامى
14-05-2016, 03:25 PM
،،،مثال علي المطلوب،،،
int start() {
int x,y;
int xdist = 250;
int ydist = 100;
color col;
string diff;
for(x=0;x<=2;x++)
for(y=0;y<=7;y++) {
if (MarketInfo(symb[y], MODE_POINT) == 0.00001) pointvalue = 0.0001;
else if (MarketInfo(symb[y], MODE_POINT) == 0.001) pointvalue = 0.01;
else pointvalue = MarketInfo(symb[y], MODE_POINT);
double diffsma7_20H1 = iMA(symb[y],PERIOD_H1,7,0,MODE_LWMA,PRICE_CLOSE,0)- iMA(symb[y],PERIOD_H1,20,0,MODE_LWMA,PRICE_CLOSE,0);
double diffsma7_20H4 = iMA(symb[y],PERIOD_H4,7,0,MODE_LWMA,PRICE_CLOSE,0)- iMA(symb[y],PERIOD_H4,20,0,MODE_LWMA,PRICE_CLOSE,0);
double diffsma7_20D1 = iMA(symb[y],PERIOD_D1,7,0,MODE_LWMA,PRICE_CLOSE,0)- iMA(symb[y],PERIOD_D1,20,0,MODE_LWMA,PRICE_CLOSE,0);
string diffH1 = DoubleToStr((diffsma7_20H1/pointvalue),1);
string diffH4 = DoubleToStr((diffsma7_20H4/pointvalue),1);
string diffD1 = DoubleToStr((diffsma7_20D1/pointvalue),1);
switch(x) {
case 0: diff = diffH1;
if(diffsma7_20H1 < 0)col = Red;
else col=Green; break;
case 1: diff = diffH4;
xdist+= 250;
if(diffsma7_20H4 < 0)col = Red;
else col=Green; break;
case 2: diff = diffD1;
xdist+= 250;
if(diffsma7_20D1 < 0)col = Red; else col=Green; break; }
ObjectCreate("diff"+x+y,OBJ_LABEL,0,0,0,0);
ObjectSet("diff"+x+y, OBJPROP_XDISTANCE,xdist);
ObjectSet("diff"+x+y, OBJPROP_YDISTANCE,ydist);
ObjectSetText("diff"+x+y,diff,10, "Times New Roman", col);
ydist+= 65; }
return(0); }
عمر عمر
14-05-2016, 06:33 PM
أهلا استاذي اسلام العوامي
أولا أشكرك جزيل الشكر على ردك الكريم و السريع و على عطائك الكبير و سعة صدرك
ربنا يكرمك و يجعل مساعدتك لي في ميزان حسناتك مشكور جدا
أنا من المعجبين بك و تعلمت منك الكثير
ثانيا للأسف لم افهم مثالك فهو كبير و معقد و خارج عن الموضوع
راح اعطيك مثالي و هو بسيط , و أرجو أن تضيف له كود الذي يضهر المحتوى في الشارت
int a=10;
int b=20;
int c=5;
int d=-65;
int Array[4];
int i;
int j;
int t;
Array[0] = a;
Array[1] = b;
Array[2] = c;
Array[3] = d;
for(i=0;i<=3;i++)
for(j=i;j<=3;j++)
if(Array[i]<Array[j])
{
t=Array[i];
Array[i]=Array[j];
Array[j]=t;
}
و هنا شرح للكود و المثال الذي كتبته بالتفصيل
// هنا عرفت المتغيرات و اعطيتها قيم
int a=10;
int b=20;
int c=5;
int d=-65;
// هنا قمت بتعريف بالجدول الذي فيه اربع خانات
int Array[4];
// هنا عرفت المؤشر أو العداد أو الدليل
int i;
// هنا عرفت الدليل الثاتي
int j;
// هنا عرفت الخانة المساعدة في تبديل الخانات
int t;
// هنا ملأت الجدول بالمتغيرات
Array[0] = a;
Array[1] = b;
Array[2] = c;
Array[3] = d;
// هنا أنشأت الحلقة الأولى
for(i=0;i<=3;i++)
// هنا أنشئت الحلقة الثانية
for(j=i;j<=3;j++)
// هنا وضعت شرط المقارنة و الترتيب و التبديل
if(Array[i]<Array[j])
{
t=Array[i];
Array[i]=Array[j];
Array[j]=t;
}
أريد أن يضهر في الشارت صورة مثل الصورة التالية
http://b.top4top.net/p_13473fe1.png
جربت أمر
Comment
بالطريقة التالية
Comment(Array_B[0]," ",Array[0],"\n",Array_B[1]," ",Array[1],"\n",Array_B[2]," ",Array[2],"\n",Array_B[3]," ",Array[3]);
و قام بترتيب القيم و اضهارها في الشارت بالشكل التالي
http://d.top4top.net/p_134o2j11.png
لكن الطريقة ليست عملية لأنني اضطر الى كتابات كل الخانات و ايضا لا يمكنني التحكم في الألوان و الحجم و ايضا اذا استخدمت الأمر مرة ثانية في الكود تمحى الكتابة القديمة و تضهر الجديدة فقط
في لغة ال C و C++ بتم كتابت الأمر التالي فقط فتضهر القيم مرتبة و هو كاتالي
print ( Array[i] );
بدون كتابت كل الخانات !!
---
و كيف يمكنني تلوين القيمة الأولى الأكبر في الترتيب باللون الأخظر و القيمة الأخيرة الأصغر بالون الأحمر
أرجو أن تكون اضافة كود الطباعة على الشارت في مثالي الذي قدمته
أرجو أن لا أكون قد أطلت أو اثفلت عليك
في انتضار ردك الكريم