النتائج 1 إلى 15 من 16
الموضوع: مشكله compile عند رسم الكائنات
- 02-07-2014, 05:01 PM #1
مشكله compile عند رسم الكائنات
عند رسم الكائنات الرسوميه عند عمل compile المفروض انه يظهر التغير الجديد الذب تم اضافته على الموشر
المشكله انه لايظهر التغيير الابعد سحب الموشر مره اخرى او اغلاق المنصه وفتحها مره اخرى وهذ العمل ممل
هل هناك امر يعمل refresh للشارت واظهار التغير بمجرد الضغط على compile.
- 02-07-2014, 08:07 PM #2
يمكن أن تستخدم الداله ChartRedraw
أرفق الكود الذي قمت بكتابته وسوف أوضح لك سبب الخطأ
- 02-07-2014, 09:36 PM #3
هذا الكود لايعمل بالشكل المطلوب هناك اربع ملحوظات.
1- النقطه المهمه هو انه لايرسم الخط العمودي بشكل مضبوط مع كل الشهور ففي شهر مايو يرسمه على الساعه الواحده من االافتتاح الشهري وليس على الساعه 0
2- عند تغير قيمه barmonth-1 وعمل compile لايظهر التغيير مباشره .
3-لنفترض اني رسمت خط عمودي ابيض مع بدايه افتتاح الاسبوع وخط اصفر مع بدايه افتتاح الشهر وصادف ان الشمعه هي بدايه افتتاح الاسبوعي و الشهري يعني الخطين سوف يكونون عل نفس الشمعه فكيف استطيع ان اجعل الخط الذي يظهر اولا هو الخط ذات اللون الابيض او الاصفر على حسب ما اريد
4- ان اشترط الايظهر الا على فريم الساعه فقط
كود PHP:int start()
{int i,barmonth;
for( i=0 ; i<=500; i++){ if(Period()==60){ barmonth=iBarShift(Symbol(),0,iTime(Symbol(),43200,i),false);
ObjectCreate("Alii"+IntegerToString(i),OBJ_VLINE,0,Time[barmonth-1],Bid);
ObjectSet("Alii"+IntegerToString(i),OBJPROP_COLOR, clrBlue);}}
return(0);
}
آخر تعديل بواسطة daod ، 02-07-2014 الساعة 09:42 PM
- 03-07-2014, 08:22 PM #4
السلام عليكم ورحمه الله
- 04-07-2014, 05:13 AM #5
بالنسبه للسؤال الأول
هذا لأنك إستخدمت barmonth-1 فما أنك تريد رسم الخط على إفتتاح الشمعه بالضبط فسوف تستخدم barmonth فقط
بالنسبه للسؤال الثاني
لأنك وضعت الكود بداخل الداله start بالتالي لن يتفعل الكود حتى يتحرك السعر إذا أردت أن يظهر التغير مباشرة بمجرد عمل كومبايل ضع الكود بداخل الداله init
بالنسبه للسؤال الثالث
آخر خط يتم رسمه هو الخط الذي يظهر بالتالي إذا أردت إظهار خط محدد إجعل الكود الخاص برسمه بعد الخط الأول
بالنسبه للسؤال الرابع
حتى تجعل الخط يظهر على تايم فريم محدد فقط يمكنك إستخدام الكود
كود PHP:ObjectSet(name,OBJPROP_TIMEFRAMES,PERIOD_H1);
- 04-07-2014, 11:18 AM #6
1- كيف يمكن الاستفاده من ChartRedraw واين وكيف يمكن كتابتها؟؟
2- ياريت تجرب بنفسك برسم العمود على الساعه الاولى يعني الساعه 00 وليس 1 من الافتتاح الشهري وتفحص على الاقل عشر شموع شهريه هل بالفعل رسم االعمود بشكل مضبوط على الساعه 00 . لان عندي رسمها بشكل غير مضبوط رغم ان الكود برمجيا صح ولكن تطبيقا خطأ.
ملاحظه
حاولت ان استفيد منها ولكن دون فائده هو اني لاحظت انه اذا كان شمعه اليوم الاولى هي ايضا شمعه ا ول يوم في الشهر فالكود يرسم العمود بشكل شبه مضبوط ولكن اذا كان بدايه الشهر
ليس اليوم الاول فهنا امر اخر لان احيانا يبدا الشهر يوم غير يوم الاثنين فلذا سيكون او ل شمعه يوميه في الشهر ليس الشمعه الاولى وانما قد تكون شمعه 2 او ثالثه وهكذا.
بالمختصر المفيد هناك مشكله اذا لم يكون بدايه يوم الشهر هو يوم الاثنين.... وهذا طبعا مستحيل!!!آخر تعديل بواسطة daod ، 04-07-2014 الساعة 11:33 AM
- 06-07-2014, 08:09 PM #7
للرفع
- 06-07-2014, 09:02 PM #8
1- كيف يمكن الاستفاده من ChartRedraw واين وكيف يمكن كتابتها؟؟
2- بالنسبه لاجابتك الاولى
لقد جربت استخدم barmonth فقط دون زياده اونقصان وما تزال المشكله قائمه.
3- بالنسبه لاجابتك الثالثه
حاولت ان اجعل خط الشهر يظهر فوق خط الاسبوع والخط اليومي بحيث جربت كلا الطريقتين مره كتبت الكود الشهري قبل الكود الاسبوعي واليومي وكذلك العكس ولكن دون فائده
كود PHP:int start()
{int i,barday,barweek,barmonth;
for( i=0 ; i<=500; i++){
barday=iBarShift(Symbol(),0,iTime(Symbol(),1440,i),false);
barweek=iBarShift(Symbol(),0,iTime(Symbol(),10080,i),false);
barmonth=iBarShift(Symbol(),0,iTime(Symbol(),43200,i),false);
ObjectCreate("Ali"+IntegerToString(i),OBJ_VLINE,0,Time[barday],Bid);ObjectSet("Ali"+IntegerToString(i),OBJPROP_COLOR, clrWhite);
ObjectCreate("Alii"+IntegerToString(i),OBJ_VLINE,0,Time[barweek-1],Bid);ObjectSet("Alii"+IntegerToString(i),OBJPROP_COLOR, clrYellow);
ObjectCreate("Aliii"+IntegerToString(i),OBJ_VLINE,0,Time[barmonth-1],Bid);ObjectSet("Aliii"+IntegerToString(i),OBJPROP_COLOR,clrBlue);
}
return(0);}
آخر تعديل بواسطة daod ، 06-07-2014 الساعة 09:29 PM
- 07-07-2014, 05:53 AM #9
ChartRedraw تقوم بتحديث الشارت وتستخدم غالبا بعد رسم الكائنات على الشارت
السبب في أنه لا يحدد إفتتاح الشهر ستلاحظه فقط إذا كان نهاية الشهر وبعد أيام أجازه
بالتالي بما أن شموع هذا اليوم تكون غير موجوده فيقوم برسم الخط على أقرب شمعه تاليه والتي غالبا تكون آخر شمعه إغلاق للشهر السابق
مرفق تعديل بسيط قمت بعمله للكود سوف يحل هذه المشكله
كود PHP:int i,barmonth;
for( i=0 ; i<=500; i++){ if(Period()==60){
barmonth=iBarShift(Symbol(),0,iTime(Symbol(),43200,i),false);
if(TimeMonth(Time[barmonth])!=TimeMonth(iTime(Symbol(),43200,i)))
{
barmonth--;
}
ObjectCreate("Alii"+IntegerToString(i),OBJ_VLINE,0,Time[barmonth],Bid);
ObjectSet("Alii"+IntegerToString(i),OBJPROP_COLOR, clrBlue);}
تأكد مره أخرى جرب إستخدام هذا الكود
كود PHP:ObjectCreate("Ali",OBJ_VLINE,0,Time[10],Bid);
ObjectSet("Ali",OBJPROP_COLOR, clrWhite);
ObjectCreate("Alii",OBJ_VLINE,0,Time[10],Bid);
ObjectSet("Alii",OBJPROP_COLOR, clrBlue);
ثم جرب هذا الكود
كود PHP:ObjectCreate("Alii",OBJ_VLINE,0,Time[10],Bid);
ObjectSet("Alii",OBJPROP_COLOR, clrBlue);
ObjectCreate("Ali",OBJ_VLINE,0,Time[10],Bid);
ObjectSet("Ali",OBJPROP_COLOR, clrWhite);
- 07-07-2014, 09:45 PM #10
السلام عليكم ورحمه الله وبركاته اخي اسامه
صراحه جربت كماقلت وكان بالفعل هوان اخر سطر برمجي هل الذي سوف يظهر على الشارت ولكن عندما رسمت اكثر من خط بهذه الطريقه اصبحت هذه القاعده غير فعاله رغم اني جربت اغير بين ترتيب السطور البرمجيه فكانت الشمعه التي يلتقي عندها الخطوط الثلاته تظهر اولا الخط اليومي ثم الاسبوعي ثم الشهري وانا اريد العكس ان يكون الخط الشهري اولا ثم الاسبوعي ثم اليومي.
لوسمحت تعدل على الكود لتجعله يظهر الخط الشهري اولا ثم الاسبوعي ثم اليومي,وتضيف للكود خاصيه ChartRedraw من اجل اعرف كيف واين يمكن كتابتها.
كود PHP:int start()
{
int i,barday,barweek,barmonth;
for( i=0 ; i<=500; i++){ if(Period()>=60){
barday=iBarShift(Symbol(),0,iTime(Symbol(),1440,i),false);barweek=iBarShift(Symbol(),0,iTime(Symbol(),10080,i),false);
barmonth=iBarShift(Symbol(),0,iTime(Symbol(),43200,i),false);if(TimeMonth(Time[barmonth])!=TimeMonth(iTime(Symbol(),43200,i)))
{barmonth--;}
ObjectCreate(IntegerToString(i),OBJ_TEXT,0,Time[i],High[i]+50*Point());
ObjectSetText(IntegerToString(i),IntegerToString(i),7,"Arial",clrAqua);
ObjectCreate("Ali"+IntegerToString(i),OBJ_VLINE,0,Time[barday],Bid);ObjectSet("Ali"+IntegerToString(i),OBJPROP_COLOR, clrYellow);
ObjectCreate("Alii"+IntegerToString(i),OBJ_VLINE,0,Time[barweek-1],Bid);ObjectSet("Alii"+IntegerToString(i),OBJPROP_COLOR, clrBlue);
ObjectCreate("Aliii"+IntegerToString(i),OBJ_VLINE,0,Time[barmonth],Bid);ObjectSet("Aliii"+IntegerToString(i),OBJPROP_COLOR, clrWhite);
}}
return(0);}
آخر تعديل بواسطة daod ، 07-07-2014 الساعة 10:13 PM
- 13-07-2014, 06:54 PM #11
وقل ربي زدني علما
- 18-07-2014, 01:10 PM #12
- 18-07-2014, 09:13 PM #13
- 18-07-2014, 09:26 PM #14
- 18-07-2014, 11:52 PM #15
سوف تقوم بكتابة ChartRedraw في نهاية الكود
مثل
كود PHP:if(Period()>=60)
{
for( i=0 ; i<=500; i++)
{
barday=iBarShift(Symbol(),0,iTime(Symbol(),1440,i),false);
ObjectCreate(IntegerToString(i),OBJ_TEXT,0,Time[i],High[i]+50*Point());
ObjectSetText(IntegerToString(i),IntegerToString(i),7,"Arial",clrAqua);
ObjectCreate("Ali"+IntegerToString(i),OBJ_VLINE,0,Time[barday],0);
ObjectSet("Ali"+IntegerToString(i),OBJPROP_COLOR, clrYellow);
}
for( i=0 ; i<=500; i++)
{
barweek=iBarShift(Symbol(),0,iTime(Symbol(),10080,i),false);
ObjectCreate("Alii"+IntegerToString(i),OBJ_VLINE,0,Time[barweek-1],0);
ObjectSet("Alii"+IntegerToString(i),OBJPROP_COLOR, clrBlue);
}
for( i=0 ; i<=500; i++)
{
barmonth=iBarShift(Symbol(),0,iTime(Symbol(),43200,i),false);
if(TimeMonth(Time[barmonth])!=TimeMonth(iTime(Symbol(),43200,i)))
{
barmonth--;
}
ObjectCreate("Aliii"+IntegerToString(i),OBJ_VLINE,0,Time[barmonth],0);
ObjectSet("Aliii"+IntegerToString(i),OBJPROP_COLOR, clrWhite);
}
ChartRedraw();
}