Accelerator Trailing SL&TP
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «5min scalping.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник предназначен для автоматического анализа ценовых данных с использованием скользящих средних, индикатора полос Боллинджера, MACD и ATR, а также для выполнения торговых операций через стандартный API MetaTrader 4.
Советник обрабатывает событие OnTick, проверяет наличие новых ордеров и открытых позиций, а также поддерживает работу на различных таймфреймах с автоматическим пересчётом коэффициентов. При отсутствии открытых позиций он оценивает условия для входа в сделку и отправляет ордера на покупку или продажу через функцию OrderSend.
В советнике реализованы функции управления рисками: перемещение стоп-лосса в безубыточную зону, скользящий стоп-лосс (Trailing Stop), а также оптимизация размера лота на основе свободного маржа и истории убыточных сделок. Торговые позиции могут закрываться при достижении определённых условий, связанных с ценовыми уровнями и сигналами индикаторов.
Входные параметры советника включают размеры лота, уровни стоп-лосса и тейк-профита, параметры скользящих средних, настройки трейлинга и перемещения стоп-лосса. Все параметры доступны для настройки пользователем через интерфейс MetaTrader 4.
Настройки программы
| Настройка | Описание |
|---|---|
| Enable "no loss" (USEMOVETOBREAKEVEN) | Перевод в безубыточную зону — Переключатель, активирующий функцию перевода позиции в безубыточную зону. При значении true стоп-лосс автоматически перемещается на уровень открытия позиции после достижения определённой прибыли. |
| When to move break even (WHENTOMOVETOBE) | Пункты для перевода в безубыточную зону — Количество пунктов прибыли, которое должно быть набрано до перевода стоп-лосса в безубыточную зону. |
| How much pips to move sl (PIPSTOMOVESL) | Пункты перемещения стоп-лосса — Количество пунктов, на которое перемещается стоп-лосс при переводе позиции в безубыточную зону. |
| Lots size (Lots) | Размер лота — Размер лота по умолчанию, используемый при открытии торговых операций. Применяется как базовое значение для расчёта оптимального размера позиции. |
| MaximumRisk | Максимальный риск — Максимальный процент риска от свободного маржа, используемый для автоматического расчёта размера лота при открытии позиции. |
| DecreaseFactor | Коэффициент уменьшения лота — Коэффициент уменьшения лота на основе количества убыточных сделок без перерыва. При значении больше нуля рассчитывается количество убыточных ордеров и уменьшается размер лота пропорционально. |
| TrailingStop (TrailingStop) | Скользящий стоп-лосс — Расстояние в пунктах для скользящего стоп-лосса (Trailing Stop). При превышении цены указанного уровня позиция автоматически перемещает стоп-лосс в пользу трейдера. |
| Stop Loss (Stop_Loss) | Стоп-лосс — Значение стоп-лосса в пунктах, задаваемое при открытии торговых позиций. Определяет максимальный допустимый убыток по сделке. |
| MagicNumber (MagicNumber) | Магический номер — Магический номер для идентификации ордеров, открытых данным советником. Используется для фильтрации позиций при управлении ими. |
| TakeProfit (TakeProfit) | Тейк-профит — Значение тейк-профита в пунктах, задаваемое при открытии торговых позиций. Определяет целевой уровень прибыли по сделке. |
| FastMA (FastMA) | Период быстрой скользящей средней — Период быстрой скользящей средней (LWMA), используемой для определения краткосрочного тренда и генерации торговых сигналов. |
| SlowMA (SlowMA) | Период медленной скользящей средней — Период медленной скользящей средней (LWMA), используемой для определения долгосрочного тренда и подтверждения направления движения цены. |
| Distance (Distance) | Расстояние — Параметр расстояния, объявленный в коде, но не используемый в текущей версии торговой логики. |
| Momentum_Sell (Mom_Sell) | Моментум продажи — Параметр моментума для продажи, объявленный в коде, но не используемый в текущей версии торговой логики. |
| Momentum_Buy (Mom_Buy) | Моментум покупки — Параметр моментума для покупки, объявленный в коде, но не используемый в текущей версии торговой логики. |
Поиск по коду файла
#property version "1.00"
#property strict
extern bool USEMOVETOBREAKEVEN=true;//Enable "no loss"
extern double WHENTOMOVETOBE=10; //When to move break even
extern double PIPSTOMOVESL=5; //How much pips to move sl
extern double Lots=0.01; //Lots size
input double MaximumRisk =0.02;
input double DecreaseFactor=3;
extern double TrailingStop=40; //TrailingStop
extern double Stop_Loss=20; //Stop Loss
extern int MagicNumber=1234; //MagicNumber
input double TakeProfit=50; //TakeProfit
extern int FastMA=6; //FastMA
extern int SlowMA=85; //SlowMA
extern double Distance=5; //Distance
extern double Mom_Sell=0.3; //Momentum_Sell
extern double Mom_Buy=0.3; //Momentum_Buy
int err;
int total=0;
double
Lot,Dmax,Dmin,// Amount of lots in a selected order
Lts, // Amount of lots in an opened order
Min_Lot, // Minimal amount of lots
Step, // Step of lot size change
Free, // Current free margin
One_Lot, // Price of one lot
Price, // Price of a selected order,
pips,
MA_1,MA_2,MA_3,MACD_SIGNAL;
int Type,freeze_level,Spread;
double priceopen,stoploss,takeprofit;
int orderticket;
int
Period_MA_2, Period_MA_3, // Calculation periods of MA for other timefr.
Period_MA_02, Period_MA_03, // Calculation periods of supp. MAs
K2,K3,T;
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
}
void OnTick(void)
{
// код доступен только после оплаты
}
void stop()
{
int cnt;
double middleBB=iBands(Symbol(),0,20, 2,0,0,MODE_MAIN,1);//middle
double lowerBB=iBands(Symbol(),0,20, 2,0,0,MODE_LOWER,1);//lower
double upperBB=iBands(Symbol(),0,20, 2,0,0,MODE_UPPER,1);//upper
double MacdMAIN=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
double MacdSIGNAL=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
for(cnt=0;cnt<total;cnt++)
{
if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
if(OrderType()==OP_BUY)
{
if(((Bid<OrderOpenPrice()-iATR(NULL,0,14,0))
|| ((MacdMAIN>0 && MacdMAIN<MacdSIGNAL) || (MacdMAIN<0 && (MathAbs(MacdMAIN)>MathAbs(MacdSIGNAL))))
|| Close[1]==upperBB))
exitbuys();
}
else // go to short position
{
if(((Ask>OrderOpenPrice()+iATR(NULL,0,14,0))
|| ((MacdMAIN>0 && MacdMAIN>MacdSIGNAL) || (MacdMAIN<0 && (MathAbs(MacdMAIN)<MathAbs(MacdSIGNAL)))))
|| Close[1]==lowerBB)
exitsells();
}
}
}
}
void Trail1()
{
total=OrdersTotal();
for(int cnt=0;cnt<total;cnt++)
{
if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>pips*TrailingStop)
{
if(OrderStopLoss()<Bid-pips*TrailingStop)
{
RefreshRates();
stoploss=Bid-(pips*TrailingStop);
takeprofit=OrderTakeProfit()+pips*TrailingStop;
double StopLevel=MarketInfo(Symbol(),MODE_STOPLEVEL)+MarketInfo(Symbol(),MODE_SPREAD);
if(stoploss<StopLevel*pips) stoploss=StopLevel*pips;
string symbol=OrderSymbol();
double point=SymbolInfoDouble(symbol,SYMBOL_POINT);
if(MathAbs(OrderStopLoss()-stoploss)>point)
if((pips*TrailingStop)>(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_FREEZE_LEVEL)*pips)
if(CheckStopLoss_Takeprofit(OP_BUY,stoploss,takeprofit))
if(OrderModifyCheck(OrderTicket(),OrderOpenPrice(),stoploss,takeprofit))
if(!OrderModify(OrderTicket(),OrderOpenPrice(),stoploss,takeprofit,0,Green))
Print("OrderModify error ",GetLastError());
return;
}
}
}
}
else // go to short position
{
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(pips*TrailingStop))
{
if((OrderStopLoss()>(Ask+pips*TrailingStop)) || (OrderStopLoss()==0))
{
RefreshRates();
stoploss=Ask+(pips*TrailingStop);
takeprofit=OrderTakeProfit()-pips*TrailingStop;
double StopLevel=MarketInfo(Symbol(),MODE_STOPLEVEL)+MarketInfo(Symbol(),MODE_SPREAD);
if(stoploss<StopLevel*pips) stoploss=StopLevel*pipsПоказано первые 50% кода (символов: 12722)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.