hardprofit-modi-4digital.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «hardprofit-modi-4digital.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник hardprofit-modi-4digital работает на платформе MetaTrader 4 (MQL4) и предназначен для автоматической торговли на финансовых рынках. Он анализирует ценовые данные с использованием скользящих средних и осцилляторов для формирования сигналов на покупку и продажу. Советник поддерживает фильтрацию по направлению сделок, контроль спреда и ограничение количества сделок в одном баре.
Встроенная система управления рисками предлагает несколько режимов расчёта размера лота: фиксированный, геометрический, пропорциональный и два адаптивных варианта с анализом истории сделок. Для защиты позиции реализованы механизмы перевода в безубыток, частичное фиксирование прибыли на нескольких уровнях и динамическое увеличение стоп-лосса при достижении заданного порога убытка.
Советник позволяет настраивать параметры входа в сделку, уровни стоп-лосса и тейк-профита в пунктах, а также задавать магический номер для идентификации ордеров. Режим отладки выводит текущие параметры и информацию об ошибках на график для удобства тестирования и мониторинга работы.
Настройки программы
| Настройка | Описание |
|---|---|
| BreakoutPeriode | Период диапазона пробоя — Определяет количество баров для расчёта верхней и нижней границы ценового диапазона, используемого при формировании сигналов |
| TrendPeriode | Период трендовой линии — Задаёт период скользящей средней для определения направления текущего тренда |
| OnlyShort | Только короткие позиции — При включении разрешает открытие только продаж, блокируя сигналы на покупку |
| OnlyLong | Только длинные позиции — При включении разрешает открытие только покупок, блокируя сигналы на продажу |
| MaxTradesPerBar | Максимум сделок в баре — Ограничивает количество одновременно открытых сделок, которые могут быть размещены за один бар |
| StopLoss | Стоп-лосс — Расстояние в пунктах от цены входа для установки стоп-лосса при открытии позиции |
| BreakEven | Безубыток — Уровень прибыли в пунктах, при достижении которого стоп-лосс перемещается в точку безубытка |
| SeuilSL | Порог увеличения стоп-лосса — Расстояние в пунктах от цены входа, после которого стоп-лосс увеличивается для снижения максимального просадки |
| PartialTP1 | Частичный TP первый — Первый уровень прибыли в пунктах, при достижении которого закрывается часть позиции |
| PartialRatio1 | Доля первого частичного TP — Процентная доля объёма позиции, закрываемая при достижении первого уровня частичной прибыли |
| PartialTP2 | Частичный TP второй — Второй уровень прибыли в пунктах для дополнительного частичного закрытия позиции |
| PartialRatio2 | Доля второго частичного TP — Процентная доля оставшегося объёма, закрываемая при достижении второго уровня частичной прибыли |
| TakeProfit | Тейк-профит — Основной уровень фиксации прибыли в пунктах от цены входа |
| Slippage | Проскальзывание — Максимально допустимое отклонение цены исполнения от запрошенной в пунктах |
| MaxSpread | Максимальный спред — Допустимый максимальный размер спреда в пунктах для размещения ордеров |
| Magic | Магический номер — Идентификатор ордеров, размещённых данным советником, для их фильтрации и управления |
| MMType | Тип управления лотом — Выбор режима расчёта размера лота: фиксированный, геометрический, пропорциональный или адаптивный |
| FixedLots | Фиксированный лот — Размер лота, используемый при фиксированном режиме управления рисками |
| GeometricalFactor | Геометрический множитель — Коэффициент, влияющий на расчёт размера лота в геометрическом режиме управления |
| ProportionalRisk | Пропорциональный риск — Процент от свободного маржи, используемый для расчёта размера лота в пропорциональном режиме |
| LastXTrades | Анализ последних сделок — Количество последних завершённых сделок, учитываемых при адаптивном расчёте размера лота |
| DecreaseFactor | Коэффициент уменьшения — Параметр, определяющий степень снижения лота после серии убыточных сделок |
| TSSFTrigger1 | Порог TSSF первый — Первый пороговый уровень для переключения между режимами расчёта лота в адаптивной системе |
| TSSFRatio1 | Доля маржи TSSF первая — Процентная доля свободного маржи, используемая при первом уровне срабатывания адаптивной системы |
| TSSFTrigger2 | Порог TSSF второй — Второй пороговый уровень для переключения режима расчёта лота |
| TSSFRatio2 | Доля маржи TSSF вторая — Процентная доля свободного маржи при втором уровне срабатывания адаптивной системы |
| TSSFTrigger3 | Порог TSSF третий — Третий пороговый уровень для переключения режима расчёта лота |
| TSSFRatio3 | Доля маржи TSSF третья — Процентная доля свободного маржи при третьем уровне срабатывания адаптивной системы |
| DebugMode | Режим отладки — Включает вывод текущей информации о параметрах и ошибках на график для мониторинга работы советника |
Поиск по коду файла
/*
modChrisLBX
v1.1
- Added an increase of SL when a defined threshold is reached to reduce the maximum drawdown.
v1.0
- Debugged the original EA: there were errors when creating, modifying and closing orders.
- Added a filter to configure the EA for one trading direction at a time.
- Added MaxSpread.
- Made the magic number configurable.
*/
extern string rem1="//---- Trend and breakout settings";
extern int BreakoutPeriode=1;
extern int TrendPeriode=3;
extern string rem2="//---- Order";
extern bool OnlyShort=false;
extern bool OnlyLong=false;
extern int MaxTradesPerBar=1;
extern int StopLoss=140;//40
extern int BreakEven=30;
extern int SeuilSL = 330;
extern int PartialTP1=550;
extern int PartialRatio1=30;
extern int PartialTP2=1100;
extern int PartialRatio2=70;
extern int TakeProfit=1500;
extern int Slippage=30;
extern int MaxSpread=30;
extern int Magic=12387;
extern string rem3="//---- MM: 1.Fixed 2.Geometrical 3.Proportional 4.Smart 5.TSSF";
extern int MMType=3;
extern double FixedLots=0.1;
extern int GeometricalFactor=3;
extern int ProportionalRisk=90;
extern int LastXTrades=10;
extern double DecreaseFactor=2;
extern double TSSFTrigger1=1;
extern int TSSFRatio1=50;
extern double TSSFTrigger2=2;
extern int TSSFRatio2=75;
extern double TSSFTrigger3=3;
extern int TSSFRatio3=100;
extern string rem4="//---- Debug";
extern bool DebugMode=false;
double Lots;
bool SignalBuy=false;
bool SignalSell=false;
double highrange, lowrange;
double trend, trend1, signaltrend;
datetime LastTradeTime=0;
int MaxTrades=false;
int FlagPartial=0;
int OrdersThisBar;
int orders;
int losses;
int nbDecimales;
int i;
int tradegagnant,tradeperdant;
double profit, perte, avgwin, avgloss, prcwin, tssf;
bool TradingRange;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
if (OrdersTotal()>0) OrdersList();
if (OrdersTotal()<1) FlagPartial=0;
highrange=High[iHighest(NULL,0,MODE_HIGH,BreakoutPeriode,1)];
lowrange=Low[iLowest(NULL,0,MODE_LOW,BreakoutPeriode,1)];
trend=iMA(NULL,0,TrendPeriode,0,MODE_SMMA,PRICE_MEDIAN,0);
trend1=iMA(NULL,0,TrendPeriode,0,MODE_SMMA,PRICE_MEDIAN,1);
double MAFAST = iMA(NULL,0,5,0,MODE_SMA,PRICE_CLOSE,1);
double MASLOW = iMA(NULL,0,6,0,MODE_SMA,PRICE_OPEN,1);
double OsMA = iOsMA(NULL,0,5,9,3,PRICE_CLOSE,1) ;
signaltrend=trend-trend1;
if (Time[0]==LastTradeTime&&OrdersThisBar>=MaxTradesPerBar)
{MaxTrades=true;}
else
{MaxTrades=false;}
if (Time[0]!=LastTradeTime)
{OrdersThisBar=0;}
if (Close[0]>Open[0] && Close[0]<lowrange && signaltrend>0 && OrdersTotal()<1 && MaxTrades==false
&& Ask-Bid<=MaxSpread*Point && !OnlyShort && MAFAST>MASLOW && OsMA>0.0)
SignalBuy=true;
if (Close[0]<Open[0] && Close[0]>highrange && signaltrend<0 && OrdersTotal()<1
&& MaxTrades==false && Ask-Bid<=MaxSpread*Point && !OnlyLong && MAFAST<MASLOW && OsMA<0.0)
SignalSell=true;
if (SignalBuy==true||SignalSell==true)
{
if (MMType==1&&OrdersTotal()<1)Lots=FixedLots;
if (MMType==2&&OrdersTotal()<1)Lots=0.1*MathSqrt(AccountBalance()/1000)*GeometricalFactor;
if (MMType==3&&OrdersTotal()<1)Lots=AccountEquity()/Close[0]/1000*ProportionalRisk/100;
if (MMType==4&&OrdersTotal()<1)
{orders=HistoryTotal(); // Historique des ordres
losses=0; // Number of consecutive losing trades
Lots=NormalizeDouble(AccountFreeMargin()*ProportionalRisk/10000,1);
for(i=orders-1;i>=orders-LastXTrades;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==False)
{
Print("Error in trading history!");
break;
}
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL)
continue;
if(OrderProfit()>0)
break;
if(OrderProfit()<0)
losses++;
}
if(losses>1)
Lots=NormalizeDouble(Lots-Lots*losses/DecreaseFactor,1);
}
if (MMType==5&&OrdersTotal()<1)
{
orders=HistoryTotal();
tradegagnant=0;
tradeperdant=0;
profit=0;
perte=0;
avgwin=0;
avgloss=0;
prcwin=0;
tssf=0;
for(int j=orders-1;j>=orders-LastXTrades;j--)
{
if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)==False)
{
Print("Error in trading history!");
break;
}
if(OrderProfit()>=0)
{
tradegagnant++;
profit=profit+OrderProfit();
}
else
{
tradeperdant++;
perte=perte+OrderProfit();
}
}
if (orders>LastXTrades)avgwin=profit/tradegagnant;
if (orders>LastXTrades)avgloss=perte/tradeperdant;
if (orders>Показано первые 50% кода (символов: 7900)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.