النتائج 1 إلى 7 من 7
الموضوع: طلب بسيط خفيف ؟
- 05-11-2011, 01:13 AM #1
طلب بسيط خفيف ؟
السلا عليكم
اخي الكريم
اريد منك برمجة مؤشر خفيف على الشكل التالي
مجموع عدد من الشموع مقسومة على نفسها
مثال
1+2+3+4+5/5
فقط لا غير
ملاحظة
اعرف ان الموفينج افرج يعمل نفس الشيء
ولكن عندما نضرت الى برمجته لم افهم كيف يحسب المعادلة المطلوبة كونه مليء بالاكواد البرمجية
وانا لا اريد كل هذه الاكواد
فقط اريد مجرد ماذكرته سابقا فقط لا غير
ولك الفففففففففففففففففففففففففففففففففففففففففففففففف ففف شكر
- 05-11-2011, 05:40 PM #2
.
- 05-11-2011, 05:52 PM #3
الإختلاف بسيط
بالنسبة لمؤشر الموفينج فسوف تجد أن الكود كبير قليلا لأنه به خيارات أخرى وهي نوع الموفينج هل هو سيمبل أو إكسبونشل,,,,, إلخ
الجزء المهم لديك هو
كود PHP:void sma()
{
double sum=0;
int i,pos=Bars-ExtCountedBars-1;
//---- initial accumulation
if(pos<MA_Period) pos=MA_Period;
for(i=1;i<MA_Period;i++,pos--)
sum+=Close[pos];
//---- main calculation loop
while(pos>=0)
{
sum+=Close[pos];
ExtMapBuffer[pos]=sum/MA_Period;
sum-=Close[pos+MA_Period-1];
pos--;
}
//---- zero initial bars
if(ExtCountedBars<1)
for(i=1;i<MA_Period;i++) ExtMapBuffer[Bars-i]=0;
}
ويمكنك حذف باقي الدوال الأخرى وهي
كود PHP:void ema()
{
double pr=2.0/(MA_Period+1);
int pos=Bars-2;
if(ExtCountedBars>2) pos=Bars-ExtCountedBars-1;
//---- main calculation loop
while(pos>=0)
{
if(pos==Bars-2) ExtMapBuffer[pos+1]=Close[pos+1];
ExtMapBuffer[pos]=Close[pos]*pr+ExtMapBuffer[pos+1]*(1-pr);
pos--;
}
}
//+------------------------------------------------------------------+
//| Smoothed Moving Average |
//+------------------------------------------------------------------+
void smma()
{
double sum=0;
int i,k,pos=Bars-ExtCountedBars+1;
//---- main calculation loop
pos=Bars-MA_Period;
if(pos>Bars-ExtCountedBars) pos=Bars-ExtCountedBars;
while(pos>=0)
{
if(pos==Bars-MA_Period)
{
//---- initial accumulation
for(i=0,k=pos;i<MA_Period;i++,k++)
{
sum+=Close[k];
//---- zero initial bars
ExtMapBuffer[k]=0;
}
}
else sum=ExtMapBuffer[pos+1]*(MA_Period-1)+Close[pos];
ExtMapBuffer[pos]=sum/MA_Period;
pos--;
}
}
//+------------------------------------------------------------------+
//| Linear Weighted Moving Average |
//+------------------------------------------------------------------+
void lwma()
{
double sum=0.0,lsum=0.0;
double price;
int i,weight=0,pos=Bars-ExtCountedBars-1;
//---- initial accumulation
if(pos<MA_Period) pos=MA_Period;
for(i=1;i<=MA_Period;i++,pos--)
{
price=Close[pos];
sum+=price*i;
lsum+=price;
weight+=i;
}
//---- main calculation loop
pos++;
i=pos+MA_Period;
while(pos>=0)
{
ExtMapBuffer[pos]=sum/weight;
if(pos==0) break;
pos--;
i--;
price=Close[pos];
sum=sum-lsum+price*MA_Period;
lsum-=Close[i];
lsum+=price;
}
//---- zero initial bars
if(ExtCountedBars<1)
for(i=1;i<MA_Period;i++) ExtMapBuffer[Bars-i]=0;
}
بدلا من هذا الجزء
كود PHP:switch(MA_Method)
{
case 0 : sma(); break;
case 1 : ema(); break;
case 2 : smma(); break;
case 3 : lwma();
}
كود PHP:sma();
- 06-11-2011, 11:35 AM #4
هل لك ان تصلح الخطء
int start()
{
//----
double A;
for(int i=0;i<Bars;i++)
{
for(int C=0;C<=MA_Period;C++)
A=C+Close[i];
ExtMapBuffer1[i]=A/MA_Period;
}
//----
return(0);
}
//+---------------------------------------------------------
المطلوب عمله من المؤشر مجموع 5 شموع /5
لكن يظهر الخط بعيدا عن الشموع للاسفل
- 06-11-2011, 04:03 PM #5
- 06-11-2011, 09:00 PM #6
شكرا لاهتمامك اخي الكريم
لكن هناك خطء بالكود الذي ادرجته لي
فعندما قمت بتشغيله اعطى خط عمودي من الشمعة 0 بدل ان يكون خط افقي يمشي مع الشموع
ارجو تصحيح الخطء بارك الله فيك
- 07-11-2011, 12:35 PM #7
.