Termos de Referência
ПОРТФОЛИО Правильный риск управления капиталом истинного будущего баланса
&
Последовательные победы Используйте управление капиталом
--------- Задача 1. Правильный риск управления капиталом истинного будущего баланса -----
Программное обеспечение генерирует стратегии mql4, мне нужно ввести в него правильное управление капиталом и эксплойт для последовательных побед
Добавить сценарий #include
Минимальное вмешательство в код, желательно инжектор кода
Перехватывать отложенные заказы, обновлять отложенные заказы каждую минуту?
Убедитесь, что отложенные ордера LOT SIZE пересчитаны с новым размером лота в MM
Добавьте сюда параметры
каждая новая сделка вычисляет / пересчитывает все открытые сделки и отложенные ордера всех стратегий, которые стали живыми ордерами открытого рынка:
true_future_balance = текущий баланс - (все свопы + все налоги + все комиссии + все МАКСИМАЛЬНЫЕ определенные СТОП-УБЫТКИ + все скользящие стопы / прибыль + вся маржа + любые другие расходы)
и только потом вычисляет% риска от true_future_balance
так сейчас выглядит ММ, так и оставьте
double sqMMRiskFixedBalancePct(string symbol, int orderType, double price, double sl, double RiskInPercent, int Decimals, double LotsIfNoMM, double MaximumLots) {
Verbose("Computing Money Management for order - Risk fixed % of account balance");
symbol = correctSymbol(symbol);
double openPrice = price > 0 ? price : (orderType == OP_BUY ? sqGetAsk(symbol) : sqGetBid(symbol));
double LotSize=0;
if(RiskInPercent < 0 ) {
Verbose("Computing Money Management - Incorrect RiskInPercent size, it must be above 0");
return(0);
}
double PointValue = MarketInfo(symbol, MODE_TICKVALUE) / MarketInfo(symbol, MODE_TICKSIZE);
double Smallest_Lot = MarketInfo(symbol, MODE_MINLOT);
double Largest_Lot = MarketInfo(symbol, MODE_MAXLOT);
double LotStep = MarketInfo(symbol, MODE_LOTSTEP);
//Maximum amount of money to risk
double moneyToRisk = AccountBalance() * RiskInPercent / 100;
//Maximum drawdown of this order if we buy 1 lot
double oneLotSLDrawdown = PointValue * MathAbs(openPrice - sl);
if(oneLotSLDrawdown > 0) {
LotSize = roundDown(moneyToRisk / oneLotSLDrawdown, Decimals);
}
else {
LotSize = 0;
}
//--- MAXLOT and MINLOT management
Verbose("Computing Money Management - Smallest_Lot: ", Smallest_Lot, ", Largest_Lot: ", Largest_Lot,", Computed LotSize: ", LotSize);
Verbose("Max money to risk: ", moneyToRisk, ", SL:", sl, ", One lot drawdown: ", oneLotSLDrawdown, ", Point value: ", PointValue);
if(LotSize <= 0) {
Verbose("Calculated LotSize is <= 0. Using LotsIfNoMM value: ", LotsIfNoMM, ")");
LotSize = LotsIfNoMM;
}
if(LotSize > MaximumLots) {
Verbose("LotSize is too big. LotSize set to maximal allowed value (MaximumLots): ", MaximumLots);
LotSize = MaximumLots;
}
//--------------------------------------------
if (LotSize < Smallest_Lot) {
Verbose("Calculated LotSize is too small. Minimal allowed lot size from the broker is: ", Smallest_Lot, ". Please, increase your risk or set fixed LotSize.");
LotSize = 0;
}
else if (LotSize > Largest_Lot) {
Verbose("LotSize is too big. LotSize set to maximal allowed market value: ", Largest_Lot);
LotSize = Largest_Lot;
}
return (LotSize);
}
// Переменные управления капиталом
// + ----------------------------------------------- ------------------- +
extern string smm = "----------- Управление капиталом - процент фиксированного риска -----------";
extern double mmRiskPercent = 5.0;
extern int mmDecimals = 1;
extern int mmStopLossPips = 100;
extern double mmLotsIfNoMM = 1.0;
extern double mmMaxLots = 5.0;
------------------------------ Задача 2. Эксплуатация последовательных побед -------------- ------------
добавить эксплойт с последовательными выигрышами в управление капиталом
Посмотри на этот симулятор пожалуйста
https://mt4-forex-ea.com/online-tools-apps-for-traders/money-management-simulator/index.php#form
добавить к сегменту мм
extern int sequence_winning_trades = 5;
extern логический Reset_risk_after_loss = false;
внешнее целое Win_trade_rise = 30%
например в портфолио 5 стратегий
скрипт регулирует размер лота в соответствии с настройками последовательных выигрышей всего портфеля
если произошла выигрышная сделка, тогда
размер следующего лота = текущий размер лота увеличен на win_trade_rise
после того, как sequence_winning_trades> = 5, не увеличивайте размер лота
в случае проигрыша сделайте сброс до исходного размера лота
PORTFOLIO Proper true future balance money management risk
&
Consecutive Wins Exploit money management
---------Task 1. Proper true future balance money management risk-----
Software generates mql4 strategies, I have to inject proper money management & consecutive wins exploit into it
Add #include script
Minimum interference with the code, preferably code injector
Intercept pending orders, update pending orders every minute?
Make sure pending orders LOT SIZE is recalculated with new MM lot size
Add here params
each new trade calculates/recalculates all strategies' open trades and pending orders that became open market live orders:
true_future_balance = current balance – (all swaps+ all taxes+ all commissions + all MAX defined STOP LOSSES + all Trailing Stops/Profits + all margins + any other expense)
and only then calculates risk % from true_future_balance
this is how MM currently looks like, keep it that way
// Money Management variables
//+------------------------------------------------------------------+
extern string smm = "----------- Money Management - Risk Fixed % Of Account -----------";
extern double mmRiskPercent = 5.0;
extern int mmDecimals = 1;
extern int mmStopLossPips = 100;
extern double mmLotsIfNoMM = 1.0;
extern double mmMaxLots = 5.0;
------------------------------ Task 2. Consecutive Wins Exploit --------------------------
add consecutive wins exploit to Money Management
Look at this simulator please
https://mt4-forex-ea.com/online-tools-apps-for-traders/money-management-simulator/index.php#form
add to mm segment
extern int consecutive_winning_trades = 5;
extern Boolean Reset_risk_after_loss = false;
extern integer winning_trade_rise = 30%
for example in portfolio there are 5 strategies
script adjusts lot size according to consecutive wins settings of entire portfolio
if winning trade happened then
next lot size = current lot size increased by winning_trade_rise
once consecutive_winning_trades >= 5 then do not increase lot size
if lost trade then drop to original lot size