EA_Close_All_v5

EA_Close_All_v5最新版

官方版无广告166

更新日期:2022-03-03分类标签: 语言:中文平台:没限制

18 人已下载 手机查看

//+——————————————————————+
//| EA Close All.mq4 |
//| Copyright © Master Forex – 2017 |
//| https://www.mql5.com/en/users/Master_Forex/portfolio |
//+——————————————————————+
#property copyright “Copyright © Master Forex – 2017”
#property link “https://www.mql5.com/en/users/Master_Forex/portfolio”
#property version “1.00”
#property strict
#property description “Created – 02.05.2017 11:59″
#property description ” ”
#property description “Customer: Ryan Brown ( https://www.mql5.com/en/users/cubbybgood )”
#include <stdlib.mqh>

input string EAComment = “EA Close All”;// EA Comment
input int MagicNumber = 0; // Magic Number
input bool ShowInfo = 1; // Show Info to Chart
input ENUM_BASE_CORNER Corner = 1; // Info Corner
input string CloseAtPipsProfits = “——————–< Close by Pips Profit >——————–“;//Close by Pips Profit ……………………………………………………………………………………………..
input bool UseCloseAtPipsProfits = 0; // Close by Pips Profit
input int PipsProfit = 5; // Profit in Pips
input string CloseAtProfits = “——————–< Close by $ Profit >——————–“;//Close by $ Profit ……………………………………………………………………………………………..
input bool UseCloseAtProfits = 0; // Close by $ Profit
input double Profit = 5; // Profit in $
input string ClosePercentLoss = “——————–< Close by % Loss >——————–“;//Close by % Loss ……………………………………………………………………………………………..
input bool CloseAtPercentLoss = 0; // Close by % Loss
input double PercentLoss = 5; // Loss %
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
double ClosingArray[100], DrawDowns=0, DDBuffer=0, Drawdown=0;int Pip=1, lotdigit=0;string text[26], prefix=””;
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+——————————————————————+
//| Expert initialization function |
//+——————————————————————+
void OnInit()
{
ArrayResize(text,26);

int digits=(int)MarketInfo(Symbol(),MODE_DIGITS);
double bid=(int)MarketInfo(Symbol(),MODE_BID);

if(digits==4 || (bid<1000 && digits==2)){ Pip=1;} else Pip=10;

if(IsTesting()) prefix=”Test”+IntegerToString(MagicNumber);
else prefix=IntegerToString(MagicNumber);

return;
}
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+——————————————————————+
//| Expert deinitialization function |
//+——————————————————————+
void OnDeinit(const int reason)
{
if(!IsTesting()){
for(int i= ObjectsTotal(); i>=0; i–)
{
string name= ObjectName(i);
if(StringSubstr(name,0,4)==”Info”)
{
ObjectDelete(name);}
}
} else GVDel(prefix);
return;
}
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+——————————————————————+
//| Expert tick function |
//+——————————————————————+
void OnTick()
{
OrdersClose();if(!IsOptimization()) PrintInfo();

return;
}
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+——————————————————————+
//| Orders Close |
//+——————————————————————+
void OrdersClose()
{
if(UseCloseAtPipsProfits && 0 < Orders(-1) && CheckPipsProfit(-1)> PipsProfit && GVGet(“EPPb”)==0){ GVSet(“EPPb”,1);}

if(UseCloseAtPipsProfits && 0 < Orders(-1) && GVGet(“EPPb”)==1){ if(CloseOrders(-1,FIFO(-1))){ Print(“-> Exit with pips profits!”);}}

if(UseCloseAtProfits && CheckProfit(-1) > 0 && CheckProfit(-1) >= Profit && GVGet(“EPb”)==0){ GVSet(“EPb”,1);}

if(UseCloseAtProfits && 0 < Orders(-1) && GVGet(“EPb”)==1){ if(CloseOrders(-1,FIFO(-1))){ Print(“-> Exit with $ profits!”);}}

if(CloseAtPercentLoss && 0 < Orders(-1) && CheckProfit(-1) < 0 && MathAbs(CheckProfit(-1))> (PercentLoss*AccountBalance()/100) && GVGet(“EPlb”)==0){ GVSet(“EPlb”,1);}

if(CloseAtPercentLoss && 0 < Orders(-1) && GVGet(“EPlb”)==1){ if(CloseOrders(-1,FIFO(-1))){ Print(“-> Exit with % loss!”);}}

if(1 > Orders(-1)){ GVSet(“EPPb”,0);GVSet(“EPb”,0);GVSet(“EPlb”,0);}
}
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+——————————————————————+
//| Check Pips Profit |
//+——————————————————————+
double CheckPipsProfit(int type) //-1= All,0=Buy,1=Sell;
{
double Profitb=0, Profits=0; string sym=””;

for(int i=OrdersTotal()-1;i>=0;i–)
{
bool os = OrderSelect(i,SELECT_BY_POS, MODE_TRADES);
if(MagicNumber == 0 || OrderMagicNumber() == MagicNumber)
{
if(OrderType()==OP_BUY){
Profitb=Profitb+(((MarketInfo(OrderSymbol(),MODE_BID))-OrderOpenPrice())/point(OrderSymbol()));}
if(OrderType()==OP_SELL){
Profits=Profits+((OrderOpenPrice()-MarketInfo(OrderSymbol(),MODE_ASK))/point(OrderSymbol()));}
}}
if(0==type){ return(Profitb);}
if(1==type){ return(Profits);}
if(-1==type){ return(Profits+Profitb);}
return(0);
}
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+——————————————————————+
//| Check $ Profit |
//+——————————————————————+
double CheckProfit(int type) //-1= All,0=Buy,1=Sell;
{
double Profitb=0,Profits=0;
for(int i=OrdersTotal()-1;i>=0;i–)
{
bool os = OrderSelect(i,SELECT_BY_POS, MODE_TRADES);
if(MagicNumber == 0 || OrderMagicNumber() == MagicNumber)
{
if(OrderType()==OP_BUY){ Profitb+=OrderProfit()+OrderSwap()+OrderCommission();}
if(OrderType()==OP_SELL){ Profits+=OrderProfit()+OrderSwap()+OrderCommission();}
}}
if(0==type){ return(Profitb);}
if(1==type){ return(Profits);}
if(-1==type){ return(Profits+Profitb);}
return(0);
}
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+————————————————————+
//| Close Orders |
//+————————————————————+
bool CloseOrders(int type, int tick)
{
bool oc=0;
bool os = OrderSelect(tick,SELECT_BY_TICKET, MODE_TRADES);
if(MagicNumber == 0 || OrderMagicNumber() == MagicNumber)
{
if(type==-1){
if(OrderType()==0){ oc = OrderClose(tick,OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),1000,clrGold);}
if(OrderType()==1){ oc = OrderClose(tick,OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),1000,clrGold);}
if(OrderType()>1){ oc = OrderDelete(tick);}}
if(OrderType()==type && type==0){ oc = OrderClose(tick,OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),1000,clrGold);}
if(OrderType()==type && type==1){ oc = OrderClose(tick,OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),1000,clrGold);}
if(OrderType()==type && OrderType()> 1){ oc = OrderDelete(tick);}
if(OrderType()==0 && type==6){ oc = OrderClose(tick,OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),1000,clrGold);}
if((OrderType()==2 || OrderType()== 4) && type==6){ oc = OrderDelete(tick);}
if(OrderType()==1 && type==7){ oc = OrderClose(tick,OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),1000,clrGold);}
if((OrderType()==3 || OrderType()== 5) && type==7){ oc = OrderDelete(tick);}

for(int x=0;x<100;x++)
{
if(ClosingArray[x]==0)
{
ClosingArray[x]=OrderTicket();
break; } } }
return(oc);
}
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+——————————————————————+
//| Get total order |
//+——————————————————————+
int Orders(int type)
{
int count=0;
//-1= All,0=Buy,1=Sell,2=BuyLimit,3=SellLimit,4=BuyStop,5=SellStop,6=AllBuy,7=AllSell,8=AllMarket,9=AllPending;
for(int x=OrdersTotal()-1;x>=0;x–)
{
if(OrderSelect(x,SELECT_BY_POS,MODE_TRADES))
{
if(type < 0){ count++;}
if(OrderType() == type && type >= 0){ count++;}
if(OrderType() <= 1 && type == 8){ count++;}
if(OrderType() > 1 && type == 9){ count++;}
if((OrderType() == 0 || OrderType() == 2 || OrderType() == 4) && type == 6){ count++;}
if((OrderType() == 1 || OrderType() == 3 || OrderType() == 5) && type == 7){ count++;}}
}
return(count);
}
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+——————————————————————+
//| Print info to chart |
//+——————————————————————+
void PrintInfo()
{
string Current = “NO ORDER”;

if(CurrentProfit()!=0){ Current = DoubleToStr(CurrentProfit(),2);}

if(AccountBalance()!=0){ DrawDowns = DrawDown()*100.0/AccountBalance();}

if(ShowInfo){
text[1]= EAComment;
text[2]= “——————————————-“;
text[3]= “Spread: ” + DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD)/Pip, 2);
text[4]= “Time Current: ” + TimeToStr(TimeCurrent());
text[5]= “——————————————-“;
text[6]= “Account Number: ” + IntegerToString(AccountNumber());
text[7]= “Account Leverage: ” + IntegerToString(AccountLeverage());
text[8]= “Account Balance: ” + DoubleToStr(AccountBalance(), 2);
text[9]= “Account Equity: ” + DoubleToStr(AccountEquity(), 2);
text[10]= “Free Margin: ” + DoubleToStr(AccountFreeMargin(), 2);
text[11]= “Used Margin: ” + DoubleToStr(AccountMargin(), 2);
text[12]= “Max. Draw Down: ” + DoubleToStr(DrawDown(), 2)+”(“+DoubleToStr(DrawDowns,2)+”%””)”;
text[13]= “Account Today Profit: ” + DoubleToStr(DailyProfits(), 2);
text[14]= “Current Profit: ” + Current;
text[15]= “——————————————-“;

int i=1, k=20;
while (i<=15)
{
string ChartInfo = “Info”+IntegerToString(i);
ObjectCreate(ChartInfo, OBJ_LABEL, 0, 0, 0);
ObjectSetText(ChartInfo, text[i], 9, “Arial”, Aqua);
ObjectSet(ChartInfo, OBJPROP_CORNER, Corner);
ObjectSet(ChartInfo, OBJPROP_XDISTANCE, 7);
ObjectSet(ChartInfo, OBJPROP_YDISTANCE, k);
i++;
k=k+13;
}
}
}
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+———————————————————————————-+
//| Daily Profit |
//+———————————————————————————-+
double DailyProfits()
{
double DayProfits=0;

for(int i=0;i<OrdersHistoryTotal();i++)
{
bool os = OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(TimeDayOfYear(OrderCloseTime())==DayOfYear()){
DayProfits=DayProfits+OrderProfit()+OrderSwap()+OrderCommission();}
}
for(int i = 0; i < OrdersTotal(); i++)
{
bool Os = OrderSelect(i,SELECT_BY_POS, MODE_TRADES);
if(TimeDayOfYear(OrderOpenTime())==DayOfYear()){
DayProfits=DayProfits+OrderProfit()+OrderSwap()+OrderCommission();}
}
return(DayProfits);
}
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+———————————————————————————-+
//| Current Profit |
//+———————————————————————————-+
double CurrentProfit()
{
double Profits=0;

for(int i = 0;i < OrdersTotal();i++)
{
bool Os = OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
Profits=Profits+OrderProfit()+OrderSwap()+OrderCommission();
}
return(Profits);
}
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+———————————————————————————-+
//| Get Draw Down |
//+———————————————————————————-+
double DrawDown()
{
double DD=AccountBalance()-AccountEquity();
if(DD>DDBuffer)DDBuffer=DD;
return(DDBuffer);
}
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+——————————————————————+
//| Check Symbol Points |
//+——————————————————————+
double point(string symbol=NULL)
{
string sym=symbol;if(symbol==NULL) sym=Symbol();
double bid=(int)MarketInfo(sym,MODE_BID);
int digits=(int)MarketInfo(sym,MODE_DIGITS);

if(digits<=1) return(1); //CFD & Indexes
if(digits==4 || digits==5) return(0.0001);
if((digits==2 || digits==3) && bid>1000) return(1);
if((digits==2 || digits==3) && bid<1000) return(0.01);
if(StringFind(sym,”XAU”)>-1 || StringFind(sym,”xau”)>-1 || StringFind(sym,”GOLD”)>-1) return(0.1);//Gold
return(0);
}
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
//+——————————————————————+
//| Global Variable Set |
//+——————————————————————+
datetime GVSet(string name,double value)
{
return(GlobalVariableSet(prefix+name,value));
}
//+——————————————————————+
//| Global Variable Get |
//+——————————————————————+
double GVGet(string name)
{
return(GlobalVariableGet(prefix+name));
}
//+——————————————————————+
//| Global Variable Delete |
//+——————————————————————+
bool GVDel(string pref)
{
for(int tries=0; tries<10; tries++)
{
int obj=GlobalVariablesTotal();
for(int o=0; o<obj;o++)
{
string name=GlobalVariableName(o);
int index=StringFind(name,pref,0);
if(index>-1)GlobalVariableDel(name);
}
}
return(0);
}
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//
//+——————————————————————+
//| get first order ticket |
//+——————————————————————+
int FIFO(int type)
{
int Prev=999999999, Curr=0, tick=-1;

for(int i = 0; i < OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(MagicNumber == 0 || OrderMagicNumber() == MagicNumber)
{
if(OrderType() == type || type == -1){ Curr = OrderTicket();
if(Curr < Prev){ Prev = Curr; tick = OrderTicket();}}
}
}
}
return(tick);
}
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\\
// _________ ||
// / \ ||
// | THE END | ||
// \_________/ ||
// ||
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//

如果你对文件有了解,请帮助投票!

If you are familiar with the file, please help vote!

平均评分 0 / 5. 投票数: 0

到目前为止还没有投票!成为第一位投票人。

相关资源

暂无评论

暂无评论...
Ads Blocker Image Powered by Code Help Pro

检测到广告拦截程序!!!Ads Blocker Detected!!!

我们检测到您正在使用扩展来屏蔽广告。请通过禁用这些广告屏蔽程序或者把网站加入白名单来支持我们。

We have detected that you are using an extension to block advertisements. Please support us by disabling these advertising blocking programs or adding the website to the whitelist.