Trend_Catcher
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «trend_catcher.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Trend_Catcher — это торговый советник для MetaTrader 4, использующий комбинацию трёх скользящих средних (SMA) и индикатора Parabolic SAR для генерации торговых сигналов. Советник анализирует текущие и предыдущие свечи в рамках выбранного таймфрейма, формируя сигналы на пересечении ценовых уровней SAR и соотношении быстрых и медленных скользящих средних.
При открытии позиций советник автоматически рассчитывает стоп-лосс на основе Parabolic SAR и тейк-профит как кратное значение стоп-лосса. Доступны ручебные настройки стоп-лосса и тейк-профита в пунктах. Лот рассчитывается исходя из процента баланса счёта и заданного риска.
Советник поддерживает систему мартингейла: при убыточном закрытии предыдущего ордера размер следующего увеличивается в заданное число раз. Также реализованы перевод позиции в безубыток и трейлинг-стоп при достижении определённых уровней прибыли в пунктах. Все ордера фильтруются по магическому номеру и символу торгового инструмента.
Настройки программы
| Настройка | Описание |
|---|---|
| Candle_TF | Таймфрейм свечи, в рамках которой советник может открыть только один ордер. Например, при выборе PERIOD_D1 советник открывает только один ордер на текущей дневной свече. |
| PeriodMA_slow | Период медленной простой скользящей средней (SMA), используемой для формирования торговых сигналов. |
| PeriodMA_fast | Период первой быстрой простой скользящей средней (SMA), используемой для формирования торговых сигналов. |
| PeriodMA_fast2 | Период второй быстрой простой скользящей средней (SMA), используемой для формирования торговых сигналов. |
| Step_Sar | Шаг для индикатора Parabolic SAR, определяющий чувствительность индикатора к изменениям цены. |
| Max_Sar | Максимальное значение шага для индикатора Parabolic SAR. |
| Auto_SL | Включает автоматическую установку стоп-лосса на основе индикатора Parabolic SAR. При значении false стоп-лосс задаётся вручную в пунктах параметром SL. |
| Auto_TP | Включает автоматический расчёт тейк-профита как кратного значения стоп-лосса. При значении false тейк-профит задаётся вручную в пунктах параметром TP. |
| minSL | Минимально допустимое значение стоп-лосса в пунктах. Если рассчитанный стоп-лосс меньше этого значения, ордер не открывается. |
| maxSL | Максимально допустимое значение стоп-лосса в пунктах. Если рассчитанный стоп-лосс превышает это значение, ордер не открывается. |
| SL_koef | Множитель для расчёта стоп-лосса на основе значения индикатора Parabolic SAR. При значении 1 стоп-лосс устанавливается точно на уровне SAR. |
| TP_koef | Множитель для расчёта тейк-профита от стоп-лосса. Например, при значении 2 тейк-профит равен удвоенному стоп-лоссу. |
| SL | Стоп-лосс в пунктах, применяется при отключённом автоматическом стоп-лоссе (Auto_SL = false). |
| TP | Тейк-профит в пунктах, применяется при отключённом автоматическом тейк-профите (Auto_TP = false). |
| Risk | Процент от баланса счёта, используемый для расчёта размера лота при открытии позиции. Зависит от стоп-лосса. |
| Martin | Переключатель, активирующий систему мартингейла. При значении true при убыточном закрытии предыдущего ордера размер следующего ордера увеличивается. |
| Koef | Множитель для расчёта размера лота при мартингейле. Если последний ордер закрыт с убытком, риск следующего ордера умножается на это значение. |
| Profit_Level | Уровень прибыли в пунктах, при достижении которого позиция переводится в безубыток с учётом параметра SL_Plus. |
| SL_Plus | Дополнительное количество пунктов, добавляемых к уровню безубытка при переводе позиции в безубыток. |
| Profit_Level2 | Уровень прибыли в пунктах, при достижении которого активируется трейлинг-стоп. |
| TrailingStop2 | Расстояние трейлинг-стопа в пунктах, на которое сдвигается стоп-лосс вслед за ценой после достижения уровня Profit_Level2. |
| Slip | Допустимое проскальзывание при выполнении рыночных ордеров, в пунктах. |
| Magic | Магический номер для фильтрации ордеров, управляемых советником. |
Поиск по коду файла
#property version "1.00"
#property strict
input ENUM_TIMEFRAMES Candle_TF=PERIOD_CURRENT;
extern int PeriodMA_slow=200;
extern int PeriodMA_fast=50;
extern int PeriodMA_fast2=25;
extern double Step_Sar = 0.004;
extern double Max_Sar = 0.2;
extern bool Auto_SL=true;
extern bool Auto_TP=true;
extern int minSL=10;
extern int maxSL=200;
extern double SL_koef=1;
extern double TP_koef=1;
extern int SL=20;
extern int TP=200;
extern double Risk=2;
extern bool Martin=true;
extern double Koef=2;
extern int Profit_Level=500;
extern int SL_Plus=1;
extern int Profit_Level2=500;
extern int TrailingStop2=10;
extern int Slip=3;
extern int Magic=1;
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
}
void OnTick()
{
// код доступен только после оплаты
}
int b=0,s=0,n=0,total=OrdersTotal();
double bez=NormalizeDouble(Profit_Level*Point,Digits);
double sl_plus=NormalizeDouble(SL_Plus*Point,Digits);
double bez2=NormalizeDouble(Profit_Level2*Point,Digits);
double tr=NormalizeDouble(TrailingStop2*Point,Digits);
for(int i1=total-1; i1>=0; i1--)
if(OrderSelect(i1,SELECT_BY_POS))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY)
{
b++;n++;
if(Bid-OrderOpenPrice()>bez && OrderStopLoss()<NormalizeDouble(OrderOpenPrice()+sl_plus,Digits) && OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()+sl_plus,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+sl_plus,Digits),OrderTakeProfit(),0,0);Print("????????? Buy",NormalizeDouble(OrderOpenPrice()+sl_plus,Digits));}
if(Bid-OrderOpenPrice()>bez2 && Bid-OrderStopLoss()>tr && OrderStopLoss()!=NormalizeDouble(Bid-tr,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-tr,Digits),OrderTakeProfit(),0,0);Print("???????? Buy",NormalizeDouble(Bid-tr,Digits));}
}
if(OrderType()==OP_SELL)
{
s++;n++;
if(OrderOpenPrice()-Ask>bez && OrderStopLoss()>NormalizeDouble(OrderOpenPrice()-sl_plus,Digits) && OrderStopLoss()!=NormalizeDouble(OrderOpenPrice()-sl_plus,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-sl_plus,Digits),OrderTakeProfit(),0,0);Print("????????? Sell",NormalizeDouble(OrderOpenPrice()-sl_plus,Digits));}
if(OrderOpenPrice()-Ask>bez2)
if(OrderStopLoss()-Ask>tr || OrderStopLoss()==0)
if(OrderStopLoss()!=NormalizeDouble(Ask+tr,Digits))
{bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+tr,Digits),OrderTakeProfit(),0,0);Print("???????? Sell",NormalizeDouble(Ask+tr,Digits));}
}
}
int h=0,accTotal1=OrdersHistoryTotal();
double h_Percent=0;
double Lot_History=0;
for(int h_1=0;h_1<accTotal1;h_1++)
Показано первые 50% кода (символов: 5054)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.