Если позиция закрылась с убытком - увеличиваем риск
Подключение библиотек.
- Советник должен увеличивать риск - то есть он будет торговать, значит нужен торговый класс класс CTrade
- Расчёт риска будем производить в процентах от маржи - здесь понадобиться класс CMoneyFixedMargin
Заготовка: "If loss - increase risk.mq5" - версия 1.000:
//| If loss - increase risk.mq5 |
//| Copyright © 2017, Vladimir Karputov |
//| http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link "http://wmua.ru/slesar/"
#property description "If loss - increase risk"
#property version "1.000"
#include <Trade\Trade.mqh>
#include <Expert\Money\MoneyFixedRisk.mqh>
CTrade m_trade; // trading object
CMoneyFixedRisk m_money;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| TradeTransaction function |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction& trans,
const MqlTradeRequest& request,
const MqlTradeResult& result)
{
//---
}
//+------------------------------------------------------------------+
Часто приходится решать такое условие - если позиция закрылась с убытком, то нужно увеличить риск.
Как можно отследить вообще факт закрытия позиции? Здесь есть два варианта:
- Постоянное сканирование торговой истории
- Сканирование торговой истории при поступлении события OnTrade()
- "Ловля" события в OnTradeTransaction()
Далее будет:
- Подключение библиотек
- Метод расчёта размера лота в зависимости от риска на свободную маржу
- Обработка OnTradeTransaction() - взведение флага "нужно увеличить риск"
- Реагирование на событие "нужно увеличить риск"
- ...
В СБ нет класса HashTable, как во многих либах, но он есть тут на сайте https://www.mql5.com/ru/articles/1334
Удобно хранить данные в формате ключ - значение, а в качестве значения использовать указатель на класс сделки. Это будет гораздо быстрее, чем перебор истории.
- 2015.03.23
- Vasiliy Sokolov
- www.mql5.com
* размер/величину SL
* размер/объем лота
* размер/величину SL И размер/объем лота
так же нужно учитвать не только факт "прибыльная/убыточная сделка", а и размер убытка, т.к. прибыль может быть +1 пункт, убыток -100 пунктов и тд
..., только не понятно что подразумевается под "увеличиваем риск":
...
Увеличение риска в процентах от маржи - таким образом увеличится размер лота при неизменном уровне StopLoss.
...
так же нужно учитвать не только факт "прибыльная/убыточная сделка", а и размер убытка, т.к. прибыль может быть +1 пункт, убыток -100 пунктов и тд
А таки Да! Нужно тоже покрутить такой момент.
Часто приходится решать такое условие - если позиция закрылась с убытком, то нужно увеличить риск.
Как можно отследить вообще факт закрытия позиции? Здесь есть два варианта:
Далее будет: