NewsBreakv8
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «newsbreakv8.jwmq4.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
NewsBreakv8 — торговый советник для MetaTrader 4, предназначенный для размещения отложенных ордеров (Buy Stop и Sell Stop) в зависимости от запланированных временных окон и текущей ценовой активности. Советник отслеживает два независимых событийных окна с настраиваемым временем и размещает стоп-заявки на покупку и продажу при достижении определённых ценовых уровней.
Советник включает средства управления открытыми позициями: перевод стоп-лосса в безубыточную точку (Break Even) и автоматическое перемещение защитного ордера по тренду (Trailing Stop). Эти функции работают для позиций, открытых различными внутренними стратегиями, и настраиваются отдельными параметрами.
Дополнительно реализованы входы на основе полос Боллинджера с настраиваемыми параметрами лотов, стоп-лосса и тейк-профита для покупок и продаж. Доступна фильтрация по спреду для части режимов входа. Управление рисками осуществляется через ограничение использования маржинального запаса счёта.
Настройки программы
| Настройка | Описание |
|---|---|
| RiskPercent | Процент риска — Максимальный процент использования маржинального запаса счёта для открытия новых позиций |
| wantNews1 | Включить событие 1 — Включает или отключает первое событийное окно |
| NewsHour1 | Час события 1 — Час первого запланированного события |
| NewsMinutes1 | Минуты события 1 — Минуты первого запланированного события |
| wantNews2 | Включить событие 2 — Включает или отключает второе событийное окно |
| NewsHour2 | Час события 2 — Час второго запланированного события |
| NewsMinutes2 | Минуты события 2 — Минуты второго запланированного события |
| wantOCO | Включить OCO — Включает или отключает режим OCO (один отменяет другой) для управления отложенными ордерами |
| PendingTime | Время ожидания ордеров — Время в минутах, в течение которого действуют отложенные ордера после события |
| NewsLots | Лот событий — Объём лота для отложенных ордеров по событиям |
| NewsPips | Пипсы за пределы диапазона — Количество пипсов за пределами диапазона для размещения отложенных ордеров |
| NewsTP | Тейк-профит событий — Тейк-профит в пипсах для отложенных ордеров по событиям |
| NewsSL | Стоп-лосс событий — Стоп-лосс в пипсах для отложенных ордеров по событиям |
| NewsLookBack | Бары анализа диапазона — Количество баров для анализа диапазона цен при размещении отложенных ордеров |
| BEpips | Пипсы безубыточности — Количество пипсов для перевода стоп-лосса в безубыточную точку (0 — отключено) |
| TrailingStop | Перемещающийся стоп-лосс — Расстояние в пипсах для перемещения стоп-лосса по тренду (0 — отключено) |
| wantSpreadBO | Включить фильтр спреда — Включает или отключает фильтрацию входов по спреду |
| VarSpread | Порог спреда — Пороговое значение спреда для фильтрации входов по событиям |
| BBTF | Таймфрейм BB — Таймфрейм для расчёта полос Боллинджера |
| BarsForRange | Бары для диапазона BB — Количество баров для расчёта диапазона полос Боллинджера |
| wantBBbuys | Включить покупки BB — Включает или отключает входы в покупку по полосам Боллинджера |
| BBBuyLots | Лот покупки BB — Объём лота для покупки по сигналу полос Боллинджера |
| BuyBarPips | Пипсы входа покупки BB — Количество пипсов от открытия бара для входа в покупку по полосам Боллинджера |
| BuyBarTP | Тейк-профит покупки BB — Тейк-профит в пипсах для покупки по полосам Боллинджера |
| BuyBarSL | Стоп-лосс покупки BB — Стоп-лосс в пипсах для покупки по полосам Боллинджера |
| wantBBsells | Включить продажи BB — Включает или отключает входы в продажу по полосам Боллинджера |
| BBSellLots | Лот продажи BB — Объём лота для продажи по сигналу полос Боллинджера |
| SellBarPips | Пипсы входа продажи BB — Количество пипсов от открытия бара для входа в продажу по полосам Боллинджера |
| SellBarTP | Тейк-профит продажи BB — Тейк-профит в пипсах для продажи по полосам Боллинджера |
| SellBarSL | Стоп-лосс продажи BB — Стоп-лосс в пипсах для продажи по полосам Боллинджера |
Поиск по коду файла
#define MAGIC1 20060819
#define MAGIC2 12345678
#define MAGIC3 01221962
#define MAGIC4 07221958
#include <stdlib.mqh>
#define NL "\n"
extern int RiskPercent = 100;
extern bool wantNews1 = true;
extern int NewsHour1 = 12;
extern int NewsMinutes1 = 31;
extern bool wantNews2 = true;
extern int NewsHour2 = 12;
extern int NewsMinutes2 = 31;
extern bool wantOCO = false;
extern int PendingTime = 120;
extern double NewsLots = 5;
extern int NewsPips = 5;
extern int NewsTP = 85;
extern int NewsSL = 60;
extern int NewsLookBack = 1;
extern int BEpips = 60;
extern int TrailingStop = 40;
extern bool wantSpreadBO = false;
extern int VarSpread = 8;
extern int BBTF = 1;
extern int BarsForRange = 15;
extern bool wantBBbuys = true;
extern double BBBuyLots = 0.5;
extern int BuyBarPips = 12;
extern int BuyBarTP = 25;
extern int BuyBarSL = 125;
extern bool wantBBsells = true;
extern double BBSellLots = 0.5;
extern int SellBarPips = 12;
extern int SellBarTP = 25;
extern int SellBarSL = 125;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
void CheckForPendingClose1()
{
int totalorders = OrdersTotal();
for(int i=totalorders-1;i>=0;i--)
{
OrderSelect( i, SELECT_BY_POS);
if ( OrderSymbol()==Symbol() && OrderMagicNumber() == MAGIC1)
{
if ( OrderType() == OP_BUYSTOP ) bool result = OrderDelete( OrderTicket() );
if ( OrderType() == OP_SELLSTOP ) result = OrderDelete( OrderTicket() );
}
}
return;
}
void CheckForPendingClose2()
{
int totalorders = OrdersTotal();
for(int i=totalorders-1;i>=0;i--)
{
OrderSelect( i, SELECT_BY_POS);
if ( OrderSymbol()==Symbol() && OrderMagicNumber() == MAGIC2)
{
if ( OrderType() == OP_BUYSTOP ) bool result = OrderDelete( OrderTicket() );
if ( OrderType() == OP_SELLSTOP ) result = OrderDelete( OrderTicket() );
}
}
return;
}
void DoBE(int byPips)
{
for (int i = 0; i < OrdersTotal(); i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol()==Symbol() && (OrderMagicNumber() == MAGIC1) || (OrderMagicNumber() == MAGIC2))
{
if (OrderType() == OP_BUY) if (Bid - OrderOpenPrice() > byPips * Point) if (OrderStopLoss() < OrderOpenPrice()) {
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + Point, OrderTakeProfit(), Red);
}
if (OrderType() == OP_SELL) if (OrderOpenPrice() - Ask > byPips * Point) if (OrderStopLoss() > OrderOpenPrice()) {
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() - Point, OrderTakeProfit(), Red);
}
}
}
}
void DoTrail()
{
for (int i = 0; i < OrdersTotal(); i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol()==Symbol() && (OrderMagicNumber() == MAGIC1) || (OrderMagicNumber() == MAGIC2))
{
if (OrderType() == OP_BUY) {
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
if (OrderType() == OP_SELL)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
void CheckForNewsBreak1()
{
double h=High[Highest(NULL,0,MODE_HIGH,NewsLookBack,0)];
double l=Low[Lowest(NULL,0,MODE_LOW,NewsLookBack,0)];
double sp=Ask-Bid;
double ho=h+sp+NewsPips*Point;
double lo=l-sp-NewsPips*Point;
double hsl=ho-NewsSL*Point;
double lsl=lo+NewsSL*Point;
double htp=ho+NewsTP*Point;
double ltp=lo-NewsTP*Point;
OrderSend(Symbol(),OP_BUYSTOP,NewsLots,ho,3,hsl,htp,"",MAGIC1,0,Green);
OrderSend(Symbol(),OP_SELLSTOP,NewsLots,lo,3,lsl,ltp,"",MAGIC1,0,Red);
}
void CheckForNewsBreak2()
{
double h=High[Highest(NULL,0,MODE_HIGH,NewsLookBack,0)];
double l=Low[Lowest(NULL,0,MODE_LOW,NewsLookBack,0)];
double sp=Ask-Bid;
double ho=h+sp+NewsPips*Point;
double lo=l-sp-NewsPips*Point;
double hsl=ho-NewsSL*Point;
double lsl=lo+NewsSL*Point;
double htp=ho+NewsTP*Point;
double ltp=lo-NewsTP*Point;
double NewsTime1 = (NewsHour1*3600)+(NewsMinutes1*60);
double NewsTime2 = (NewsHour2*3600)+(NewsMinutes2*60);
double openbar1 = iBarShift(NULL, 0, NewsTime1);
double openbar2 = iBarShift(NULL, 0, NewsTime2);
if(sp > VarSpread && Bid>=openbar1+NewsPips*Point || sp > 8 && Ask<=openbar1-NewsPips*Point)
{
OrderSend(Symbol(),OP_BUYSTOP,NewsLots,ho,3,hsl,htp,"",MAGIC2,0,PaleGreen);
OrderSend(Symbol(),OP_SELLSTOP,NewsLots,lo,3,lsl,ltp,"",MAGIC2,0,Pink);
}
if(sp > VarSpread && Bid>=openbar2+NewsPips*Point || sp > 8 && Ask<=openbar2-NewsPips*Point)
{
OrderSend(Symbol(),OP_BUYSTOP,NewsLots,ho,3,hsl,htp,"",MAGIC2,0,PaleGreen);
OrderSend(Symbol(),OP_SELLSTOP,NewsLots,lo,3,lsl,ltp,"",MAGIC2,0,Pink);
}
}Показано первые 50% кода (символов: 8835)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.