Balance increase on drawdowns library

9 июля 2024, 21:19
Kristian Kafarov
0
15
В самом файле BalanceIncOnDD.mqh (его разумеется в папку /include) выберите из списка нужный вам режим ММ и задайте значения для 1й и 2й просадок:
enum LotCalcMode{AdjLotByBalance, AdjLotByMaxBalance, AdjLotIn1DD, AdjLotIn2DDs}; //варианты ММ
LotCalcMode MMmode=AdjLotByBalance; //режим ММ
#define DDsize1 800 //просадка для первого увеличения лота
#define DDsize2 1500 //для второго
Включите его в код своего советника:
#include <BalanceIncOnDD.mqh>
В функцию OnTick() добавьте расчет ММ по текущему балансу:
void OnTick() 
{ 
      LookForBalanceDDs(BalanceNorm); 
}
где  BalanceNorm -- величина баланса, на которую нормируется ваш лот (при Lot=4 торговалось по 4 лота на каждые BalanceNorm баланса).

Лот для сделки установите следующим выражением:

double currlot=NormalizeDouble(Lot*PriceNorm/Bid, 2);            
if(AdjustLotByBalance)currlot=NormalizeDouble(currlot*BalanceToCalcLot/BalanceNorm, 2);

где AdjustLotByBalance это режим роста лота с ростом баланса, а PriceNorm -- цена актива, по которой нормируется лот (у меня 3000 для Эфира).

Наконец, в функцию OnTester() добавьте отрисовку графиков с просадками и вывод всех случаев появления просадок указанных размеров:
double OnTester() 
{ 
            OnTesterBalance(!AdjustLotByBalance); 
}



Файлы: