Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 3633
- Рейтинг:
- Опубликован:
- 2016.03.04 13:33
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Код, закрывающий все открытые ордера при достижении определенного процента просадки баланса.
От вас требуется только ввести мэджик для ордера (или 0, чтобы выделить все ордера) и максимальный процент просадки, достижение которого приведет к закрытию.
Для использования в этом коде вызывается функция DD_close.
В аттаче - файл с кодом и советник, который был построен на нем.
// Чтобы использовать эту опцию, вы должны всего лишь вызвать функцию: ( DD_close ) //+------------------------------------------------------------------+ //| Global scope | //+------------------------------------------------------------------+ bool Close_All_V; //+------------------------------------------------------------------+ //| Основная функция | //+------------------------------------------------------------------+ // DD: Процент просадки. 100 означает, что ордер не закрывается никогда. // Magic_Number: "Магический номер". Введите 0, чтобы выбрать все ордера. void DD_close(int DD,int Magic_Number) { if(DD(Magic_Number)>=DD) Close_All_V=true; if(Close_All_V) Close_All(Magic_Number); } //+------------------------------------------------------------------+ //| Check close | //+------------------------------------------------------------------+ void Check_Close(int Check_Number) // проверка закрытия ордеров { if(Check_Number<0) Print("OrderClose failed with error: ",ErrorDescription(GetLastError())); else Close_All_V=false; } //+------------------------------------------------------------------+ //| Закрыть все | //+------------------------------------------------------------------+ void Close_All(int M_N) { int Loop=0; for(int i=0; Loop<OrdersTotal(); i++) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { Loop++; if(OrderSymbol()==Symbol()) if(OrderMagicNumber()==M_N || OrderMagicNumber()==0) { if(OrderType()==OP_BUY) Check_Close(OrderClose(OrderTicket(),OrderLots(),Bid,100,clrNONE)); if(OrderType()==OP_SELL) Check_Close(OrderClose(OrderTicket(),OrderLots(),Ask,100,clrNONE)); } } } //+------------------------------------------------------------------+ //| Расчет потерь | //+------------------------------------------------------------------+ double Loss(int M_N) { double re=0; int Loop=0; for(int i=0; Loop<OrdersTotal(); i++) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { Loop++; if(OrderSymbol()==Symbol()) if(OrderMagicNumber()==M_N || OrderMagicNumber()==0) re=re+OrderProfit(); } return re * -1; } //+------------------------------------------------------------------+ //| Расчет процента просадки | //+------------------------------------------------------------------+ double DD(int M_N) { return ( 100 / AccountBalance( ) ) * Loss ( M_N ); } //+------------------------------------------------------------------+
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/14582
![Hidden TP and SL](https://c.mql5.com/i/code/expert.png)
Простой советник, закрывающий позиции с профитом или потерями.
![Plot MQL signal](https://c.mql5.com/i/code/script.png)
Скрипт строит историю по сигналу на графике в MetaTrader 4.
![SBVolumeAvg](https://c.mql5.com/i/code/indicator.png)
Индикатор для расчета среднего объема на трендовом участке линии Zig Zag, ограниченном двумя вертикальными линиями.
![PricePercentRange](https://c.mql5.com/i/code/indicator.png)
Индикатор, рассчитывающий движение цены на основании процентного соотношения High и Low на 100 барах.