ممكن صورة بأي help تقصد؟؟
Printable View
سهلة جدا اخي, فقط اضف الاسطر التي تريدها لكل عميل للكود اسفل--اعتقد تريد OrderProfit فقط
http://www9.0zz0.com/2017/11/06/02/247098461.png
الفكرة تنزع رقم حساب العميل من الكومنت
لاحظ الكومنت اول خمس خانات محجوزة لكمة agent --- خانة 0 و 1 و2 و3 و4
ثم خانتين محجوزة للفراف و للكوتيشن خانة 5 و 6
ثم ست خانات حساب العميل -- من خانة 7 بمجموع ست خانات محجوزة للرقم
كود اولي--اضف انت بقية العملاء -- ممكن بشكل متتالي وممكن تستخدم المصفوفوات يرجع لك
ولكن لب سؤالك تم بيانه
كود PHP:
void OnStart()
{
string client1="343915";
string client2="340995";
string client3="343416";
string client4="340397";
double CLIENT_1_PROFIT;
for(int j=OrdersHistoryTotal();j>=0;j--)
{
if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
{
if(StringSubstr(OrderComment(),7,6)==client1)
{
CLIENT_1_PROFIT=CLIENT_1_PROFIT+OrderProfit();
}
}
}
}
عندك 41 عميل؟؟ :) ماشاء الله
اذا تريد اذكى شيء ممكن تصل له هو مصفوفات مع اكتشاف تلقائي لحجم المصفوفة
ارجو ان يكون مفهوم لك الكود اسفل-
كود PHP:
string clients[];
double CLIENT_1_PROFIT[];
void OnStart()
{
ObjectsDeleteAll();
int t=-1;
for(int j=OrdersHistoryTotal()-1;j>=0;j--)
{
if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
{
if(StringSubstr(OrderComment(),0,5)=="agent")
{
t++;
string temp=StringSubstr(OrderComment(),7,6);
if(t==0)
{
ArrayResize(clients,1);
clients[0]=temp;
}
else
{
string newClient="Yes";
for(int i=0;i<ArraySize(clients);i++)
{
if(temp==clients[i])
{
newClient="NO";
break;
}
}
if(newClient=="Yes")
{
ArrayResize(clients,ArraySize(clients)+1);
clients[ArraySize(clients)-1]=temp;
}
}
}
}
}
ArrayResize(CLIENT_1_PROFIT,ArraySize(clients));
/////////////////////////////////
for(i=0;i<ArraySize(clients);i++)
{
for(j=OrdersHistoryTotal()-1;j>=0;j--)
{
if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
{
if(StringSubstr(OrderComment(),7,6)==clients[i])
{
CLIENT_1_PROFIT[i]=CLIENT_1_PROFIT[i]+OrderProfit();
}
}
}
Print("--------",i,"--------",clients[i],"--------",CLIENT_1_PROFIT[i]);
ObjectCreate( "i"+i,OBJ_LABEL,0,0,0);
ObjectSet( "i"+i,OBJPROP_CORNER,0);
ObjectSet( "i"+i,OBJPROP_XDISTANCE, 5);
ObjectSet( "i"+i,OBJPROP_YDISTANCE, 12*i+15);
ObjectSetText("i"+i,(string)i,9,"Tahoma",clrOrange);
ObjectCreate( "ai"+i,OBJ_LABEL,0,0,0);
ObjectSet( "ai"+i,OBJPROP_CORNER,0);
ObjectSet( "ai"+i,OBJPROP_XDISTANCE, 50);
ObjectSet( "ai"+i,OBJPROP_YDISTANCE, 12*i+15);
ObjectSetText("ai"+i,(string)clients[i],9,"Tahoma",clrOrange);
ObjectCreate( "si"+i,OBJ_LABEL,0,0,0);
ObjectSet( "si"+i,OBJPROP_CORNER,0);
ObjectSet( "si"+i,OBJPROP_XDISTANCE, 100);
ObjectSet( "si"+i,OBJPROP_YDISTANCE, 12*i+15);
ObjectSetText("si"+i,(string)CLIENT_1_PROFIT[i]+" USD",9,"Tahoma",clrWhite);
}
}
تأمل سيعرض لك كل شيء يخص كل عميل بالدولار--ممكن انت تضيف خانة رابعة للعمولة التي تعيدها--رياضيات سهلة عليك
https://charts.mql5.com/16/626/eurus...-markets-2.png
لترتيب العملاء تسلسليا حسب ارقام الحسابات--اضف الاسطر التالية قبل لوووووبات حساب الربح
كود PHP:
string temps;
for(i=0;i<ArraySize(clients);i++)
{
for(j=i+1;j<ArraySize(clients);j++)
{
if(clients[i]>clients[j])
{
temps=clients[j];
clients[j]=clients[i];
clients[i]=temps;
}
}
}
لاحظ: مرتبة واسرع لك في البحث
https://charts.mql5.com/16/626/eurus...-markets-3.png
الان كسكربت من مرة واحدة
لو حولته اكسبيرت لابد تصفر الربح كل مرة
تضيف السطر التالي بعد اول لووب
كود PHP:
CLIENT_1_PROFIT[i]=0;
كود PHP:
for(i=0;i<ArraySize(clients);i++)
{
CLIENT_1_PROFIT[i]=0;
for(j=OrdersHistoryTotal()-1;j>=0;j--)
{
if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
{
if(StringSubstr(OrderComment(),7,6)==clients[i])
{
CLIENT_1_PROFIT[i]=CLIENT_1_PROFIT[i]+OrderProfit();
}
}
}
ومع اضافة الربح الكلي وطباعته لا اعتقد يتبقى سوى جزئية عمولة عملائك,
كود PHP:
string clients[];
double CLIENT_1_PROFIT[];
void OnStart()
{
ObjectsDeleteAll();
int t=-1;
for(int j=OrdersHistoryTotal()-1;j>=0;j--)
{
if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
{
if(StringSubstr(OrderComment(),0,5)=="agent")
{
t++;
string temp=StringSubstr(OrderComment(),7,6);
if(t==0)
{
ArrayResize(clients,1);
clients[0]=temp;
}
else
{
string newClient="Yes";
for(int i=0;i<ArraySize(clients);i++)
{
if(temp==clients[i])
{
newClient="NO";
break;
}
}
if(newClient=="Yes")
{
ArrayResize(clients,ArraySize(clients)+1);
clients[ArraySize(clients)-1]=temp;
}
}
}
}
}
ArrayResize(CLIENT_1_PROFIT,ArraySize(clients));
string temps;
for(i=0;i<ArraySize(clients);i++)
{
for(j=i+1;j<ArraySize(clients);j++)
{
if(clients[i]>clients[j])
{
temps=clients[j];
clients[j]=clients[i];
clients[i]=temps;
}
}
}
/////////////////////////////////
double profit;
for(i=0;i<ArraySize(clients);i++)
{
CLIENT_1_PROFIT[i]=0;
for(j=OrdersHistoryTotal()-1;j>=0;j--)
{
if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
{
if(StringSubstr(OrderComment(),7,6)==clients[i])
{
CLIENT_1_PROFIT[i]=CLIENT_1_PROFIT[i]+OrderProfit();
}
}
}
Print("--------",i,"--------",clients[i],"--------",CLIENT_1_PROFIT[i]);
ObjectCreate( "i"+i,OBJ_LABEL,0,0,0);
ObjectSet( "i"+i,OBJPROP_CORNER,0);
ObjectSet( "i"+i,OBJPROP_XDISTANCE, 5);
ObjectSet( "i"+i,OBJPROP_YDISTANCE, 12*i+15);
ObjectSetText("i"+i,(string)i,9,"Tahoma",clrOrange);
ObjectCreate( "ai"+i,OBJ_LABEL,0,0,0);
ObjectSet( "ai"+i,OBJPROP_CORNER,0);
ObjectSet( "ai"+i,OBJPROP_XDISTANCE, 50);
ObjectSet( "ai"+i,OBJPROP_YDISTANCE, 12*i+15);
ObjectSetText("ai"+i,(string)clients[i],9,"Tahoma",clrOrange);
ObjectCreate( "si"+i,OBJ_LABEL,0,0,0);
ObjectSet( "si"+i,OBJPROP_CORNER,0);
ObjectSet( "si"+i,OBJPROP_XDISTANCE, 100);
ObjectSet( "si"+i,OBJPROP_YDISTANCE, 12*i+15);
ObjectSetText("si"+i,(string)CLIENT_1_PROFIT[i]+" USD",9,"Tahoma",clrWhite);
profit=profit+CLIENT_1_PROFIT[i];
}
ObjectCreate( "sdi"+0,OBJ_LABEL,0,0,0);
ObjectSet( "sdi"+0,OBJPROP_CORNER,0);
ObjectSet( "sdi"+0,OBJPROP_XDISTANCE, 400);
ObjectSet( "sdi"+0,OBJPROP_YDISTANCE, 0);
ObjectSetText("sdi"+0,(string)profit,19,"Tahoma",clrWhite);
}
انتهى
شكرا استاذ فيلسوف
الله يجزاك خير
بالنسبه للعملاء الله يسمع منك 41
عندي 6 عملاء طار منهم 3 باقي 3
واحد منهم اذا كان طفشان بروح يفتح حساب جديد ويحول من الحساب القديم ويشتغل
اعتقد وحده عنده اكثر من 30 حساب
هذا سر وجود حسابات كثير
شكرا الف وجزاك الله خير
حفظته سكربت؟؟؟