عرض مشاركة واحدة
قديم 30-06-2011, 09:47 PM   المشاركة رقم: 6
الكاتب
Eng.Hamada
عضو متميز

البيانات
تاريخ التسجيل: Oct 2010
رقم العضوية: 1622
العمر: 38
المشاركات: 1,775
بمعدل : 0.36 يوميا

الإتصالات
الحالة:
Eng.Hamada غير متواجد حالياً
وسائل الإتصال:

كاتب الموضوع : مبتدىfx المنتدى : منتدى تعليم الفوركس
افتراضي رد: هذا كود اغلاق الصفقات دفعة واحدة

كود:
//+------------------------------------------------------------------+
//|                                                 closs all pl.mq4 |
//|                                                           Hamada |
//|                                                www.fx-arabia.com |
//+------------------------------------------------------------------+
#property copyright "Hamada"
#property link      "www.fx-arabia.com"


 extern int Profit=10; // ضع هنا الريح الاجمالي اللذي تريد اغلاق الصفقات عليه 
double myProfit=0;
int EnableClose=0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
myProfit=CalcProfit();
ShowInit();

if (EnableClose==1 && CntOrdAll(OP_BUY)==0 && CntOrdAll(OP_SELL)==0 && CntOrdAll(OP_BUYSTOP)==0
&& CntOrdAll(OP_BUYLIMIT)==0 && CntOrdAll(OP_SELLSTOP)==0 && CntOrdAll(OP_SELLLIMIT)==0) {
EnableClose=0; // Before Debug: EnableClose=1
}
if ( (Profit>0 && myProfit>=Profit) || (Profit<0 && myProfit<=Profit)) {
EnableClose=1;
}

CloseAll();

//----
return(0);
}
//+------------------------------------------------------------------+

void CloseAll () { // #function of CloseAll
if (EnableClose==1) { // #if Close is yes
int _total=OrdersTotal(); // number of lots or trades ????
int _ordertype;// order type
if (_total==0) {return;} // if total==0
int _ticket; // ticket number
double _priceClose;// price to close orders;
for(int _i=_total-1;_i>=0;_i--)
{ //# for loop
if (OrderSelect(_i,SELECT_BY_POS))
{ //# if
_ordertype=OrderType();
_ticket=OrderTicket();
switch(_ordertype)
{ //# switch
case OP_BUYLIMIT:
OrderDelete(OrderTicket());
case OP_BUYSTOP:
OrderDelete(OrderTicket());
case OP_BUY:
// close buy
_priceClose=MarketInfo(OrderSymbol(),MODE_BID);
Print("Close on ",_i," position order with ticket ¹",_ticket);
OrderClose(_ticket,OrderLots(),_priceClose,3,Red);
break;
case OP_SELLLIMIT:
OrderDelete(OrderTicket());
case OP_SELLSTOP:
OrderDelete(OrderTicket());
case OP_SELL:
// close sell
_priceClose=MarketInfo(OrderSymbol(),MODE_ASK);
Print("Close on ",_i," position order with ticket ¹",_ticket);
OrderClose(_ticket,OrderLots(),_priceClose,3,Red);
break;
default:
// values from 1 to 5, deleting pending orders
// Print("Delete on ",_i," position order with ticket ¹",_ticket);
// OrderDelete(_ticket);
break;
} //# switch
} // # if
} // # for loop
} // #if Close yes
return;
} // #function of CloseAll

void ShowInit() {
string sComment = "";
string sp = "-----------------------------------------------------\n";
string NL = "\n";
sComment = sp;
sComment = sComment + "CloseByPL will close all trades at: " + Profit + NL;
sComment = sComment + sp;
sComment = sComment + "Current P/L="+DoubleToStr(myProfit,0)+ NL;
Comment(sComment);
return;
}
double CalcProfit() {
double _sum=0;
int _total=OrdersTotal(); // number of lots

if (_total==0) {return (0);}
_sum=AccountProfit();
return(_sum);
}

int CntOrdAll(int Type) {
//return number of orders with specific parameters
int _CntOrd;
_CntOrd=0;
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==Type) _CntOrd++;
}
return(_CntOrd);
}

الاسكربت عباره عن اسكربت لإغلاق كل العقود المفتوحه علي ربح معين يعني فرضا انت لو فاتح 2 لوت شراء علي اليورو دولار و لوت شراء علي الاسترليني دولار وعايز تقفل كل العقود اللي انت فاتحها علي اجمالي ربح 50 دولار
يبقي هتكتب في السطر اللي انا معلم عليه فوق بالازرق رقم 50 بدل رقم 10 وبطدع مجرد ما يوصل اجمالي ربح جميع الصفقات المفتوحه ل 50 دولار هيقفلك كل الصفقات




التوقيع

ما عندالناس ينفذ وما عند الله باق لا حدود له
الحمد لله على ما أعطى والحمد لله على ما أخذ

اللهم إن كان رزقي في السماء فأنزله ، و إن كان في الأرض فأخرجه ، و إن كان بعيداً فقربه ،
و إن كان قريبا فيسره ، و إن كان قليلاً فكثره ، و إن كان كثيراً فبارك لي فيه

عرض البوم صور Eng.Hamada  
رد مع اقتباس
  #6  
قديم 30-06-2011, 09:47 PM
Eng.Hamada Eng.Hamada غير متواجد حالياً
عضو متميز
افتراضي رد: هذا كود اغلاق الصفقات دفعة واحدة

كود:
//+------------------------------------------------------------------+
//|                                                 closs all pl.mq4 |
//|                                                           Hamada |
//|                                                www.fx-arabia.com |
//+------------------------------------------------------------------+
#property copyright "Hamada"
#property link      "www.fx-arabia.com"


 extern int Profit=10; // ضع هنا الريح الاجمالي اللذي تريد اغلاق الصفقات عليه 
double myProfit=0;
int EnableClose=0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
myProfit=CalcProfit();
ShowInit();

if (EnableClose==1 && CntOrdAll(OP_BUY)==0 && CntOrdAll(OP_SELL)==0 && CntOrdAll(OP_BUYSTOP)==0
&& CntOrdAll(OP_BUYLIMIT)==0 && CntOrdAll(OP_SELLSTOP)==0 && CntOrdAll(OP_SELLLIMIT)==0) {
EnableClose=0; // Before Debug: EnableClose=1
}
if ( (Profit>0 && myProfit>=Profit) || (Profit<0 && myProfit<=Profit)) {
EnableClose=1;
}

CloseAll();

//----
return(0);
}
//+------------------------------------------------------------------+

void CloseAll () { // #function of CloseAll
if (EnableClose==1) { // #if Close is yes
int _total=OrdersTotal(); // number of lots or trades ????
int _ordertype;// order type
if (_total==0) {return;} // if total==0
int _ticket; // ticket number
double _priceClose;// price to close orders;
for(int _i=_total-1;_i>=0;_i--)
{ //# for loop
if (OrderSelect(_i,SELECT_BY_POS))
{ //# if
_ordertype=OrderType();
_ticket=OrderTicket();
switch(_ordertype)
{ //# switch
case OP_BUYLIMIT:
OrderDelete(OrderTicket());
case OP_BUYSTOP:
OrderDelete(OrderTicket());
case OP_BUY:
// close buy
_priceClose=MarketInfo(OrderSymbol(),MODE_BID);
Print("Close on ",_i," position order with ticket ¹",_ticket);
OrderClose(_ticket,OrderLots(),_priceClose,3,Red);
break;
case OP_SELLLIMIT:
OrderDelete(OrderTicket());
case OP_SELLSTOP:
OrderDelete(OrderTicket());
case OP_SELL:
// close sell
_priceClose=MarketInfo(OrderSymbol(),MODE_ASK);
Print("Close on ",_i," position order with ticket ¹",_ticket);
OrderClose(_ticket,OrderLots(),_priceClose,3,Red);
break;
default:
// values from 1 to 5, deleting pending orders
// Print("Delete on ",_i," position order with ticket ¹",_ticket);
// OrderDelete(_ticket);
break;
} //# switch
} // # if
} // # for loop
} // #if Close yes
return;
} // #function of CloseAll

void ShowInit() {
string sComment = "";
string sp = "-----------------------------------------------------\n";
string NL = "\n";
sComment = sp;
sComment = sComment + "CloseByPL will close all trades at: " + Profit + NL;
sComment = sComment + sp;
sComment = sComment + "Current P/L="+DoubleToStr(myProfit,0)+ NL;
Comment(sComment);
return;
}
double CalcProfit() {
double _sum=0;
int _total=OrdersTotal(); // number of lots

if (_total==0) {return (0);}
_sum=AccountProfit();
return(_sum);
}

int CntOrdAll(int Type) {
//return number of orders with specific parameters
int _CntOrd;
_CntOrd=0;
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==Type) _CntOrd++;
}
return(_CntOrd);
}

الاسكربت عباره عن اسكربت لإغلاق كل العقود المفتوحه علي ربح معين يعني فرضا انت لو فاتح 2 لوت شراء علي اليورو دولار و لوت شراء علي الاسترليني دولار وعايز تقفل كل العقود اللي انت فاتحها علي اجمالي ربح 50 دولار
يبقي هتكتب في السطر اللي انا معلم عليه فوق بالازرق رقم 50 بدل رقم 10 وبطدع مجرد ما يوصل اجمالي ربح جميع الصفقات المفتوحه ل 50 دولار هيقفلك كل الصفقات






رد مع اقتباس