النتائج 91 إلى 105 من 192
الموضوع: أصنع أكسبرتك بنفسك
- 13-12-2011, 11:49 PM #91
مشكور مشكور مشكور لا توفيك حقك يا استاذ لذلك اكتفي بالله يجزيك عنا كل خير
اخي الكريم انا مبرمج جيد بالـ ++C والفيجوال بيسك والحمدلله لكن اجد هنا احيانا بعض الصعوبة وانا جديد على هذه اللغة الجميلة خصوصا وانني احاول نقل كود مؤشر والاستغناء عنه وتحويل كوداته الى دالة داخل الاكسبيرت لان ذلك سيخفف على الكثير من ضياع الذاكرة الوهمية خصوصا مع استدعاء iCustom بشكل متكرر
فالمشكلة الرئيسية التي تواجهني ان داخل المؤشر هناك مجموعة من المصفوفات وعندما كنت اضع المصفوفة داخل امر كومنت من داخل المؤشر كنت اجد قيم المصفوفات على شاشة الشارت لكن عندما نقلت الكود للاكسبيرت طبعا مع القيام ببعض التعديلات هنا وهناك لم تعد المصفوفات تاخذ اي قيمة فقط صفر على الشارت وحاولت وحاولت لكنني على يقين ان الخطأ الذي وقعت به انما هو صغير جدا لنه غير لي جميع نتائجي فارجو من حضرتكم المشورة واذا تفضلت اخي الكري واعطيتني القليل من وقتك اقوم بارسال ملف الكسبيرت فقط اريد ان ترجع خمس مصفوفات لاعطاء الارقام فقط
ولكم جزيل الشكر
- 14-12-2011, 12:37 AM #92
بصراحه موضوع مميز جدا جدا جدا
و اتمنى منك شرح ملفات الdll و البرمجه العصبيه و باقى الحاجات
صدقنى مش شرط خالص الناس المتابعه تكتب فى ناس كتير بتستفيد بس مش شرط تشارك فى الموضوع و فى ناس حتى مش فى المنتدى نفسه
و شكرا على الموضوع
- 14-12-2011, 10:14 AM #93
أنا لا أستطيع أن أفهم ماذا حصل الا لو كتبت كود المؤشر وكود الأكسبرت الذي عدلته كي أحاول أن أعرف الخلل.
أنا أختلف معك علي هذه النقطة لأنه يوجد فرق كبير بين موضوع علي المنتدي الهدف منه التجارب والتعلم وبين كتاب ويوجد كتب جاهزة علي المواضيع التي ذكرتها موجودة علي النت ولكنها بدون تجارب وأنا ايضا أتعلم من التجارب علي أجهزة أخري وعلي بروكرات أخري يعني مثلا عندما يعمل مؤشر مثلا علي بروكر ويأتي واحد ويقول هو لم يعمل علي بروكري فأعرف أنه توجد بروكرات خمس وأربع أرقام مثلا وممكن يعمل علي هذا ولا يعمل علي ذلك وبدون تجارب سيكون الموضوع كتاب وأنا لا أريده أن يكون كتاب فتوجد كتب أفضل منه ولكني أريد تجارب.
- 14-12-2011, 11:50 AM #94
[QUOTE=Ram22;2276036]أنا لا أستطيع أن أفهم ماذا حصل الا لو كتبت كود المؤشر وكود الأكسبرت الذي عدلته كي أحاول أن أعرف الخلل.
بارك الله فيك على حسن تعاونك لكن بعد التفكير المطول مبارح ربما اني قد وجدت الحل وجاري العمل على التعديلات اليوم ورح اخيك ان شاء الله في الصورة
- 14-12-2011, 07:34 PM #95
اخي الكريم مامشي الحال معي ورح امشي معك بالتفصيل شو هي المشكل:
اولا عملت دالة اسمها timing وجواتها في مصفوفات بعد ماتعمل الدالة بعض الحسابات وتضيف هالقيم للمصفوفات وضعت كومنت لحتى اعرف قيمة بس وحدة من هالمصفوفات لكن للاسف فقط القيمة صفر على الشاشة وهاد كود الدالة
كود PHP:void timing()
{
double ld_12;
double ld_20;
double ld_28;
for (int i_1 = 0; i_1 < Bars; i_1++) {
ld_12 = 0;
for (int i_2 = i_1; i_2 < NumBars + i_1; i_2++) ld_12 += (High[i_2] + Low[i_2]) / 2.0;
ld_20 = ld_12 / NumBars;
ld_12 = 0;
for (i_2 = i_1; i_2 < NumBars + i_1; i_2++) ld_12 += High[i_2] - Low[i_2];
ld_28 = 0.2 * (ld_12 / NumBars);
g_ibuf_80[i_1] = (High[i_1] - ld_20) / ld_28;
g_ibuf_92[i_1] = (Low[i_1] - ld_20) / ld_28;
g_ibuf_84[i_1] = (Open[i_1] - ld_20) / ld_28;
g_ibuf_88[i_1] = (Close[i_1] - ld_20) / ld_28;
Comment(DoubleToStr(g_ibuf_80[i_1],5)," ",Bars);
}
}
وهي صورة التشارت وقيمة المصفوفة صفر مثل مابتشوف على الشاشة
وجزاك الله عني كل خير
- 14-12-2011, 08:25 PM #96
اخي الكريم كمان نفس المشكلة مع الدالة سلس سميتها RSX
وانا وضعت لك المصفوفة المراد اظهار قيمتها داخل خطين من اشارات ++++++++++++++++++++
وممكن تقلي لازم يتم تعريف المصفوفات في بداية الاكسبيرت طبعا عملت التغيير بس ماظهرت اي قيم فقط صفر
وممكن تقلي القيمة المسندة لها تساي فعلا الصفر منشان هيك عملت كومنت تماما بعد سطر المصفوفة ووضعت داخل الكومنت اسم المصفوفة ثم القيمة الاخري بنفس الكومنت هي نفس القيمة المسندة للمصفوفة ورح تشوف انو بالصورة ظهرت قيمة المعادلة التي اسندت للمصفوفة ولكن قيمة المصفوفة لاحياة لمن تنادي قيمتها صفر فارجو منك المساعدة اخي العزيز جزاك الله عني كل خير وبتركك مع الكود والصورة وناااااااااااااااااااااااطرك على نار يا استاذنا
كود PHP:void RSX(int rsxPeriod)
{
#define wuBuffer 13
#define wdBuffer 14
double rsx_Blue_indecator[];
double rsxDa[];
double rsxDb[];
double rsx_Yellow_indecator[];
double rsx_Magenta_indecator[];
double rsx_Up_indecator[];
double rsx_Down_indecator[];
double trend[];
double wrkBuffer[][15];
int TmaHalfLength = MathMax(12,1);
double FullLength = 2.0*TmaHalfLength+1.0;
int counted_bars=IndicatorCounted();
int i,j,k,r,limit;
//if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit = MathMin(Bars-1,Bars-counted_bars+TmaHalfLength);
if (ArrayRange(wrkBuffer,0) != Bars) ArrayResize(wrkBuffer,Bars);
double Kg = (3.0)/(2.0+14);
double Hg = 1.0-Kg;
for(i=limit, r=Bars-i-1; i>=0; i--, r++)
{
wrkBuffer[r][TmaHalfLength] = iMA(NULL,rsxPeriod,1,0,MODE_SMA,0,i);
if (i==(Bars-1)) { for (int c=0; c<TmaHalfLength; c++) wrkBuffer[r][c] = 0; continue; }
double roc = wrkBuffer[r][TmaHalfLength]-wrkBuffer[r-1][TmaHalfLength];
double roa = MathAbs(roc);
for (k=0; k<3; k++)
{
int kk = k*2;
wrkBuffer[r][kk+0] = Kg*roc + Hg*wrkBuffer[r-1][kk+0];
wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1]; roc = 1.5*wrkBuffer[r][kk+0] - 0.5 * wrkBuffer[r][kk+1];
wrkBuffer[r][kk+6] = Kg*roa + Hg*wrkBuffer[r-1][kk+6];
wrkBuffer[r][kk+7] = Kg*wrkBuffer[r][kk+6] + Hg*wrkBuffer[r-1][kk+7]; roa = 1.5*wrkBuffer[r][kk+6] - 0.5 * wrkBuffer[r][kk+7];
}
if (roa != 0)
{ // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
rsx_Blue_indecator[i] = MathMax(MathMin((roc/roa+1.0)*50.0,100.00),0.00);
Comment(rsx_Blue_indecator[i]," ",MathMax(MathMin((roc/roa+1.0)*50.0,100.00),0.00));
} // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
else rsx_Blue_indecator[i] = 50.0;
}
for (i=limit; i>=0; i--) rsx_Yellow_indecator[i] = iMAOnArray(rsx_Blue_indecator,0,5,0,MODE_SMA,i);
if (trend[limit] == -1) ClearPoint(limit,rsxDa,rsxDb);
for(i=limit, r=Bars-i-1; i>=0; i--, r++)
{
rsxDa[i] = EMPTY_VALUE;
rsxDb[i] = EMPTY_VALUE;
trend[i] = trend[i+1];
if (rsx_Blue_indecator[i]>rsx_Yellow_indecator[i]) trend[i] = 1;
if (rsx_Blue_indecator[i]<rsx_Yellow_indecator[i]) trend[i] = -1;
if (trend[i] == -1) PlotPoint(i,rsxDa,rsxDb,rsx_Blue_indecator);
if (TmaApplyTo==0)
double price = rsx_Blue_indecator[i];
else price = rsx_Yellow_indecator[i];
double sum = (TmaHalfLength+1)*price;
double sumw = (TmaHalfLength+1);
for(j=1, k=TmaHalfLength; j<=TmaHalfLength; j++, k--)
{
if (TmaApplyTo==0)
sum += k*rsx_Blue_indecator[i+j];
else sum += k*rsx_Yellow_indecator[i+j];
sumw += k;
if (j<=i)
{
if (TmaApplyTo==0)
sum += k*rsx_Blue_indecator[i-j];
else sum += k*rsx_Yellow_indecator[i-j];
sumw += k;
}
}
rsx_Magenta_indecator[i] = sum/sumw;
double diff = price-rsx_Magenta_indecator[i];
if (i> (Bars-TmaHalfLength-2)) continue;
if (i==(Bars-TmaHalfLength-2))
{
rsx_Up_indecator[i] = rsx_Magenta_indecator[i];
rsx_Down_indecator[i] = rsx_Magenta_indecator[i];
if (diff>=0)
{
wrkBuffer[r][13] = MathPow(diff,2);
wrkBuffer[r][14] = 0;
}
else
{
wrkBuffer[r][14] = MathPow(diff,2);
wrkBuffer[r][13] = 0;
}
continue;
}
wrkBuffer[r][13] = wrkBuffer[r-1][13];
wrkBuffer[r][14] = wrkBuffer[r-1][14];
if(diff>0)
{
wrkBuffer[r][13] = (wrkBuffer[r-1][13]*(FullLength-1)+MathPow(diff,2))/FullLength;
wrkBuffer[r][14] = wrkBuffer[r-1][14]*(FullLength-1)/FullLength;
}
if(diff<0)
{
wrkBuffer[r][14] = (wrkBuffer[r-1][14]*(FullLength-1)+MathPow(diff,2))/FullLength;
wrkBuffer[r][13] = wrkBuffer[r-1][13]*(FullLength-1)/FullLength;
}
rsx_Up_indecator[i] = rsx_Magenta_indecator[i] + 2.8*MathSqrt(wrkBuffer[r][13]);
rsx_Down_indecator[i] = rsx_Magenta_indecator[i] - 2.8*MathSqrt(wrkBuffer[r][14]);
/*
rsx_Blue = rsx_Blue_indecator[1];
rsx_Yellow = rsx_Yellow_indecator[1];
rsx_Magenta = rsx_Magenta_indecator[1];
rsx_Up = rsx_Up_indecator[1];
rsx_Down = rsx_Down_indecator[1]; */
}
}
كود PHP:void ClearPoint(int i,double& first[],double& second[])
{
if ((second[i] != EMPTY_VALUE) && (second[i+1] != EMPTY_VALUE))
second[i+1] = EMPTY_VALUE;
else
if ((first[i] != EMPTY_VALUE) && (first[i+1] != EMPTY_VALUE) && (first[i+2] == EMPTY_VALUE))
first[i+1] = EMPTY_VALUE;
}
void PlotPoint(int i,double& first[],double& second[],double& from[])
{
if (first[i+1] == EMPTY_VALUE)
{
if (first[i+2] == EMPTY_VALUE) {
first[i] = from[i];
first[i+1] = from[i+1];
second[i] = EMPTY_VALUE;
}
else {
second[i] = from[i];
second[i+1] = from[i+1];
first[i] = EMPTY_VALUE;
}
}
else
{
first[i] = from[i];
second[i] = EMPTY_VALUE;
}
}
- 14-12-2011, 08:27 PM #97
- 14-12-2011, 08:40 PM #98
تفضل يا استاذي هاد هو المؤشر الاصلي كامل وشكرا على تجاوبك السريع:
كود PHP:#property copyright ""
#property link ""
#property indicator_separate_window
#property indicator_minimum -13.0
#property indicator_maximum 13.0
#property indicator_buffers 4
#property indicator_color1 Black
#property indicator_color2 Black
#property indicator_color3 Black
#property indicator_color4 Black
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1
#property indicator_width4 1
#property indicator_levelcolor Gold
#property indicator_levelstyle 2
#property indicator_level1 4.0
#property indicator_levelcolor1 Gold
#property indicator_level2 8.0
#property indicator_levelcolor2 Gold
#property indicator_level3 12.0
#property indicator_levelcolor3 Gold
#property indicator_level4 -4.0
#property indicator_levelcolor4 Gold
#property indicator_level5 -8.0
#property indicator_levelcolor5 Gold
#property indicator_level6 -12.0
#property indicator_levelcolor6 Gold
#property indicator_level7 0
#property indicator_levelcolor7 Gold
extern int NumBars = 5;
double g_ibuf_80[];
double g_ibuf_84[];
double g_ibuf_88[];
double g_ibuf_92[];
int init() {
SetIndexStyle(0, DRAW_NONE);
SetIndexBuffer(0, g_ibuf_80);
SetIndexStyle(1, DRAW_NONE);
SetIndexBuffer(1, g_ibuf_92);
SetIndexStyle(2, DRAW_NONE);
SetIndexBuffer(2, g_ibuf_84);
SetIndexStyle(3, DRAW_NONE);
SetIndexBuffer(3, g_ibuf_88);
IndicatorShortName(" ********** TIMING ");
return (0);
}
int deinit() {
Comment("");
return (0);
}
int start() {
double ld_12;
double ld_20;
double ld_28;
string l_name_44;
string l_name_52;
string ls_0 = " ********** TIMING ";
int li_8 = WindowFind(ls_0);
for (int l_index_40 = 0; l_index_40 < Bars; l_index_40++) {
ld_12 = 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_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);
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;
}
Sleep(1000);
ObjectsDeleteAll(li_8);
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);
}
}
ObjectCreate("actual_VCharte", OBJ_HLINE, li_8, 0, g_ibuf_88[0]);
ObjectSet("actual_Vcharte", OBJPROP_COLOR, Blue);
return (0);
}
- 14-12-2011, 08:45 PM #99
- 14-12-2011, 08:49 PM #100موضوع رائع بارك الله فيك وجعله ماتقدمه في ميزان حسناتك ان شاء الله
بس عندي سؤال : هل ممكن عمل اسكربت لفتح صفقات بيع او شراء بهدف 15 واستوب 20
مع مراعاة ان الدخول على اكثر من صفقة بأسلوب (هيدج )
وكيف تغيير حجم اللوت المستخدم للاسكربت ان امكن وحفظها الاعدادت مسبقا ...
وشكرا جزيلا لكآخر تعديل بواسطة أبوجلال ، 14-12-2011 الساعة 08:54 PM
- 14-12-2011, 09:31 PM #101
هاد اخي الكود الكامل للمؤشر يلي بالمشاركة 96
كود PHP://+------------------------------------------------------------------+
//| rsx + ma + tma asymmetric bands |
//| mladen |
//+------------------------------------------------------------------+
#property copyright "mladen"
#property link "[email protected]"
#property indicator_separate_window
#property indicator_buffers 7
#property indicator_color1 DeepSkyBlue
#property indicator_color2 Red
#property indicator_color3 Red
#property indicator_color4 Gold
#property indicator_color5 DimGray
#property indicator_color6 Red
#property indicator_color7 LimeGreen
#property indicator_style5 STYLE_DOT
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
extern int RsxPeriod = 14;
extern int RsxPrice = 0;
extern int SignalPeriod = 5;
extern int SignalMethod = MODE_SMA;
extern int TmaHalfLength = 12;
extern int TmaApplyTo = 0; // 0 -> to RSX, 1 -> to MA of RSX
extern double BandsDeviations = 2.8;
double rsx[];
double rsxDa[];
double rsxDb[];
double signal[];
double tmBuffer[];
double upBuffer[];
double dnBuffer[];
double trend[];
double wrkBuffer[][15];
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(8);
SetIndexBuffer(0,rsx);//Blue
SetIndexDrawBegin(0,TmaHalfLength+1);
SetIndexLabel(0,"RSX");
SetIndexBuffer(1,rsxDa);//Red
SetIndexDrawBegin(1,TmaHalfLength+1);
SetIndexLabel(1,"RSX");
SetIndexBuffer(2,rsxDb);
SetIndexDrawBegin(2,TmaHalfLength+1);
SetIndexLabel(2,"RSX");
SetIndexBuffer(3,signal);//Yellow
SetIndexDrawBegin(3,TmaHalfLength+1);
SetIndexLabel(3,"RSX signal");
SetIndexBuffer(4,tmBuffer);//Magenta
SetIndexDrawBegin(4,TmaHalfLength+1);
SetIndexBuffer(5,upBuffer);// UP
SetIndexDrawBegin(5,TmaHalfLength+1);
SetIndexBuffer(6,dnBuffer);// Down
SetIndexDrawBegin(6,TmaHalfLength+1);
SetIndexBuffer(7,trend);
TmaHalfLength = MathMax(TmaHalfLength,1);
IndicatorShortName("Rsx ("+RsxPeriod+")");
return(0);
}
int deinit() { return(0); }
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#define wuBuffer 13
#define wdBuffer 14
int start()
{
double FullLength = 2.0*TmaHalfLength+1.0;
int counted_bars=IndicatorCounted();
int i,j,k,r,limit;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit = MathMin(Bars-1,Bars-counted_bars+TmaHalfLength);
if (ArrayRange(wrkBuffer,0) != Bars) ArrayResize(wrkBuffer,Bars);
double Kg = (3.0)/(2.0+RsxPeriod);
double Hg = 1.0-Kg;
for(i=limit, r=Bars-i-1; i>=0; i--, r++)
{
wrkBuffer[r][12] = iMA(NULL,0,1,0,MODE_SMA,RsxPrice,i);
if (i==(Bars-1)) { for (int c=0; c<12; c++) wrkBuffer[r][c] = 0; continue; }
double roc = wrkBuffer[r][12]-wrkBuffer[r-1][12];
double roa = MathAbs(roc);
for (k=0; k<3; k++)
{
int kk = k*2;
wrkBuffer[r][kk+0] = Kg*roc + Hg*wrkBuffer[r-1][kk+0];
wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1]; roc = 1.5*wrkBuffer[r][kk+0] - 0.5 * wrkBuffer[r][kk+1];
wrkBuffer[r][kk+6] = Kg*roa + Hg*wrkBuffer[r-1][kk+6];
wrkBuffer[r][kk+7] = Kg*wrkBuffer[r][kk+6] + Hg*wrkBuffer[r-1][kk+7]; roa = 1.5*wrkBuffer[r][kk+6] - 0.5 * wrkBuffer[r][kk+7];
}
if (roa != 0)
rsx[i] = MathMax(MathMin((roc/roa+1.0)*50.0,100.00),0.00);
else rsx[i] = 50.0;
}
for (i=limit; i>=0; i--) signal[i] = iMAOnArray(rsx,0,SignalPeriod,0,SignalMethod,i);
if (trend[limit] == -1) ClearPoint(limit,rsxDa,rsxDb);
for(i=limit, r=Bars-i-1; i>=0; i--, r++)
{
rsxDa[i] = EMPTY_VALUE;
rsxDb[i] = EMPTY_VALUE;
trend[i] = trend[i+1];
if (rsx[i]>signal[i]) trend[i] = 1;
if (rsx[i]<signal[i]) trend[i] = -1;
if (trend[i] == -1) PlotPoint(i,rsxDa,rsxDb,rsx);
if (TmaApplyTo==0)
double price = rsx[i];
else price = signal[i];
double sum = (TmaHalfLength+1)*price;
double sumw = (TmaHalfLength+1);
for(j=1, k=TmaHalfLength; j<=TmaHalfLength; j++, k--)
{
if (TmaApplyTo==0)
sum += k*rsx[i+j];
else sum += k*signal[i+j];
sumw += k;
if (j<=i)
{
if (TmaApplyTo==0)
sum += k*rsx[i-j];
else sum += k*signal[i-j];
sumw += k;
}
}
tmBuffer[i] = sum/sumw;
double diff = price-tmBuffer[i];
if (i> (Bars-TmaHalfLength-2)) continue;
if (i==(Bars-TmaHalfLength-2))
{
upBuffer[i] = tmBuffer[i];
dnBuffer[i] = tmBuffer[i];
if (diff>=0)
{
wrkBuffer[r][wuBuffer] = MathPow(diff,2);
wrkBuffer[r][wdBuffer] = 0;
}
else
{
wrkBuffer[r][wdBuffer] = MathPow(diff,2);
wrkBuffer[r][wuBuffer] = 0;
}
continue;
}
wrkBuffer[r][wuBuffer] = wrkBuffer[r-1][wuBuffer];
wrkBuffer[r][wdBuffer] = wrkBuffer[r-1][wdBuffer];
if(diff>0)
{
wrkBuffer[r][wuBuffer] = (wrkBuffer[r-1][wuBuffer]*(FullLength-1)+MathPow(diff,2))/FullLength;
wrkBuffer[r][wdBuffer] = wrkBuffer[r-1][wdBuffer]*(FullLength-1)/FullLength;
}
if(diff<0)
{
wrkBuffer[r][wdBuffer] = (wrkBuffer[r-1][wdBuffer]*(FullLength-1)+MathPow(diff,2))/FullLength;
wrkBuffer[r][wuBuffer] = wrkBuffer[r-1][wuBuffer]*(FullLength-1)/FullLength;
}
upBuffer[i] = tmBuffer[i] + BandsDeviations*MathSqrt(wrkBuffer[r][wuBuffer]);
dnBuffer[i] = tmBuffer[i] - BandsDeviations*MathSqrt(wrkBuffer[r][wdBuffer]);
}
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void ClearPoint(int i,double& first[],double& second[])
{
if ((second[i] != EMPTY_VALUE) && (second[i+1] != EMPTY_VALUE))
second[i+1] = EMPTY_VALUE;
else
if ((first[i] != EMPTY_VALUE) && (first[i+1] != EMPTY_VALUE) && (first[i+2] == EMPTY_VALUE))
first[i+1] = EMPTY_VALUE;
}
void PlotPoint(int i,double& first[],double& second[],double& from[])
{
if (first[i+1] == EMPTY_VALUE)
{
if (first[i+2] == EMPTY_VALUE) {
first[i] = from[i];
first[i+1] = from[i+1];
second[i] = EMPTY_VALUE;
}
else {
second[i] = from[i];
second[i+1] = from[i+1];
first[i] = EMPTY_VALUE;
}
}
else
{
first[i] = from[i];
second[i] = EMPTY_VALUE;
}
}
والله يجزيك كل خيرآخر تعديل بواسطة turkm ، 14-12-2011 الساعة 09:34 PM
- 14-12-2011, 09:58 PM #102
هنا ستستعمل هذا الكود
كود:double CMA(int Type,int bar){ double G=0; double RG1; double RG2; double RG3; string Name1; string Name2; string SS1 = " ********** TIMING "; int SS2 = WindowFind(SS1); ArrayResize(Array1,Bars); ArrayResize(Array2,Bars); ArrayResize(Array3,Bars); ArrayResize(Array4,Bars); for (int j = 0; j < Bars; j++) { RG1 = 0; for (int GT1 = j; GT1 < NumBars + j; GT1++) RG1 += (High[GT1] + Low[GT1]) / 2.0; RG2 = RG1 / NumBars; RG1 = 0; for (GT1 = j; GT1 < NumBars + j; GT1++) RG1 += High[GT1] - Low[GT1]; RG3 = 0.2 * (RG1 / NumBars); Array1[ j] = (High[ j] - RG2) / RG3; Array4[ j] = (Low[ j] - RG2) / RG3; Array2[ j] = (Open[ j] - RG2) / RG3; Array3[ j] = (Close[ j] - RG2) / RG3; } switch(Type) { case 1: { G=Array1[bar]; break; } case 2: { G=Array2[bar]; break; } case 3: { G=Array3[bar]; break; } case 4: { G=Array4[bar]; break; } } return(G); }
كود:[LEFT]
extern int NumBars = 5; double Array1[]; double Array2[]; double Array3[]; double Array4[];وتستعمله من
كود:CMA(int Type,int bar)
وأكتب مكان bar رقم الشمعة فلو أردت أن تعطيك الدالة الشمعة الحالية أكتب 0 والسابقة 1 وقبل السابقة 2 وهكذا
وهذا مثال سأستعمل الكود بأسكربت وأجعله يظهر أرقام بصندوق عن قيمة المؤشر
كود:#property show_inputs extern int NumBars = 5; extern int Singal=1; // 1 or 2 or 3 or 4 extern int barTest=0; // رقم الشمعة double Array1[]; double Array2[]; double Array3[]; double Array4[]; int start() { double T=CMA(Singal,barTest); Alert(T); return(0); } double CMA(int Type,int bar){ double G=0; double RG1; double RG2; double RG3; string Name1; string Name2; string SS1 = " ********** TIMING "; int SS2 = WindowFind(SS1); ArrayResize(Array1,Bars); ArrayResize(Array2,Bars); ArrayResize(Array3,Bars); ArrayResize(Array4,Bars); for (int j = 0; j < Bars; j++) { RG1 = 0; for (int GT1 = j; GT1 < NumBars + j; GT1++) RG1 += (High[GT1] + Low[GT1]) / 2.0; RG2 = RG1 / NumBars; RG1 = 0; for (GT1 = j; GT1 < NumBars + j; GT1++) RG1 += High[GT1] - Low[GT1]; RG3 = 0.2 * (RG1 / NumBars); Array1[ j] = (High[ j] - RG2) / RG3; Array4[ j] = (Low[ j] - RG2) / RG3; Array2[ j] = (Open[ j] - RG2) / RG3; Array3[ j] = (Close[ j] - RG2) / RG3; } switch(Type) { case 1: { G=Array1[bar]; break; } case 2: { G=Array2[bar]; break; } case 3: { G=Array3[bar]; break; } case 4: { G=Array4[bar]; break; } } return(G); }آخر تعديل بواسطة Ram22 ، 14-12-2011 الساعة 10:00 PM
- 14-12-2011, 10:10 PM #103
- 15-12-2011, 08:31 AM #104
- 15-12-2011, 11:00 AM #105
ماشاء الله موضوع تعليمي اسلوب سلس تماما والله احنا محظوظين بأستاذ مثل حضرتك
استمر بارك الله فيك