EA Close All
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ea_close_all_v5.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Внутри каждого триггера советник сначала устанавливает флаг готовности, а затем на следующем тике выполняет закрытие рыночных позиций и удаление отложенных ордеров в порядке FIFO. После закрытия всех ордеров флаги сбрасываются. Советник также выводит на график информационную панель с данными о счёте, текущей прибыли, просадке и дневной прибыли, положение которой задаётся через настройку угла.
Настройки программы
| Настройка | Описание |
|---|---|
| EA Comment (EAComment) | Комментарий советника — Текстовая строка, используемая в качестве идентификатора и заголовка информационной панели на графике. |
| Magic Number (MagicNumber) | Магический номер — Целое число для фильтрации ордеров: советник обрабатывает только те позиции и ордера, которым присвоен этот магический номер. |
| Show Info to Chart (ShowInfo) | Показать информацию на графике — Переключатель, определяющий, отображается ли информационная панель с данными счёта и торговли на графике. |
| Info Corner (Corner) | Угол отображения информации — Указывает угол графика, в котором будет размещена информационная панель советника. |
| Close by Pips Profit ............................................................................... (CloseAtPipsProfits | Разделитель группы закрытия по пипсам — Текстовый разделитель, визуально группирующий настройки закрытия по прибыли в пипсах в диалоге параметров. |
| Close by Pips Profit (UseCloseAtPipsProfits) | Использовать закрытие по прибыли в пипсах — Включает или отключает автоматическое закрытие ордеров при достижении прибыли, измеренной в пипсах. |
| Profit in Pips (PipsProfit) | Прибыль в пипсах — Пороговое значение прибыли в пипсах, при достижении которого срабатывает триггер закрытия ордеров. |
| Close by $ Profit .................................................................................. (CloseAtProfits) | Разделитель группы закрытия по долларовой прибыли — Текстовый разделитель, визуально группирующий настройки закрытия по денежной прибыли в диалоге параметров. |
| Close by $ Profit (UseCloseAtProfits) | Использовать закрытие по долларовой прибыли — Включает или отключает автоматическое закрытие ордеров при достижении заданной денежной прибыли. |
| Profit in $ (Profit) | Прибыль в долларах — Пороговое значение денежной прибыли, при достижении которого срабатывает триггер закрытия ордеров. |
| Close by % Loss .................................................................................... (ClosePercentLoss) | Разделитель группы закрытия по проценту убытка — Текстовый разделитель, визуально группирующий настройки закрытия по проценту убытка в диалоге параметров. |
| Close by % Loss (CloseAtPercentLoss) | Использовать закрытие по проценту убытка — Включает или отключает автоматическое закрытие ордеров при превышении допустимого процентного убытка от баланса. |
| Loss % (PercentLoss) | Процент убытка — Максимально допустимый процент убытка от текущего баланса счёта, при превышении которого срабатывает триггер закрытия. |
Поиск по коду файла
#property version "1.00"
#property strict
#property description "Created - 02.05.2017 11:59"
#property description "?"
#property description "Customer: Ryan Brown ( )"
#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 %
double ClosingArray[100], DrawDowns=0, DDBuffer=0, Drawdown=0;int Pip=1, lotdigit=0;string text[26], prefix="";
void OnInit()
{
// код доступен только после оплаты
}
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;
}
void OnTick()
{
// код доступен только после оплаты
}
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);}
}
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);
}
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);
}
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 = OrderПоказано первые 50% кода (символов: 8389)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.