لن تحل مشكلته لأن كودك يشمل ايضا اوامر الانتظار
اضمن حل له, يجعل الصفقات المفتوحة مصفوفة مرتبة على زمن الدخول ثم من خلال الاندكس يختار الصفقة سواء الثانية او الثالثة او الاخيرة او قبل الاخيرة
Printable View
السلام عليكم ورحمة الله وبركاته اساتذتنا الكرام
انا عندي اكثر من اكسبرت على الحساب وعندما يغلق احد الاكسبرتات صفقاته يغلق الاخر صفقاته و السبب هو ان الشرط عندما يتحقق يتحقق عند كلا الاكسبرتين.
فسؤالي:: كيف اعرف عدد الصفقات ولكن عدد الصفقات التي فتحها الاكسبرت لا كل الصفقات ؟؟؟؟
هل توجد دالة او وظيفة او ماذا؟؟؟
وعليكم السلام ورحمة الله وبركاته
ضع ماجيك نمبر في كل إكسبرت وقم بتغيير الماجيك نمبر بحيث لا يتكرر في كل إكسبرت
ثم يمكنك إستخدام هذه الدالة لمعرفة الصفقات المغلقه بإستخدام الماجيك نمبر المحدد
كود PHP:
int TotalOrders(int type=-1)
{
int cnt=0;
for(int i=0; i<OrdersHistoryTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && (OrderType()==type || type==-1))
{
cnt++;
}
}
}
return(cnt);
}
السلام عليكم ورحمة الله وبركاته
احاول جعل الاكسبيرت يفتح صفه واحدة على ازواج معينه لكنه لا يعمل
ولا ادري ما هي المشكله
كود PHP:
//+------------------------------------------------------------------+
//| Sell EA.mq4 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| 30 _ 06 _ 2020 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
input double lot = 0.01;
input int Magic_Number = 1111;
input string Pairs = "GBPCHF,GBPUSD" ;
string TradePair[];
int ticket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
SeLL_EA();
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void SeLL_EA()
{
int cnt = 0;
for (cnt = 0 ; cnt < 2 ; cnt++)
{
ticket=OrderSend(TradePair[cnt], OP_SELL, lot, MarketInfo(TradePair[cnt],MODE_BID), 50, 0, 0, NULL, Magic_Number, 0, clrNONE);
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
السلام عليكم
من فضلك اخي طريقة حساب اقصى خسارة عائمة وصلها الحساب
و بارك الله فيك
اساتذتي المباركين
اريد اضافة دالة ان يفتح الاكسبيرت صفقات على جميع الازواج ال 28 وهو على شارت واحد فقط
حيث ان وضعه على كل الشارتات متعب للمنصة
السلام عليكم
ده كود اكسبيرت بيفتح صفقتين بيع وشراء وبعد كدة اللى تحقق الربح او الخسارة بيفتح مكانها صفقة اخرى من نفس نوعها
عدلت عليه بأكثر من طريقة لكى يبدأ عند وقت معين لكن فشلت المحاولات وكل مرة يبدأ من الساعة صفر لليوم اللى هبدأ فيه التيست او على حساب ديمو بمجرد تشغيله يضع اوامر بدون اى أعتبار لساعة البداية اللى موجوة فى الإعدادات
عايز اعرف ايه الخطأ وكمان ازاى نظبط ساعة البداية للأكسبيرت
input string TradeTime="00:00";
input int TP=500;
input int SL=500;
input double lot=0.1;
datetime Time0;
int buyTicket,sellTicket;
double buyPrice,sellPrice;
bool r;
int OnInit()
{
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason)
{
}
void OnTick()
{
GetTicket();
if(buyTicket<=0)
{
buyTicket=OrderSend(Symbol(),OP_BUY,lot,Ask,0,Ask-SL*Point,Ask+TP*Point,"",0,0);
}
if(sellTicket<=0)
{
sellTicket=OrderSend(Symbol(),OP_SELL,lot,Bid,0,Bi d+SL*Point,Bid-TP*Point,"",0,0);
}
}
void GetTicket()
{
buyTicket=-1;
sellTicket=-1;
buyPrice=0;
sellPrice=0;
for(int i=0;i<OrdersTotal();i++)
{
r=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
{
buyTicket=OrderTicket();
buyPrice=OrderOpenPrice();
}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
{
sellTicket=OrderTicket();
sellPrice=OrderOpenPrice();
}
}
}
كود PHP:
//+------------------------------------------------------------------+
//| Sell EA.mq4 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| 30 _ 06 _ 2020 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
input double lot = 0.01;
input int Magic_Number = 1111;
string str;
string S[] = {"EUR" ,"GBP" ,"AUD" ,"NZD" ,"USD" ,"CAD" ,"CHF" ,"JPY"};
string pairs[28];
int ticket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
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;
}
}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(OrdersTotal()<ArraySize(pairs))
SeLL_EA();
Comment(OrdersTotal());
}
//+------------------------------------------------------------------+
void SeLL_EA()
{
int cnt = 0;
for (cnt = 0 ; cnt < 28 ; cnt++)
{
string sym = pairs[cnt];
if(TotalOrder(sym) == 0)
ticket=OrderSend(pairs[cnt], OP_SELL, lot, MarketInfo(pairs[cnt],MODE_BID), 50, 0, 0, NULL, Magic_Number, 0, clrNONE);
else continue;
}
}
//+------------------------------------------------------------------+
//| FUNCTIONS: Manage trades |
//+------------------------------------------------------------------+
int TotalOrder(string sy)
{
int num=0;
for (int i = OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol() == sy && (OrderMagicNumber() == Magic_Number))
{
if(OrderMagicNumber()== Magic_Number)
{
num++;
}
}
}
}
return(num);
}
كود PHP:
//+------------------------------------------------------------------+
//| ProjectName |
//| Copyright 2018, CompanyName |
//| http://www.companyname.net |
//+------------------------------------------------------------------+
input string d="___________Time_Filter____________";
input bool TimeFilter = false;
input string Time_Start = "06:00";// Time Start
input string Time_End = "16:00";// Time End
//--
input int TP=500;
input int SL=500;
input double lot=0.1;
datetime Time0;
int buyTicket,sellTicket;
double buyPrice,sellPrice;
bool r;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnTick()
{
string cur_time = Hour()+":"+Minute();
if((TimeFilter && StrToTime(cur_time) >= StrToTime(Time_Start) && StrToTime(cur_time) < StrToTime(Time_End)) || !TimeFilter)
{
GetTicket();
if(buyTicket<=0)
{
buyTicket=OrderSend(Symbol(),OP_BUY,lot,Ask,0,Ask-SL*Point,Ask+TP*Point,"",0,0);
}
if(sellTicket<=0)
{
sellTicket=OrderSend(Symbol(),OP_SELL,lot,Bid,0,Bid+SL*Point,Bid-TP*Point,"",0,0);
}
}
Comment(cur_time);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void GetTicket()
{
buyTicket=-1;
sellTicket=-1;
buyPrice=0;
sellPrice=0;
for(int i=0; i<OrdersTotal(); i++)
{
r=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
{
buyTicket=OrderTicket();
buyPrice=OrderOpenPrice();
}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
{
sellTicket=OrderTicket();
sellPrice=OrderOpenPrice();
}
}
}
//+------------------------------------------------------------------+
كود PHP:
static double MaxLoss=0;
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(AccountEquity() - AccountBalance() < MaxLoss)MaxLoss = AccountEquity() - AccountBalance();
}