Keltner Breakout
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «keltner breakout fxfisherman.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
«Keltner Breakout» — торговый советник для MetaTrader 4, использующий индикатор Keltner Channels для определения пробития канала. При пробитии верхней границы канала с дополнительным отступом в пунктах открывается покупка, при пробитии нижней границы — продажа. Советник автоматически закрывает позиции при развороте цены обратно внутрь канала.
Советник поддерживает несколько режимов управления рисками. Стоп-лосс может быть задан фиксированным, рассчитанным по индикатору ATR, по формуле полуволатильности, по уровням пробития предыдущего дня или в режиме безубыточности. Трейлинг-стоп активируется после достижения цены заданного триггерного уровня и позволяет защищать прибыль с настраиваемой чувствительностью.
Доступна фильтрация по торговой сессии — вход в позиции возможен только в заданном временном интервале. Размер лота можно задать фиксированным или рассчитать как процент от баланса счёта. Все ордера управляются через расширенные функции с автоматической повторной попыткой исполнения и блокировкой при торговых операциях.
Настройки программы
| Настройка | Описание |
|---|---|
| _______Position_______ | Группа настроек позиции: фиксированный лот, процент от баланса, тейк-профит, стоп-лосс и режим стоп-лосса. |
| Lots | Фиксированный размер лота для открытия ордеров, используется при отключённом режиме расчёта лота по проценту от баланса. |
| Lots_PCT | Процент от баланса счёта, используемый для расчёта размера лота при включённом режиме Use_Lots_PCT. |
| Use_Lots_PCT | Переключатель расчёта размера лота: при значении true лот рассчитывается как процент от баланса счёта, при false — используется фиксированный размер Lots. |
| TP | Расстояние в пунктах до тейк-профита от цены открытия ордера. При значении 0 тейк-профит не устанавливается. |
| SL | Расстояние в пунктах для стоп-лосса. Используется в зависимости от выбранного режима SL_Mode. |
| SL_Mode | Режим расчёта стоп-лосса: 0 — без стоп-лосса, 1 — фиксированный, 2 — по ATR, 3 — по полуволатильности, 4 — по пробитию предыдущего дня, 5 — безубыточность. |
| Breakeven_Pips | Расстояние в пунктах от цены открытия ордера, на которое устанавливается безубыточный стоп-лосс. При значении 0 функция безубыточности отключена. |
| ______TrailingStop_____ | Группа настроек трейлинг-стопа: режим, триггер, чувствительность и динамический коэффициент для защиты прибыли. |
| TS_Mode | Режим трейлинг-стопа: 0 — отключён, 1 — фиксированный стоп-лосс, 2 — ATR, 3 — полуволатильность, 4 — пробитие вчерашних максимумов/минимумов, 5 — безубыточность. |
| TS_Trigger | Расстояние в пунктах от цены открытия ордера, которое цена должна пройти для активации трейлинг-стопа. |
| TS_Sensitivity | Чувствительность срабатывания трейлинг-стопа, задаётся в пунктах. Определяет минимальное расстояние изменения стоп-лосса. |
| TS_DynamicFactor | Динамический коэффициент, применяемый при расчёте уровня стоп-лосса в режимах ATR (2) и полуволатильности (3). |
| Evaluate_Interval | Интервал анализа сигналов: -1 — по каждому тику на текущем таймфрейме, 0 — по каждому тику, значение больше 0 — через заданное количество минут. |
| _______Indicators______ | Группа настроек индикаторов: дополнительные пункты фильтрации и период индикатора Keltner Channels. |
| Extra_Pips | Дополнительные пункты отступа от границ канала Keltner для фильтрации сигналов на вход и выход из позиции. |
| Keltner_Period | Период расчёта индикатора Keltner Channels, используемого для определения границ канала и сигналов пробития. |
| _______Session_______ | Группа настроек торговой сессии: фильтр по времени, часы и минуты начала и окончания разрешённого периода торговли. |
| Filter_Session | Включает или отключает фильтр торговой сессии. При включении ордера открываются только в заданном временном диапазоне. |
| From_Hour | Час начала разрешённой торговой сессии для фильтрации входов в позиции. |
| From_Min | Минута начала разрешённой торговой сессии для фильтрации входов в позиции. |
| To_Hour | Час окончания разрешённой торговой сессии для фильтрации входов в позиции. |
| To_Min | Минута окончания разрешённой торговой сессии для фильтрации входов в позиции. |
Поиск по коду файла
#include <stdlib.mqh>
#define TS_MODE_DISABLE 0
#define TS_MODE_FIXED_SL 1
#define TS_MODE_ATR 2
#define TS_MODE_HALF_VOLATILITY 3
#define TS_MODE_BREAKOUT 4
#define TS_MODE_BREAKEVEN 5
extern string _______Position_______;
extern double Lots=1;
extern double Lots_PCT=10;
extern bool Use_Lots_PCT=false;
extern int TP=0;
extern int SL=30;
extern int SL_Mode=0;
extern int Breakeven_Pips=0;
extern string ______TrailingStop_____;
extern int TS_Mode=0; // 0 = disabled, 1 = Fixed SL, 2 = ATR, 3 = Half Volatility, 4 = Breakout Yesterday Hi/Lo
extern int TS_Trigger=30;
extern int TS_Sensitivity=3;
extern double TS_DynamicFactor=0.5; // applied only if TrailingStopMode = 2 or 3
extern int Evaluate_Interval=1; // -1 chart, 0 tick, > 0 specified min
extern string _______Indicators______;
extern int Extra_Pips=1;
extern int Keltner_Period = 10;
extern string _______Session_______;
extern bool Filter_Session=false;
extern int From_Hour=13;
extern int From_Min=0;
extern int To_Hour=18;
extern int To_Min=0;
string expert_name = "Keltner Breakout";
int main_magic;
int open_slippage=5;
int close_slippage=10;
int orderType;
double orderPrice;
datetime timeNextEval;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
int BuyNow()
{
double trueSL, trueTP, lotSize;
lotSize = GetLots(Symbol(), Lots, Lots_PCT, Use_Lots_PCT);
trueSL = Get_SL(OP_BUY, Ask, Ask, SL, SL_Mode, TS_DynamicFactor);
if (TP > 0) trueTP = Bid+(TP*Point);
int ticket = OrderSendEx(Symbol(), OP_BUY, lotSize, Ask, open_slippage*Point, trueSL, trueTP, expert_name + " " + Symbol() + Period(), main_magic, 0, Yellow);
if (ticket > 0) orderType = OP_BUY; orderPrice = Bid;
return(ticket);
}
int SellNow()
{
double trueSL, trueTP, lotSize;
lotSize = GetLots(Symbol(), Lots, Lots_PCT, Use_Lots_PCT);
trueSL = Get_SL(OP_SELL, Bid, Bid, SL, SL_Mode, TS_DynamicFactor);
if (TP > 0) trueTP = Bid-(TP*Point);
int ticket = OrderSendEx(Symbol(), OP_SELL, lotSize, Bid, open_slippage*Point, trueSL, trueTP, expert_name + " " + Symbol() + Period(), main_magic, 0, Yellow);
if (ticket > 0) orderType = OP_SELL; orderPrice = Bid;
return(ticket);
}
void ControlTrailingStop(int ticket, double SL, int TS_Mode, int TS_Trigger, double TS_DynamicFactor, int TS_Sensitivity)
{
if (ticket == 0 || TS_Mode == 0) return;
double ts;
if (OrderSelectEx(ticket, SELECT_BY_TICKET, MODE_TRADES)==false) return;
if (OrderType() == OP_BUY){
ts = Get_SL(OP_BUY, OrderOpenPrice(), Bid, SL, TS_Mode, TS_DynamicFactor);
if ((ts >= OrderStopLoss() + TS_Sensitivity*Point) && (ts > 0) && (Bid >= OrderOpenPrice() + TS_Trigger*Point )) {
if (Bid - ts >= 5 * Point)
{
OrderModifyEx(ticket, OrderOpenPrice(), ts, OrderTakeProfit(), 0, Red);
}else if(Bid <= ts){
CloseNow(ticket);
}
}
}else if(OrderType() == OP_SELL){
ts = Get_SL(OP_SELL, OrderOpenPrice(), Ask, SL, TS_Mode, TS_DynamicFactor);
if ((ts <= OrderStopLoss() - TS_Sensitivity*Point) && (ts > 0) && (Ask <= OrderOpenPrice() - TS_Trigger*Point)){
if (ts - Ask >= 5 * Point)
{
OrderModifyEx(ticket, OrderOpenPrice(), ts, OrderTakeProfit(), 0, Red);
}else if(ts <= Ask){
CloseNow(ticket);
Показано первые 50% кода (символов: 9249)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.