kasparsvas16

 
Уровень 9

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2141



РЕКОМЕНДУЮ



создать советник который будет закрывать все ордера перед важными новостями

Добрый день.
В базе не мог найти такой советник.
Возможно ли создать советник, который будет
1.выключать автоматическую торговлю
либо
2.закрывать все ордера
либо
3. переводить стопы и тейки в БУ

перед важными новостями
за определенное время до них?

если надо могу за работу заплатить.
  • 0
  • Просмотров: 2107
  • 9 января 2022, 22:44
  • kasparsvas16
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
Следующая запись в группе  
Сменить индикаторы в советнике.
09 января 2022
11 января 2022

Брокер для ваших роботов, 15 лет на рынке

Комментарии (40)

+
0
перед важными новостями
за определенное время до них?

как определять будем это время?
avatar

  34  AM2 Сообщений: 16198 - Андрей

  • 9 января 2022, 22:55
+
0
Нашел только этот советник, но он только оповещает. Но не как не влияет на торговлю.
Хочу чтобы советник просматривал с таких сайтов как dailyfx, investing

www.mql5.com/en/code/19138
avatar

  9  kasparsvas16 Автор Сообщений: 102

  • 9 января 2022, 23:10
+
0
Да, такое есть, у меня такое в «Матрёшке» реализовано.
Торговый бот «Матрёшка_2.0»
Торговый бот «Матрёшка_2.1»
Делал этот новостной момент на основе статьи Окси: Советник, оповещающий о новостях.
Редактирован: 9 января 2022, 23:00
avatar

  24  ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.

  • 9 января 2022, 22:56
+
0
Был бы благодарен если Вы могли бы дать часть хотя-бы кода, которая отвечает за новости.
avatar

  9  kasparsvas16 Автор Сообщений: 102

  • 9 января 2022, 23:12
+
0
Дык вот тут всё есть.
И крути его, как тебе надо.
Единственное, там просто сообщения вылезают, торговать можно или нельзя.
А тут ты ставишь, что если новостей нет, то торговля в автоматическом режиме идёт, а если нет, то открытия новых ордеров не будет.
Ну или даже закрыть все рыночные.
В общем, всё, что хочешь.
avatar

  24  ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.

  • 9 января 2022, 23:57
+
0
У меня сейчас со временем запары, просто некогда.
Если Андрей не возьмётся, я на следующих выходных время выделю, сделаю.
avatar

  24  ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.

  • 10 января 2022, 00:05
+
0
Советник идеально подходит,
Только вот Эти 3 пункта остались.

Спасибо Вам Добрые Вы Люди.
Думаю многим пригодится.
avatar

  9  kasparsvas16 Автор Сообщений: 102

  • 10 января 2022, 00:08
+
0
Погоди, а какой алгоритм входа в рынок?
Или это ты сам вставишь?
avatar

  24  ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.

  • 10 января 2022, 02:15
+
0
Без алгоритма.
Сделать по Магическому номеру.
Просто торгую сразу несколькими советниками, и каждому надо свой вариант, одного просто отключать (это просто авто трейдинг отключает в платформе, и через определлённое время включает для всех советников), у другого закрыть все сделки после этого отключить авто торговлю, а у другого надо перевести сделки в БУ и так же отключить авто торговлю.
И через время опять включить авто торговлю.

Смысл такой,
Советник с магическим номером 12345 на графике Евро доллар пооткрывал несколько сделок, приближаются новости, на другом графике стоит Ваш советник с таким же номером 12345 и на нем включена функция перевода в БУ,
Выходят красные новости,
Ваш советник переводит все сделки с магическим номером 12345 в без убыток 30 минут до новостей.
И отключает авто торговлю,
после выхода новостей проходят 30 минут и советник включает обратно авто торговлю.
Такая же система с закрытием всех сделок по магическому номеру перед новостями.
avatar

  9  kasparsvas16 Автор Сообщений: 102

  • 10 января 2022, 02:41
+
0
И отключает авто торговлю,
после выхода новостей проходят 30 минут и советник включает обратно авто торговлю.

Не, вот так точно не получится.
Для этого нужно, чтобы алгоритм автоторговли был в этом же советнике.
Не может один советник включать/отключать торговлю другого советника.
avatar

  24  ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.

  • 10 января 2022, 06:46
+
0
может, через глобальные переменные
avatar

  19  vic123 Сообщений: 98

  • 10 января 2022, 07:06
+
0
И что?
Глобальные переменные — они тоже в одном и том же советнике.
Никакого касательства к другой сове.
avatar

  24  ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.

  • 10 января 2022, 08:22
+
0
Нет. Один советник выдает глоб. переменную а другой ее берет и использует. Правда при условии, что оба советника находятся в одном терминале.
avatar

  19  vic123 Сообщений: 98

  • 10 января 2022, 14:52
+
0
Не, это уже чудеса какие-то.
А чудеса только на Новый Год бывают, и то при условии, что весь год был хорошим мальчиком.
avatar

  24  ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.

  • 10 января 2022, 15:06
+
0
Ну хотябы тогда чтобы закрывал все сделки до новостей, либо переводил в безубыток.
avatar

  9  kasparsvas16 Автор Сообщений: 102

  • 10 января 2022, 15:16
+
0
Понял как можно сделать бы если возможно.
Советник закрыл по магическому номеру все ордера, и просто за этот период например часа (пол часа до новостей, и пол часа после), как только мой советник открывает сделку, Ваш советник сразу её закрывает.
avatar

  9  kasparsvas16 Автор Сообщений: 102

  • 10 января 2022, 15:19
+
0
GlobalVariableSet
Устанавливает новое значение глобальной переменной. Если переменная не существует, то система создает новую глобальную переменную.

datetime GlobalVariableSet(
string name, // имя
double value // устанавлимое значение
);
Эта команда записывает значение в глобальную переменную.

GlobalVariableGet
Возвращает значение существующей глобальной переменной клиентского терминала. Существует 2 варианта функции.

1. Непосредственно возвращает значение свойства.

double GlobalVariableGet(
string name // имя
);

2. Возвращает true или false в зависимости от успешности выполнения функции. В случае успеха значение глобальной переменной клиентского терминала помещается в приемную переменную, передаваемую по ссылке вторым параметром.

bool GlobalVariableGet(
string name, // имя
double& double_var // сюда примем значение глобальной переменной
);
Эта команда считывает значение из глобальной переменной.
avatar

  19  vic123 Сообщений: 98

  • 10 января 2022, 16:08
+
0
Ужас какой оба несёте.
Как китайские пионеры, ей-Богу.
Нормальный человек себе экономит время, всё в одном сделает, чтоб между хрен знает чем не метаться.
Кроме того, тут заказ на один советник, а не на написание одного и перекройку другого.
Ладно, на выходных гляну.
Само по себе задание-то плёвое.
avatar

  24  ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.

  • 10 января 2022, 16:39
+
0
Просто торгую несколькими советниками сразу, и у некоторых у меня нет открытого кода.А каждый день сидеть на будильнике что-бы на новостях отключать торговлю уже честно $%^бало. Простите за мат.

Я в создание советников нечерта не понимаю.
Просто нужен советник который перед новостями хотя бы сделки переводил в безубыток, либо закрыл все по магическому номеру.
А в идеале ещё бы отключал на время новостей авто торговлю терменала.
Больше всего интирисуют Красные новости.
в советнике надо только 5 функции настройки
1. Magic nr: 12345
2.Auto trade: «true-false»
3.Put BU: «true-false»
4.BU Pips: растояние от линии БУ
5.Close All: «true-false»
avatar

  9  kasparsvas16 Автор Сообщений: 102

  • 10 января 2022, 16:53
+
+1
Собрал заготовку на функциях Игоря Кима.
В заданное время закроет позиции, удалит ордера и закроет терминал.

//+------------------------------------------------------------------+
//|                                 Закрытие позиций и терминала.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                          http://www.mункцql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mункцql5.com"
#property version   "1.00"
#property strict
#property copyright "Ким Игорь В. aka KimIV"
#property link      "http://www.kimiv.ru"

//---- input parameters
extern int   CloseHour     = 7;      // Время закрытия, часы
extern int   CloseMinute   = 0;      // Время закрытия, минуты
extern bool  UseCurrSymbol = False;  // Использовать только один инструмент
extern bool  UseOneAccount = False;  // Использовать только один счёт
extern int   Operation     = -1;     // Торговая операция:
                                     //   -1 - любая
                                     //    0 - OP_BUY
                                     //    1 - OP_SELL
extern bool  DeleteOrders  = False;  // Удалять ордера
extern bool  CloseTerminal = False;  // Закрывать терминал
extern int   NumberAccount = 11111;  // Номер торгового счёта
extern int   MagicNumber   = -1;     // MagicNumber
extern int   Slippage      = 3;      // Проскальзывание цены
extern int   NumberOfTry   = 3;      // Количество торговых попыток при ошибках
extern bool  UseSound      = True;          // Использовать звуковой сигнал
extern string SoundSuccess = "expert.wav";  // Звук успеха
extern string SoundError   = "timeout.wav"; // Звук ошибки
//------- Глобальные переменные советника -------------------------------------+
bool   gbDisabled   = False;           // Флаг блокировки советника
bool   gbNoInit     = False;           // Флаг неудачной инициализации
color  clCloseBuy   = Blue;            // Цвет значка закрытия покупки
color  clCloseSell  = Red;             // Цвет значка закрытия продажи
color  clDelete     = Yellow;          // Цвет значка удаления ордеров

//------- Подключение внешних модулей -----------------------------------------+
#include <stdlib.mqh>                  // Стандартная библиотека
#import "user32.dll"
   int GetParent(int hWnd);
   int PostMessageA(int hWnd, int Msg, int wParam, int lParam);
#import
#define WM_CLOSE 0x0010

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
    if (!IsTesting()) Comment("");
    ObjectDelete(WindowExpertName());
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  double pBid, pAsk;
  bool rez;
  if (UseOneAccount && AccountNumber()!=NumberAccount) {
    Comment("Работа на счёте: "+AccountNumber()+" ЗАПРЕЩЕНА!");
    return;
  } else Comment("");

  if (Hour()==CloseHour && Minute()>=CloseMinute) {
    for (int i=OrdersTotal()-1; i>=0; i--) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
        if (!UseCurrSymbol || OrderSymbol()==Symbol()) {
          if (MagicNumber<0 || OrderMagicNumber()==MagicNumber){
          if (OrderType()==OP_BUY) {
            pBid=MarketInfo(OrderSymbol(), MODE_BID);
            rez=OrderClose(OrderTicket(), OrderLots(), pBid, Slippage, clCloseBuy);
          }
          if (OrderType()==OP_SELL) {
            pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
            rez=OrderClose(OrderTicket(), OrderLots(), pAsk, Slippage, clCloseSell);
           }
           if (DeleteOrders) DeleteOrders(OrderSymbol(), Operation, MagicNumber);
           if (CloseTerminal) CloseTerminal(); 
          }
        }
      }
    }
  }   
  }
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 18.04.2013                                                     |
//|  Описание : Закрывает торговый терминал.                                   |
//+----------------------------------------------------------------------------+
void CloseTerminal() {
  Print("Сработала функция CloseTerminal()");
  int hwnd=WindowHandle(Symbol(), Period());
  int hwnd_parent=0;

  while (hwnd==0) {
    hwnd=WindowHandle(Symbol(), Period());
    if (IsStopped()) break;
    Sleep(5);
  }
  while(!IsStopped()) {
    hwnd=GetParent(hwnd);
    if (hwnd==0) break;
    hwnd_parent=hwnd;
  }
  if (hwnd_parent!=0) PostMessageA(hwnd_parent, WM_CLOSE, 0, 0);
}

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 08.03.2013                                                     |
//|  Описание : Удаление одного предварительно выбранного ордера.              |
//+----------------------------------------------------------------------------+
avatar

  16  ssg Сообщений: 817

  • 10 января 2022, 17:04
+
+1
Продолжение:

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 08.03.2013                                                     |
//|  Описание : Удаление одного предварительно выбранного ордера.              |
//+----------------------------------------------------------------------------+
void DeleteOrderBySelect() {
  bool fd;
  int  err, it;

  for (it=1; it<=NumberOfTry; it++) {
    if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
    while (!IsTradeAllowed()) Sleep(5000);
    fd=OrderDelete(OrderTicket(), clDelete);
    if (fd) {
      if (UseSound) PlaySound(SoundSuccess); break;
    } else {
      err=GetLastError();
      if (UseSound) PlaySound(SoundError);
      Message("Error("+err+") delete order "+GetNameOP(OrderType())
        +": "+ErrorDescription(err)+", try "+it);
      Sleep(1000*5);
    }
  }
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 08.03.2013                                                     |
//|  Описание : Удаление ордеров                                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любой ордер)                    |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
 
  int  i, k=OrdersTotal(), ot;

  if (sy=="0") sy=Symbol();
  for (i=k-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) DeleteOrderBySelect();
        }
      }
    }
  }
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает наименование торговой операции                      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    op - идентификатор торговой операции                                    |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
  switch (op) {
    case OP_BUY      : return("Buy");
    case OP_SELL     : return("Sell");
    case OP_BUYLIMIT : return("BuyLimit");
    case OP_SELLLIMIT: return("SellLimit");
    case OP_BUYSTOP  : return("BuyStop");
    case OP_SELLSTOP : return("SellStop");
    default          : return("Unknown Operation");
  }
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 08.03.2013                                                     |
//|  Описание : Вывод текстового сообщения.                                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    ms - текст сообщения                                                    |
//|    nv - флаги направлений вывода сообщения:   (0-выкл, 1-вкл)              |
//|           Alert, Comment, Print, SendMail, SendNotification                |
//|    am - флаг всех повторяющихся сообщений                                  |
//+----------------------------------------------------------------------------+
void Message(string ms, string nv="01100", bool am=False) {
  static string prevMessage="";
  string as[];
  int    i, k;

  if (StrToInteger(StringSubstr(nv, 1, 1))==1) Comment(ms);
  if ((StringLen(ms)>0) && (am || prevMessage!=ms)) {
    if (StrToInteger(StringSubstr(nv, 0, 1))==1) {
      k=StrSplit(ms, as, "\n");
      for (i=0; i<k; i++) Alert(as[i]);
    }
    if (StrToInteger(StringSubstr(nv, 2, 1))==1) {
      k=StrSplit(ms, as, "\n");
      for (i=0; i<k; i++) Print(as[i]);
    }
    if (StrToInteger(StringSubstr(nv, 3, 1))==1) SendMail(WindowExpertName(), ms);
    if (StrToInteger(StringSubstr(nv, 4, 1))==1) SendNotification(ms);
    prevMessage=ms;
  }
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 20.01.2012                                                     |
//|  Описание : Разбиение строки на массив элементов                           |
//+----------------------------------------------------------------------------+
//|  Возврат:                                                                  |
//|    Количество элементов в массиве                                          |
//|  Параметры:                                                                |
//|    st - строка с разделителями                                             |
//|    as - строковый массив                                                   |
//|    de - разделитель                                                        |
//+----------------------------------------------------------------------------+
int StrSplit(string st, string& as[], string de=",") { 
  int    i=0, np;
  string stp;

  ArrayResize(as, 0);
  while (StringLen(st)>0) {
    np=StringFind(st, de);
    if (np<0) {
      stp=st;
      st="";
    } else {
      if (np==0) stp=""; else stp=StringSubstr(st, 0, np);
      st=StringSubstr(st, np+1);
    }
    i++;
    ArrayResize(as, i);
    as[i-1]=stp;
  }
  return(ArraySize(as));
}
//+----------------------------------------------------------------------------+

avatar

  16  ssg Сообщений: 817

  • 10 января 2022, 17:05
+
0
попробую сегодня все в одно собрать. новость по календарю определять будем или в настройках можно время ввести? например задали 3 временных промежутка когда нельзя торговать с утра. так проще намного. с календарем чуть подольше придется возиться
avatar

  34  AM2 Сообщений: 16198 - Андрей

  • 10 января 2022, 18:05
+
0
Спасибо, надо именно только во время новостей, Шаман крутой индикатор с советником посоветовал coding.opentraders.ru/32854.html
Только вот он только оповещает, а надо как просил чтобы отключал торговлю и так далее.
avatar

  9  kasparsvas16 Автор Сообщений: 102

  • 10 января 2022, 18:37
+
0
по отдельности все функции работают, но индикатор не выдает сигнал чек ньюс:


//+------------------------------------------------------------------+
//|                                                         News.mq4 |
//|                                              Copyright 2022, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict

#include <WinUser32.mqh>

#define PAUSE      10
#define VK_CONTROL 0x11 //CTRL key
#define KEY_CODE   'E'

extern int   MinDo          = 30;         // Срабатывание минут до новости
extern int   MinPosle       = 30;         // Срабатывание минут после новости
extern int   offset         = 3;          // Часовой пояс сервера
extern bool  Vhigh          = true;       // Показывать важные новости
extern bool  Vmedium        = false;      // Показывать средние новости
extern bool  Vlow           = false;      // Показывать слабые новости
extern bool  RisovatLini    = true;       // Рисовать линии на графике

extern bool  CloseOrders    = true;       // Закрывать все ордера
extern bool  BUMoving       = true;       // Перевести в БУ все ордера

extern int BULevel          = 20;         // Уровень БУ
extern int BUPoint          = 3;          // Пункты БУ

extern int Slip             = 111;        // Проскальзывание
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   
  }
//+------------------------------------------------------------------+
//| Закрытие позиции по типу ордера                                  |
//+------------------------------------------------------------------+
void CloseAllMulti(int ot=-1)
  {
   int dg=0;
   bool cl=1;
   double ask=0,bid=0;

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         ask=SymbolInfoDouble(OrderSymbol(),SYMBOL_ASK);
         bid=SymbolInfoDouble(OrderSymbol(),SYMBOL_BID);
         dg=(int)SymbolInfoInteger(OrderSymbol(),SYMBOL_DIGITS);

         if(OrderType()==0 && (ot==0 || ot==-1))
           {
            RefreshRates();
            cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(bid,dg),Slip,White);
           }
         if(OrderType()==1 && (ot==1 || ot==-1))
           {
            RefreshRates();
            cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(ask,dg),Slip,White);
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|  Безубыток ордеров                                               |
//+------------------------------------------------------------------+
void BUMulti()
  {
   int dg=0;
   bool m=1;
   double ask=0,bid=0,pp=0;

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         ask=SymbolInfoDouble(OrderSymbol(),SYMBOL_ASK);
         bid=SymbolInfoDouble(OrderSymbol(),SYMBOL_BID);
         dg=(int)SymbolInfoInteger(OrderSymbol(),SYMBOL_DIGITS);

         if(OrderType()==OP_BUY)
           {
            if(OrderOpenPrice()<=(bid-(BULevel+BUPoint)*pp) && OrderOpenPrice()>OrderStopLoss())
              {
               m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+BUPoint*pp,OrderTakeProfit(),0,Yellow);
               return;
              }
           }

         if(OrderType()==OP_SELL)
           {
            if(OrderOpenPrice()>=(ask+(BULevel+BUPoint)*pp) && (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss()==0))
              {
               m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BUPoint*pp,OrderTakeProfit(),0,Yellow);
               return;
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Key()
  {
   keybd_event(VK_CONTROL,0,0,0);
   Sleep(PAUSE);
   keybd_event(KEY_CODE,0,0,0);
   Sleep(PAUSE);
   keybd_event(KEY_CODE,0,2,0);
   Sleep(PAUSE);
   keybd_event(VK_CONTROL,0,2,0);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double CheckNews = iCustom(NULL,0,"UrdalaNews",MinDo,MinPosle,offset,Vhigh,Vmedium,Vlow,"",RisovatLini,0,0);

   if(CheckNews==0)
     {
      return;
     }

   if(CheckNews==1)
     {
      if(CloseOrders)
        {
         Key();
         CloseAllMulti();
        }

      if(BUMoving)
        {
         Key();
         BUMulti();
        }
     }
     
   Comment(CheckNews);
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 16198 - Андрей

  • 10 января 2022, 21:15
+
0
проверял отлаживал на новостях, нет сигнала

avatar

  34  AM2 Сообщений: 16198 - Андрей

  • 10 января 2022, 21:19
+
0
Может быть индикатор не работает, вот нашёл рабочий, надеюсь поможет www.opentraders.ru/downloads/3219/
avatar

  9  kasparsvas16 Автор Сообщений: 102

  • 10 января 2022, 21:36
+
0
и ещё надо чтобы подхватывал ордера по определённому магическому числу а не все ордера.
avatar

  9  kasparsvas16 Автор Сообщений: 102

  • 10 января 2022, 21:38
+
0
или надо искать другой индикатор, может у кого есть?
avatar

  9  kasparsvas16 Автор Сообщений: 102

  • 10 января 2022, 21:40
+
0
индикатор скачивает новости рисует линии, но сигнала от него нет
avatar

  34  AM2 Сообщений: 16198 - Андрей

  • 10 января 2022, 21:43
+
0
Да от него и не должно быть никакого сигнала.
Он только показывает время новостей.
Всё.
А что от него ещё надо?
avatar

  24  ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.

  • 10 января 2022, 22:34
+
0
А за что эта часть отвечает, это на сколько понимаю сигнал о будущих новостях, хотя я в этом не разбераюсь? Часть кода из советника который нашёл.

//---------------Обработка событий------------------------------------
   int i;
   Torg[0]=0;
   for(i=0;i<NomNews;i++)
     {
      int power = 0;
      if(Vhigh &&   StringFind(NewsArr[2][i],"High")>=0     )power = 1;
      if(Vmedium && StringFind(NewsArr[2][i],"Moderate")>= 0)power = 2;
      if(Vlow &&    StringFind(NewsArr[2][i],"Low")>= 0     )power = 3;
      if(power == 0)continue;
      if(TimeCurrent()+MinDo*60>TimeNewsFunck(i) && TimeCurrent()-MinPosle*60<TimeNewsFunck(i) && StringFind(str1,NewsArr[1][i])>=0)
        {
         Torg[0]=1;
         break;
        }
      else Torg[0]=0;

     }
   if(Torg[0]==1 && i!=Now && Signal) {Alert("Через ",(int)(TimeNewsFunck(i)-TimeCurrent())/60," минут выйдет новость ",NewsArr[1][i],"_",NewsArr[3][i]);Now=i;}

//-------------------------------------------------------------------------------
   return(0);
  }
///////////////////////////////////////////////////////////////////////
datetime TimeNewsFunck(int nomf)
   {
    string s = NewsArr[0][nomf];
    string time = StringConcatenate(StringSubstr(s,0,4),".",StringSubstr(s,5,2),".",StringSubstr(s,8,2)," ",StringSubstr(s,11,2),":",StringSubstr(s,14,4));
    return((datetime)(StringToTime(time) + offset*3600));
   }

//////////////////////////////////////////////////////////////////////////////////
avatar

  9  kasparsvas16 Автор Сообщений: 102

  • 10 января 2022, 23:54
+
+1
Да от него и не должно быть никакого сигнала.
Он только показывает время новостей.Всё.
А что от него ещё надо?


там есть индикаторный буфер. в зависимости от его значения и торгует советник
avatar

  34  AM2 Сообщений: 16198 - Андрей

  • 11 января 2022, 17:25
+
0
перевел в бу, закрыл ордер, осталось отладить отключение автоторговли:

avatar

  34  AM2 Сообщений: 16198 - Андрей

  • 11 января 2022, 17:52
+
+1
avatar

  34  AM2 Сообщений: 16198 - Андрей

  • 11 января 2022, 19:11
+
0
Спасибо огромное, не знаю даже как отблагодарить.
осталось только последние.
Добавить работу по магическим номерам.
Чтобы советник работал только с этим магичиским номером, и не трогал например мои ручные сделки, или другова советника.
Я думаю это не составит Вам труда, добрые люди.
Не думал что такие добрые люди есть ещё в этом мире.
Спасибо
avatar

  9  kasparsvas16 Автор Сообщений: 102

  • 11 января 2022, 19:48
+
0
*good* 
avatar

  24  ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.

  • 12 января 2022, 00:34
+
0
Не думал что такие добрые люди есть ещё в этом мире


а недобрые сколько просили? :D 
avatar

  34  AM2 Сообщений: 16198 - Андрей

  • 11 января 2022, 21:50
+
+1
Я только к Вам на форуме, так сказать проверенным людям доверяю
avatar

  9  kasparsvas16 Автор Сообщений: 102

  • 11 января 2022, 22:00
+
0
добавил магик: www.opentraders.ru/downloads/3220/
avatar

  34  AM2 Сообщений: 16198 - Андрей

  • 12 января 2022, 17:39
+
0
Здравствуйте, как индикатор работает?
avatar

  3  Denis2134 Сообщений: 82

  • 31 марта 2023, 14:34

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий