النتائج 1 إلى 4 من 4
- 17-11-2012, 01:10 PM #1
الاستاذ العزيز مستر دولار رجاءا المساعدة
السلام عليكم ورحمة الله وبركاته
أخي مستر دولار في المرفقات مؤشر التايمنج المعروف لمصطفى بالخياط (نسخة الشموع)
مشكلة المؤشر عند وضعه على الشارت فان عمل المنصة يتباطأ بشكل كبير ورغم محاولاتي لمعرفة السبب إلا انني لم افلح فالرجاء الشديد أخي العزيز ان تنظر لهذا المؤشر وحل هذه المشكلة
- 17-11-2012, 10:18 PM #2
يوجد أكثر من كود في المؤشر يمكن تعديله لزيادة سرعته
الجزء الأول هو الحلقه المسئوله عن العمليه الحسابيه
كود PHP:for (int l_index_36 = l_index_40; l_index_36 < NumBars + l_index_40; l_index_36++) ld_12 += (High[l_index_36] + Low[l_index_36]) / 2.0;
ld_20 = ld_12 / NumBars;
ld_12 = 0;
for (l_index_36 = l_index_40; l_index_36 < NumBars + l_index_40; l_index_36++) ld_12 += High[l_index_36] - Low[l_index_36];
ld_28 = 0.2 * (ld_12 / NumBars);
بدلا من ld_12
فيصبح الكود
كود PHP:for (int l_index_36 = l_index_40; l_index_36 < NumBars + l_index_40; l_index_36++)
{
ld_12 += (High[l_index_36] + Low[l_index_36]) / 2.0;
ld_13 += High[l_index_36] - Low[l_index_36];
}
ld_20 = ld_12 / NumBars;
ld_28 = 0.2 * (ld_13 / NumBars);
كود PHP:for (l_index_36 = 0; l_index_36 <= Bars; l_index_36++) {
l_name_44 = "TimingHL" + l_index_36;
ObjectCreate(l_name_44, OBJ_TREND, li_8, Time[l_index_36], g_ibuf_80[l_index_36], Time[l_index_36], g_ibuf_92[l_index_36]);
ObjectSet(l_name_44, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(l_name_44, OBJPROP_RAY, FALSE);
ObjectSet(l_name_44, OBJPROP_WIDTH, 1);
l_name_52 = "TimingOC" + l_index_36;
ObjectCreate(l_name_52, OBJ_TREND, li_8, Time[l_index_36], g_ibuf_84[l_index_36], Time[l_index_36], g_ibuf_88[l_index_36]);
ObjectSet(l_name_52, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(l_name_52, OBJPROP_RAY, FALSE);
ObjectSet(l_name_52, OBJPROP_WIDTH, 3);
if (Open[l_index_36] <= Close[l_index_36]) {
ObjectSet(l_name_44, OBJPROP_COLOR, Green);
ObjectSet(l_name_52, OBJPROP_COLOR, Green);
} else {
ObjectSet(l_name_44, OBJPROP_COLOR, Red);
ObjectSet(l_name_52, OBJPROP_COLOR, Red);
}
}
كود PHP:for (int l_index_40 = 0; l_index_40 < Bars; l_index_40++) {
ld_12 = 0; ld_13 = 0;
for (int l_index_36 = l_index_40; l_index_36 < NumBars + l_index_40; l_index_36++)
{
ld_12 += (High[l_index_36] + Low[l_index_36]) / 2.0;
ld_13 += High[l_index_36] - Low[l_index_36];
}
ld_20 = ld_12 / NumBars;
ld_28 = 0.2 * (ld_13 / NumBars);
g_ibuf_80[l_index_40] = (High[l_index_40] - ld_20) / ld_28;
g_ibuf_92[l_index_40] = (Low[l_index_40] - ld_20) / ld_28;
g_ibuf_84[l_index_40] = (Open[l_index_40] - ld_20) / ld_28;
g_ibuf_88[l_index_40] = (Close[l_index_40] - ld_20) / ld_28;
l_name_44 = "TimingHL" + l_index_40;
ObjectCreate(l_name_44, OBJ_TREND, li_8, Time[l_index_40], g_ibuf_80[l_index_40], Time[l_index_40], g_ibuf_92[l_index_40]);
ObjectSet(l_name_44, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(l_name_44, OBJPROP_RAY, FALSE);
ObjectSet(l_name_44, OBJPROP_WIDTH, 1);
l_name_52 = "TimingOC" + l_index_40;
ObjectCreate(l_name_52, OBJ_TREND, li_8, Time[l_index_40], g_ibuf_84[l_index_40], Time[l_index_40], g_ibuf_88[l_index_40]);
ObjectSet(l_name_52, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(l_name_52, OBJPROP_RAY, FALSE);
ObjectSet(l_name_52, OBJPROP_WIDTH, 3);
if (Open[l_index_36] <= Close[l_index_40]) {
ObjectSet(l_name_44, OBJPROP_COLOR, Green);
ObjectSet(l_name_52, OBJPROP_COLOR, Green);
} else {
ObjectSet(l_name_44, OBJPROP_COLOR, Red);
ObjectSet(l_name_52, OBJPROP_COLOR, Red);
}
}
ولا يوجد داعي لإستخدام الداله sleep والداله الخاصة بحذف جميع الخطوط في كل مره وإعادة وضعها من جديد
كود PHP:Sleep(1000);
ObjectsDeleteAll(li_8);
سوف تضع شرط لرسم الخط عندما تكون القيمه للخط المرسوم مختلفه عن المعطيات الحاليه فقط
كود PHP:if(ObjectGet("actual_VCharte",OBJPROP_PRICE1)!=g_ibuf_88[0]){
ObjectDelete("actual_VCharte");
ObjectCreate("actual_VCharte", OBJ_HLINE, li_8, 0, g_ibuf_88[0]);
ObjectSet("actual_Vcharte", OBJPROP_COLOR, Blue);
}
كود PHP:for (int l_index_40 = 0; l_index_40 < Bars; l_index_40++) {
كود PHP:int limit=Bars-IndicatorCounted();
for (int l_index_40 = 0; l_index_40 < limit; l_index_40++) {
- 17-11-2012, 10:31 PM #3
- 17-11-2012, 10:32 PM #4