NewsBreakv5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «newsbreakv5.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
NewsBreakv5 — советник для MetaTrader 4, автоматизирующий размещение отложенных ордеров (BUYSTOP/SELLSTOP) в окрестности максимумов и минимумов текущего минутного бара. Продукт реализует две независимые стратегии с раздельными магическими числами, каждая из которых активируется в задаваемом пользователем временном окне.
Советник поддерживает управление открытыми позициями: перевод стоп-лосса в безубыточную зону и применение трейлинг-стопа. Также реализована логика удаления отложенных ордеров и механизм OCO (один отменяет другой) для контроля пар pending-позиций.
Все временные параметры, объёмы и ценовые уровни настраиваются через параметры пользователя. Внутренние расчёты основаны на данных ценового графика M1.
Настройки программы
| Настройка | Описание |
|---|---|
| wantNews1 | wantNews1 — Переключатель активности первой стратегии размещения отложенных ордеров. |
| NewsHour1 | NewsHour1 — Час начала первого временного окна для размещения отложенных ордеров. |
| NewsMinutes1 | NewsMinutes1 — Минута начала первого временного окна для размещения отложенных ордеров. |
| wantNews2 | wantNews2 — Переключатель активности второй стратегии размещения отложенных ордеров. |
| NewsHour2 | NewsHour2 — Час начала второго временного окна для размещения отложенных ордеров. |
| NewsMinutes2 | NewsMinutes2 — Минута начала второго временного окна для размещения отложенных ордеров. |
| wantOCO | wantOCO — Переключатель механизма OCO (один отменяет другой) для управления парами отложенных ордеров. |
| PendingTime | PendingTime — Время в минутах после окончания окна, в течение которого удаляются отложенные ордера первой стратегии. |
| NewsLots | NewsLots — Объём лота для размещаемых отложенных ордеров. |
| NewsPips | NewsPips — Отступ в пипсах от экстремумов бара для установки цен ордеров. |
| NewsTP | NewsTP — Тейк-профит в пипсах для отложенных ордеров. |
| NewsSL | NewsSL — Стоп-лосс в пипсах для отложенных ордеров. |
| BEpips | BEpips — Шаг в пипсах для автоматического перевода стоп-лосса в безубыточную зону открытых позиций. |
| TrailingStop | TrailingStop — Шаг трейлинг-стопа в пипсах для управления открытыми позициями. |
| wantNewsBO | wantNewsBO — Переключатель активности второй торговой стратегии. |
| wantSpreadBO | wantSpreadBO — Переключатель фильтра спреда для второй стратегии. |
Поиск по коду файла
#define MAGIC1 20060819
#define MAGIC2 12345678
#include <stdlib.mqh>
#define NL "\n"
extern bool wantNews1 = true;
extern int NewsHour1 = 11;
extern int NewsMinutes1 = 0;
extern bool wantNews2 = true;
extern int NewsHour2 = 12;
extern int NewsMinutes2 = 30;
extern bool wantOCO = true;
extern int PendingTime = 120;
extern double NewsLots = 5;
extern int NewsPips = 15;
extern int NewsTP = 60;
extern int NewsSL = 55;
extern int BEpips = 60;
extern int TrailingStop = 35;
extern bool wantNewsBO = true;
extern bool wantSpreadBO = true;
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() == 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() == 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=iHigh(Symbol(),PERIOD_M1,0);
double l=iLow(Symbol(),PERIOD_M1,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=iHigh(Symbol(),PERIOD_M1Показано первые 50% кода (символов: 5708)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.