نشارت اسفل فريم ديلي---اخر 50 يوم لم يحدث قطع على اليورو دولار--كان زوج شاد والقطع السابق قبل اكثير من خمسين يوم لازال شراء!
http://www3.0zz0.com/2017/07/12/21/220592655.png
Printable View
نشارت اسفل فريم ديلي---اخر 50 يوم لم يحدث قطع على اليورو دولار--كان زوج شاد والقطع السابق قبل اكثير من خمسين يوم لازال شراء!
http://www3.0zz0.com/2017/07/12/21/220592655.png
موضوع رائع اخي فيلسوف البادية وشكرا على وضع الكود
واتمنى كلما انهيت فقرة تضع الاكواد الخاصة بها واعتذر عن ازعاجك
اكمل اخي الكريم موضوع شيق
اكمل اخي الكريم موضوع شيق انا متابع معك واعتقد الكثير كذلك ولكن في صمت
بخصوص المنتدى الاجنبي انا مسجل فيه ولم ادخله من زمان
بارك الله فيك وكثر الله من امثالك
لاشك نحتاج صفحتين--فكر برمجيا
كلنا لا ندري ولكن مع المحاولة ندري
رجاء حاول-شرف المحاولة
مثلا محتاجين for تعد من كم؟؟ من 0 الى 40 ام من 0 الى 49 ؟؟
ام تكون مشروطة برقم الصفحة ؟
بالعقل عدد الصفحات = 2--صفحة لاول 4 صفقة و الصفحة الثانية للصفقات التسع الباقية
هذه المسألة تحديدا لانها فكرية وفيها تعقيد اريد ان تكون من خلال حوار وتفكير بعيدا عن التلقين.
نريد منهم جواب
أي الثلاثة يحل المشكلة؟
كود:for(j=0;j<=40;j++)
for(j=0;j<=49;j++)
for(j=(PageNumber-1)*40;j<=(PageNumber-1)*40+40;j++)
نريد عدد الصفحات ديناميكي--على مقاس الصفقات؟
بالعقل القانون هو عدد الصفقات تقسيم صفقات اصلفحة الواحدة
سيكون الناتج عدد كسري غالبا - اذا نأخذ سقفه الصحيح
سقف 3.4 هو 4
سقف 1.24857 هو 2
العدد الصحيح بعد الكسر.
ونضيف صفحة اضافية فارغة بزيادة 1 صحيح على قيمة السقف.
اريدك ان تتصور ان عدد الصفقات 80 وعدد فقات اصلفحة الواحدة 40
اذن عدد الصفحات = 2.00 -- 80 تقسيم 40
اريدك ان تتصور اننا سنكرر اخر صفقة في الصفحة السابقةكأول صفقة في الصفحة الجديدة!!
تبرز من هنا اهمية صفحة اضافية.
غير ذلك الصفقة رقم 80 لن نراها
نعم شادي
-
for(j=(PageNumber-1)*40;j<=(PageNumber-1)*40+40;j++)ff
لو كان رقم الصفحة 2
اذن PageNumber=2
اذن نعوض:
for(j=(2-1)*40;j<=(2-1)*40+40;j++)ff
for(j=40;j<=80;j++)ff
سيعرض الصفقات من رقم 40 الى رقم 80
اين هذا الذي نضغط عليه فيعرف اننا اخترنا صفقة رقم 2!!
ج: نظرية "ارسم وادعس"
للصعوبة سيكون فيه توسع في الشرح--بحيث لاتشعر انت انه كان هناك صعوبة وتمر الامور الى ذهنك بسلاسة.
فنحن نتوقع اشياء على الصفحة على شاكلة 1 ثم 2 ثم 3 الخ
اذا ضغطنا على 1 يختار صفحة-1 وهكذ1
نضيف السطرين التاليين:
http://www11.0zz0.com/2017/07/14/03/990944925.png
حسب اخر سطرين أعلاه البرنامج بشكل اتوماتيكي حدد عدد الصفحات المناسب.
الآن نرسم ترقيم الصفحات على التشارت, بحيث فيما بعد اذا ضغطنا على اي رقم يذهب للصفحة المباشرة.
سيرسم اشياء عددها يساوي عدد الصفحات.
http://www7.0zz0.com/2017/07/14/04/348907655.png
طبعا مجرد ارقام على التشارت لامعنى لها حتى الان:
لابد من تفعيل وظيفتها كاشياء في دالة الضغط OnChartEvent
ماسم الاشياء الاخيرة التي نرسمنها
ج:
Page_Number_ ثم حرف i الذي هو ترقيم الصفحات
اذن من خلال الاسم الذي يحدد هذا الشيء "this object" نفعل هذه الاشياء:
http://www6.0zz0.com/2017/07/14/04/396055763.png
http://www8.0zz0.com/2017/07/14/04/924609824.png
ليش 3 صفحات؟
لأن 50 صفقة تقسيم 40 = 1.25--وبالتالي سقفها 2
ونضيف عليها 1 تساوي 3
كود PHP:string SELECTOR ="POSITIONS";
int PageNumber=1;
string str;
string S[] = {"EUR" ,"GBP" ,"AUD" ,"NZD" ,"USD" ,"CAD" ,"CHF" ,"JPY"};
string pairs[28];
string pair_0[28];
int NoOfCandles=50;
int OnInit()
{
ChartSetInteger(0,CHART_FOREGROUND,0,FALSE);
ChartSetInteger(0,CHART_COLOR_BACKGROUND,clrBlack);
ChartSetInteger(0,CHART_COLOR_CHART_LINE,ChartGetInteger(0,CHART_COLOR_BACKGROUND));
ChartSetInteger(0,CHART_MODE,CHART_LINE);
ChartSetInteger(0,CHART_SHOW_GRID,0,FALSE);
ChartSetInteger(0,CHART_SHOW_OHLC,0,FALSE);
ChartSetInteger(0,CHART_SHOW_BID_LINE,0,FALSE);
ObjectCreate( "CHART_HIDE",OBJ_LABEL,0,0,0);
ObjectSet( "CHART_HIDE",OBJPROP_CORNER,0);
ObjectSet( "CHART_HIDE",OBJPROP_XDISTANCE,5);
ObjectSet( "CHART_HIDE",OBJPROP_YDISTANCE,25);
ObjectSetText("CHART_HIDE",CharToStr(108),12,"wingdings",clrRed);
ObjectCreate( "CHART_CANDLES",OBJ_LABEL,0,0,0);
ObjectSet( "CHART_CANDLES",OBJPROP_CORNER,0);
ObjectSet( "CHART_CANDLES",OBJPROP_XDISTANCE,25);
ObjectSet( "CHART_CANDLES",OBJPROP_YDISTANCE,25);
ObjectSetText("CHART_CANDLES",CharToStr(108),12,"wingdings",clrYellow);
ObjectCreate( "CHART_LINE",OBJ_LABEL,0,0,0);
ObjectSet( "CHART_LINE",OBJPROP_CORNER,0);
ObjectSet( "CHART_LINE",OBJPROP_XDISTANCE,45);
ObjectSet( "CHART_LINE",OBJPROP_YDISTANCE,25);
ObjectSetText("CHART_LINE",CharToStr(108),12,"wingdings",clrWhite);
EventSetTimer(1);
str =StringSubstr(Symbol(),6,10);
///////////////////////////
int j=-1;
for(int i=0;i<=6;i++)
{
for(int k=i+1;k<=7;k++)
{
j++;
pairs[j]=S[i]+S[k]+str;
pair_0[j]=pairs[j];
}
}
return(INIT_SUCCEEDED);
}
////////////////////////
void OnTimer()
{
ChartSetInteger(0,CHART_FOREGROUND,0,BackOrForeground);
ChartSetInteger(0,CHART_COLOR_CHART_LINE,LineColor);
ChartSetInteger(0,CHART_MODE,ChartMode);
ObjectCreate( "ACTIVATE_ALL",OBJ_LABEL,0,0,0);
ObjectSet( "ACTIVATE_ALL",OBJPROP_CORNER,0);
ObjectSet( "ACTIVATE_ALL",OBJPROP_XDISTANCE,25);
ObjectSet( "ACTIVATE_ALL",OBJPROP_YDISTANCE,425);
ObjectSetText("ACTIVATE_ALL",CharToStr(110),12,"wingdings",clrLime);
ObjectCreate( "CANCEL_ALL",OBJ_LABEL,0,0,0);
ObjectSet( "CANCEL_ALL",OBJPROP_CORNER,0);
ObjectSet( "CANCEL_ALL",OBJPROP_XDISTANCE,45);
ObjectSet( "CANCEL_ALL",OBJPROP_YDISTANCE,425);
ObjectSetText("CANCEL_ALL",CharToStr(110),12,"wingdings",clrGray);
ObjectCreate( "REMOVE_EXPERT",OBJ_LABEL,0,0,0);
ObjectSet( "REMOVE_EXPERT",OBJPROP_CORNER,0);
ObjectSet( "REMOVE_EXPERT",OBJPROP_XDISTANCE, 195);
ObjectSet( "REMOVE_EXPERT",OBJPROP_YDISTANCE, 0);
ObjectSetText( "REMOVE_EXPERT",CharToStr(255),18,"Wingdings",clrWhite);
ObjectCreate( "CLEAN_CHART",OBJ_LABEL,0,0,0);
ObjectSet( "CLEAN_CHART",OBJPROP_CORNER,0);
ObjectSet( "CLEAN_CHART",OBJPROP_XDISTANCE,145);
ObjectSet( "CLEAN_CHART",OBJPROP_YDISTANCE,0);
ObjectSetText("CLEAN_CHART","DEL",15,"Times New Roman",clrWhite);
if(SELECTOR=="POSITIONS") color SelClr=clrLime;
else SelClr=clrGray;
ObjectCreate( "POSITIONS",OBJ_LABEL,0,0,0);
ObjectSet( "POSITIONS",OBJPROP_CORNER,0);
ObjectSet( "POSITIONS",OBJPROP_XDISTANCE,400);
ObjectSet( "POSITIONS",OBJPROP_YDISTANCE,0);
ObjectSetText("POSITIONS",CharToStr(174),12,"wingdings",SelClr);
if(SELECTOR=="HISTORY") SelClr=clrLime;
else SelClr=clrGray;
ObjectCreate( "HISTORY",OBJ_LABEL,0,0,0);
ObjectSet( "HISTORY",OBJPROP_CORNER,0);
ObjectSet( "HISTORY",OBJPROP_XDISTANCE,420);
ObjectSet( "HISTORY",OBJPROP_YDISTANCE,0);
ObjectSetText("HISTORY",CharToStr(174),12,"wingdings",SelClr);
ObjectCreate( "Object_Name",OBJ_LABEL,0,0,0);
ObjectSet( "Object_Name",OBJPROP_CORNER,0);
ObjectSet( "Object_Name",OBJPROP_XDISTANCE,245);
ObjectSet( "Object_Name",OBJPROP_YDISTANCE,0);
ObjectSetText("Object_Name",Object_Name,11,"Times New Roman",clrWhite);
/////////////////////////
int PairTotallPosition[28];
int PairPositionSerial[28][200];
int PairEntryCandle[28][200];
string Pair_Order_Type[28][200];
string Pair_Order_Symbol[28][200];
double Pair_Entry_Price[28][200];
////////
int TotalPositions;
/////////////
for(int i=0;i<=27;i++)
{//for(i=0;i<28;i++)
PairTotallPosition[i]=-1;
if(pairs[i]==pair_0[i])
{//if(pairs[i]==pair_0[i])
for(int j=NoOfCandles;j>=1;j--)
{//for(int j=0;j<=NoOfCandles;j++)
double x0=iAO(pair_0[i],0,j+1);
double x1=iAO(pair_0[i],0,j+2);
if((x0<=0 && x1>=0) || (x0>=0 && x1<=0))
{//if((x0<0 && x1>0) || (x0>0 && x1<0))
TotalPositions++;
PairTotallPosition[i]++;
int m=PairTotallPosition[i];
PairPositionSerial[i][m]=m;
PairEntryCandle[i][m]=j;
Pair_Order_Symbol[i][m]=pair_0[i];
Pair_Entry_Price[i][m]=iOpen(pair_0[i],0,j);
if(x0>=0 && x1<=0)
{
Pair_Order_Type[i][m]="BUY";
}
if(x0<=0 && x1>=0)
{
Pair_Order_Type[i][m]="SELL";
}
}//if((x0<0 && x1>0) || (x0>0 && x1<0))
//--
//-
//-
}//for(int j=0;j<=NoOfCandles;j++)
}//if(pairs[i]==pair_0[i])
}//for(i=0;i<28;i++)
Comment(TotalPositions);
double PositionsPerPage=40.0;
int TotalPages=MathCeil(TotalPositions/PositionsPerPage)+1;
for(i=1;i<=TotalPages;i++)
{
if(i==PageNumber) color clrPage=clrRed;
else clrPage=clrWhite;
ObjectCreate( "Page_Number_"+i, OBJ_LABEL,0,0,0);
ObjectSet( "Page_Number_"+i, OBJPROP_CORNER,0);
ObjectSet( "Page_Number_"+i, OBJPROP_XDISTANCE,80+20*i);
ObjectSet( "Page_Number_"+i, OBJPROP_YDISTANCE,30);
ObjectSetText( "Page_Number_"+i, i,9,"Tahoma",clrPage);
}
for(i=0;i<28;i++)
{
if(pair_0[i]==pairs[i]) color clr=clrLime;
else clr=clrWhite;
ObjectCreate( "B_"+StringSubstr(pairs[i],0,6)+"_"+i, OBJ_LABEL,0,0,0);
ObjectSet( "B_"+StringSubstr(pairs[i],0,6)+"_"+i, OBJPROP_CORNER,0);
ObjectSet( "B_"+StringSubstr(pairs[i],0,6)+"_"+i, OBJPROP_XDISTANCE,20);
ObjectSet( "B_"+StringSubstr(pairs[i],0,6)+"_"+i, OBJPROP_YDISTANCE,50+i*13);
ObjectSetText( "B_"+StringSubstr(pairs[i],0,6)+"_"+i, StringSubstr(pairs[i],0,6),9,"Tahoma",clr);
//
ObjectCreate( "A_"+StringSubstr(pairs[i],0,6)+"_"+i, OBJ_LABEL,0,0,0);
ObjectSet( "A_"+StringSubstr(pairs[i],0,6)+"_"+i, OBJPROP_CORNER,0);
ObjectSet( "A_"+StringSubstr(pairs[i],0,6)+"_"+i, OBJPROP_XDISTANCE,5);
ObjectSet( "A_"+StringSubstr(pairs[i],0,6)+"_"+i, OBJPROP_YDISTANCE,50+i*13);
ObjectSetText( "A_"+StringSubstr(pairs[i],0,6)+"_"+i, CharToStr(110),9,"wingdings",clr);
//
ObjectCreate( "C_"+StringSubstr(pairs[i],0,6)+"_"+i, OBJ_LABEL,0,0,0);
ObjectSet( "C_"+StringSubstr(pairs[i],0,6)+"_"+i, OBJPROP_CORNER,0);
ObjectSet( "C_"+StringSubstr(pairs[i],0,6)+"_"+i, OBJPROP_XDISTANCE,75);
ObjectSet( "C_"+StringSubstr(pairs[i],0,6)+"_"+i, OBJPROP_YDISTANCE,50+i*13);
if(PairTotallPosition[i]+1>=1)
ObjectSetText( "C_"+StringSubstr(pairs[i],0,6)+"_"+i, PairTotallPosition[i]+1,9,"TAHOMA",clrWhite);
else
ObjectSetText( "C_"+StringSubstr(pairs[i],0,6)+"_"+i,"-",9,"TAHOMA",clrRed);
}
int yy2[]={0,40,40,40,40,40,60,80,60,60,60,80,60,60,60,90,90,90,90,90,90,90,90,90,90};
int AA=100;
int rr;
string Heading[]={"#","CE","EntryT","CX","EntryT","Type","Symbol","Cprice","EntryP","ExitP","HEE","LEE","PPips","BestP","WorstP"};
for(j=0;j<=14;j++)
{
rr=rr+yy2[j];
ObjectCreate( "Heading_"+j,OBJ_LABEL,0,0,0);
ObjectSet( "Heading_"+j,OBJPROP_CORNER,0);
ObjectSet( "Heading_"+j,OBJPROP_XDISTANCE, AA+rr);
ObjectSet( "Heading_"+j,OBJPROP_YDISTANCE, 50);
ObjectSetText( "Heading_"+j,Heading[j],8,"Tahoma",clrWhiteSmoke);
}
if(SELECTOR=="POSITIONS")
{
for(i=0;i<50;i++)
{
}
}
else if(SELECTOR=="HISTORY")
{
}
}//OnTimer
//////////////////////////////////////////////
string Object_Name;
//////////////////////////////////////////////
bool BackOrForeground=false;
ENUM_CHART_MODE ChartMode=CHART_LINE;
color LineColor=ChartGetInteger(0,CHART_COLOR_BACKGROUND);
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
if(id==CHARTEVENT_OBJECT_CLICK)
{
//////////////////////////
if(StringSubstr(sparam,0,12)=="Page_Number_") PageNumber=StrToInteger(ObjectDescription(sparam));
if(sparam=="POSITIONS") SELECTOR="POSITIONS";
if(sparam=="HISTORY") SELECTOR="HISTORY" ;
if(sparam=="CHART_HIDE")
{
LineColor=ChartGetInteger(0,CHART_COLOR_BACKGROUND);
ChartMode=CHART_LINE;
BackOrForeground=false;
}
if(sparam=="CHART_CANDLES")
{
LineColor=clrOrange;
ChartMode=CHART_CANDLES;
BackOrForeground=true;
}
if(sparam=="CHART_LINE")
{
LineColor=clrOrange;
ChartMode=CHART_LINE;
BackOrForeground=true;
}
Object_Name=sparam;
if(StringSubstr(sparam,0,2)=="A_")
{
int I1=StrToInteger(StringSubstr(sparam,9,StringLen(sparam)-9));
pair_0[I1]="YYYXXX";
}
if(StringSubstr(sparam,0,2)=="B_")
{
int I2=StrToInteger(StringSubstr(sparam,9,StringLen(sparam)-9));
pair_0[I2]=pairs[I2];;
}
if(sparam=="CANCEL_ALL")
{
for(int k=0;k<=27;k++) pair_0[k]="YYYXXX";
}
if(sparam=="ACTIVATE_ALL")
{
for( k=0;k<=27;k++) pair_0[k]=pairs[k];
}
if(sparam=="CLEAN_CHART") ObjectsDeleteAll();
if(sparam=="REMOVE_EXPERT") {ObjectsDeleteAll();ExpertRemove();}
/////////////////////////////////////////
}
}
ما شاء الله
شكرا اخي على الشرح
سعيد بعودتك الى النشاط المعهود عليك