النتائج 8,371 إلى 8,385 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 30-07-2017, 02:27 AM #8371
السلام عليكم اخي اسامة
هل يمكن ان احدد على شمعة الاربع ساعات او الديلي هاي او للو شمعة الدقيقة ايهما سبق ...
يعني لدي شمعة للاربع ساعات نازلة ويكون السعر صعد اولا ثم نزل كيف اعرف دلك ... اقصد برمجيا
- 30-07-2017, 02:33 AM #8372
السلام عليكم اخي اسامة
سؤال اخر واعتدر على الزعاج
عندما نشتغل على مؤشر عادة نستعمل اما الهاي او اللو الاغلاق او الافتتاح كيف اجعل المؤشر يمر على جميع التكات
ءاريت يكون السؤال واضح
تحياتي لك اخي الكريم
- 30-07-2017, 04:40 AM #8373
الخوارزم:
1) تسجل تاريخ بدء الشمعة على الاربع ساعات
2) تسجيل تاريخ نهاية الشمعة (يعني بدء الشمعة بعدها)
فهذا جسد شمعة الاربع ساعات زمنيا
3) تذهب الى فريم 1 دقيقة
4) تحول تاريخ البدء الى رقم البارة
5) تحاول تاريخ النهاية الى رقم بارة
فيصبح لديك رقمين
5) تستخدم دوال اكتشاف الهاي او اللو بين الرقمين
-
6) رقم بارة الهاي و بارة اللو -- تقارن بينهم ومنها تعرف ايهما سبق.
- 30-07-2017, 01:08 PM #8374
- 30-07-2017, 01:08 PM #8375
ضعه على اربع ساعات واضغط اي شمعة
ثم غير فريم دقيقة لتتأكد--- مع فريم دقيقة سيلغي مفعول الضغط ولن تتغير القيم.
للشموع البعيدة اتي باانات 1 ديقة غر متاحة ممكن تغير من دقيقة الى ربع ساعة الى نصف ساعة الى ساعة - مع تعديل مايلزم
كود PHP:int OnInit()
{
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
double high;
double low;;
void OnTimer()
{
int j = bar_1M_Frame_Start;
int k = bar_1M_Frame_E_N_D;
high = iHigh(NULL, PERIOD_M1, bar_1M_Frame_Start);
low = iLow (NULL, PERIOD_M1, bar_1M_Frame_E_N_D);
int iH=bar_1M_Frame_Start;
int iL=bar_1M_Frame_Start;
for(int i=j;i>k;i--)
{
if(high<iHigh(NULL, PERIOD_M1, i))
{
high=iHigh(NULL, PERIOD_M1, i);
iH=i;
}
if(low>iLow (NULL, PERIOD_M1, i))
{
low=iHigh(NULL, PERIOD_M1, i);
iL=i;
}
}
if(iH>iL) string aa="HighFirst";
else if(iH<iL) aa="LowxFirst";
else if(iH==iL) aa="@sameCandle";
else aa="ambiguous";
ObjectCreate( "aa",OBJ_LABEL,0,0,0);
ObjectSet( "aa",OBJPROP_CORNER,0);
ObjectSet( "aa",OBJPROP_XDISTANCE,0);
ObjectSet( "aa",OBJPROP_YDISTANCE,60);
ObjectSetText("aa",aa,13,"TAHOMA",clrLime);
ObjectCreate( "high",OBJ_LABEL,0,0,0);
ObjectSet( "high",OBJPROP_CORNER,0);
ObjectSet( "high",OBJPROP_XDISTANCE,0);
ObjectSet( "high",OBJPROP_YDISTANCE,20);
ObjectSetText("high","H: "+DoubleToStr(high,MarketInfo(NULL,MODE_DIGITS))+"@"+TimeToStr(iTime(NULL,PERIOD_M1,iH),TIME_DATE|TIME_MINUTES),13,"TAHOMA",clrLime);
ObjectCreate( "low",OBJ_LABEL,0,0,0);
ObjectSet( "low",OBJPROP_CORNER,0);
ObjectSet( "low",OBJPROP_XDISTANCE,0);
ObjectSet( "low",OBJPROP_YDISTANCE,40);
ObjectSetText("low","L: "+DoubleToStr(low,MarketInfo(NULL,MODE_DIGITS))+"@"+TimeToStr(iTime(NULL,PERIOD_M1,iL),TIME_DATE|TIME_MINUTES),13,"TAHOMA",clrOrange);
}
//+------------------------------------------------------------------+
//| ChartEvent function |
///////////////////////////////////////////////////////////////////
int bar_1M_Frame_Start;
int barThisFrame_Start;
int bar_1M_Frame_E_N_D;
int barThisFrame_E_N_D;
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
if(id==CHARTEVENT_CLICK)
{
//--- Prepare variables
if(Period()>PERIOD_M1)
{
int x =(int)lparam;
int y =(int)dparam;
datetime dt =0;
double price =0;
int window=0;
//--- Convert the X and Y coordinates in terms of date/time
if(ChartXYToTimePrice(0,x,y,window,dt,price))
{
bar_1M_Frame_Start=iBarShift(NULL,PERIOD_M1,dt);
barThisFrame_Start=iBarShift(NULL,0,dt);
barThisFrame_E_N_D=iBarShift(NULL,0,dt)-1;
dt=iTime(NULL,0,barThisFrame_E_N_D);
bar_1M_Frame_E_N_D=iBarShift(NULL,PERIOD_M1,dt);
}
}
}
}
//+------------------------------------------------------------------+
آخر تعديل بواسطة فيلسوف البادية ، 30-07-2017 الساعة 01:12 PM
- 30-07-2017, 02:29 PM #8376
- 31-07-2017, 06:29 PM #8377
شكرا أستاذ أسامة جزاك الله خيرا
عندى مشكلة أرجوا ان تطلعنى ما الخطأ فى الكود التالى حيث ان (SetIndexBuffer(2,trend_Up وايضا( SetIndexBuffer(3,trend_Dn لا تظهر على الشارت
كود:#property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 Lime #property indicator_color2 Red #property indicator_color3 Lime #property indicator_color4 Red input int PeriodEnve = 14; input ENUM_MA_METHOD Method = 0; input int period = 14; input double deviation = 0.2; input bool FirstSignalFilter =true; input bool Enable_Alert =true; input bool Send_Notifications =false; input bool Send_Mail =false; double pvi[]; double bandUp[]; double bandDn[]; double trend_Up []; double trend_Dn []; double swing_Up []; double swing_Dn []; datetime Timee; int LastSignal; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { IndicatorDigits(2); IndicatorBuffers(7); SetIndexBuffer(0,swing_Up ); SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,164); SetIndexBuffer(1,swing_Dn ); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,164); SetIndexBuffer(2,trend_Up ); SetIndexStyle(2,DRAW_ARROW); SetIndexArrow(2,221); SetIndexBuffer(3,trend_Dn ); SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(3,222); SetIndexBuffer(4,pvi ); SetIndexBuffer(5,bandUp ); SetIndexBuffer(6,bandDn ); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { double iatr = iATR(Symbol(), 0, 50, 1); int counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; int limit =Bars-100; double vol0, vol1; double PVI=1; double close0,close1; for (int i=limit; i>=0; i--) { vol1=Volume[i+1]; vol0=Volume[i]; close1=Close[i+1]; close0=Close[i]; if (vol0>vol1) PVI=PVI+((close0-close1)/(close1*PVI)); if (vol0<=vol1) PVI=PVI ; pvi[i]=PVI; } for (int i=limit; i>=0; i--) { bandUp[i] = iEnvelopesOnArray(pvi,0,PeriodEnve,Method,0,deviation,MODE_UPPER,i); bandDn[i] = iEnvelopesOnArray(pvi,0,PeriodEnve,Method,0,deviation,MODE_LOWER,i); if (pvi [i] > bandUp[i] &&(LastSignal!=1||!FirstSignalFilter)) { swing_Up[i] = Low[i] - iatr /2.0; LastSignal=1; if(Timee!=Time[0]&&i==1) { if(Enable_Alert)Alert("swing Arrow Up"+Symbol()+" TF: "+TimeFrame(Period())); if(Send_Mail)SendMail("swing Arrow Up","swing Arrow Up "+Symbol()+" TF: "+TimeFrame(Period())); if(Send_Notifications)SendNotification("swing Arrow Up "+Symbol()+" TF: "+TimeFrame(Period())); Timee=Time[0]; } } if (pvi[i] < bandDn[i]&&(LastSignal!=-1||!FirstSignalFilter)) { swing_Dn[i] = High[i] + iatr /2.0; LastSignal=-1; if(Timee!=Time[0]&&i==1) { if(Enable_Alert)Alert("swing Arrow Down"+Symbol()+" TF: "+TimeFrame(Period())); if(Send_Mail)SendMail("swing Arrow Down","swing Arrow Down "+Symbol()+" TF: "+TimeFrame(Period())); if(Send_Notifications)SendNotification("swing Arrow Down "+Symbol()+" TF: "+TimeFrame(Period())); Timee=Time[0]; } } } //----------------------------------------------------------------------------------------------------------------- for (int i=limit; i>=0; i--) { double mfi1 = iMFI(Symbol(), 0,period,i); double mfi2 = iMFI(Symbol(), 0,period,i+1); if ( mfi2 <25 && mfi1 >25 && pvi[i] > bandUp[i] &&(LastSignal!=1||!FirstSignalFilter)) { trend_Up[i] = Low[i] - iatr /2.0; LastSignal=1; if(Timee!=Time[0]&&i==1) { if(Enable_Alert)Alert("trend Arrow Up"+Symbol()+" TF: "+TimeFrame(Period())); if(Send_Mail)SendMail("trend Arrow Up","trend Arrow Up "+Symbol()+" TF: "+TimeFrame(Period())); if(Send_Notifications)SendNotification("trend Arrow Up "+Symbol()+" TF: "+TimeFrame(Period())); Timee=Time[0]; } } if ( mfi2 >75 && mfi1 <75&& pvi[i] < bandDn[i]&&(LastSignal!=-1||!FirstSignalFilter)) { trend_Dn[i] = High[i] + iatr /2.0; LastSignal=-1; if(Timee!=Time[0]&&i==1) { if(Enable_Alert)Alert("trend Arrow Down"+Symbol()+" TF: "+TimeFrame(Period())); if(Send_Mail)SendMail("trend Arrow Down","trend Arrow Down "+Symbol()+" TF: "+TimeFrame(Period())); if(Send_Notifications)SendNotification("trend Arrow Down "+Symbol()+" TF: "+TimeFrame(Period())); Timee=Time[0]; } } } return(rates_total); } //------------------------------------------------------------------ string TimeFrame(int TF) { if(TF==1)return("M1"); else if(TF==5)return("M5"); else if(TF==15)return("M15"); else if(TF==30)return("M30"); else if(TF==60)return("H1"); else if(TF==240)return("H4"); else if(TF==1440)return("D1"); else if(TF==10080)return("W1"); else if(TF==43200)return("MN"); else return(""); }
آخر تعديل بواسطة mohamed2012 ، 31-07-2017 الساعة 06:32 PM
- 01-08-2017, 06:58 AM #8378
تظهر كلها
غيرها الى اربعة الوان بدل لونين لكي تميزها
- 01-08-2017, 07:55 AM #8379
void OnTimer()
{
int j = bar_1M_Frame_Start;
int k = bar_1M_Frame_E_N_D;
high = iHigh(NULL, PERIOD_M1, bar_1M_Frame_Start);
low = iLow (NULL, PERIOD_M1, bar_1M_Frame_E_N_D);
صحح هذا الخطأ الى:
low = iLow (NULL, PERIOD_M1, bar_1M_Frame_Start);
- 01-08-2017, 08:12 AM #8380
اعتقد استاذ أسامة أنى عرفت أين المشكلة لكن لم استطيع كتابة الكود الخاص بها
وهى أن (SetIndexBuffer(2,trend_Up لكى يتحقق شرطها لا بد ان تكون (SetIndexBuffer(0,swing_Up هى اخر ظهور لها على الشارت وتمثل حالة الشراء
وايضا ( SetIndexBuffer(3,trend_Dn لكى يتحقق شرطها لا بد ان تكون (SetIndexBuffer(1,swing_Dn هى أخر ظهور لها على الشارت وتمثل حالة البيع
بمعنى أوضح أخر أشارة لما تكون شراء يتحقق شرط trend_up , واخر اشارة تكون بيع يتحقق شرط trend_dn
ويسبقهم الشرط الاساسى لمؤشر mfi كما هو موضح بالكود
كود:if ( mfi2 <25 && mfi1 >25 && pvi[i] > bandUp[i] &&(LastSignal!=1||!FirstSignalFilter)) { trend_Up[i] = Low[i] - iatr /2.0; LastSignal=1;
كود:if ( mfi2 >75 && mfi1 <75&& pvi[i] < bandDn[i]&&(LastSignal!=-1||!FirstSignalFilter)) { trend_Dn[i] = High[i] + iatr /2.0; LastSignal=-1;
- 01-08-2017, 08:14 AM #8381
- 01-08-2017, 03:33 PM #8382
بدلا من إستخدام المتغير LastSignal في شرط المقارنه إستخدم المصفوفه نفسها لمعرفة آخر إشارة كانت بيع أو شراء
مثال
كود PHP:int CheckLastSignal(int shift)
{
for(int i=shift;i<Bars;i++)
{
if( swing_Up[i]!=EMPTY_VALUE)return(1);
if(swing_Dn[i]!=EMPTY_VALUE)return(-1);
}
return(0);
}
كود PHP:if ( mfi2 <25 && mfi1 >25 && pvi[i] > bandUp[i] &&(CheckLastSignal(i)!=1||!FirstSignalFilter))
- 01-08-2017, 08:19 PM #8383
- 02-08-2017, 03:17 PM #8384
- 02-08-2017, 05:11 PM #8385
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM