Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1120

 

Есть советник, хочу чтобы в нем була возможность выбора в какие дни торговать, а в какие нет.

Пн - false

Вт - true

Cp- ...

Прошу подскажите как это реализовать?

 
RichLux:

Есть советник, хочу чтобы в нем була возможность выбора в какие дни торговать, а в какие нет.

Пн - false

Вт - true

Cp- ...

Прошу подскажите как это реализовать?

DayOfWeek

Возвращает порядковый номер дня недели последнего известного времени сервера.

int  DayOfWeek();

Возвращаемое значение

Порядковый номер дня недели (воскресенье-0,1,2,3,4,5,6).

Примечание

При тестировании последнее известное время сервера моделируется.

Пример:

  // не работает в выходные дни.
  if(DayOfWeek()==0 || DayOfWeek()==6) return(0);

 

DayOfWeek

Возвращает порядковый номер дня недели последнего известного времени сервера. 

Спасибо, стало понятнее.

Не могу сообразить как теперь реализовать возможность выбора торговых дней во внешние параметры. Если подробнее то я хочу, чтобы один и тот же советник на одной торговой паре в понедельник торговал, а на другой не торговал.

Как прописать это в "extern", а затем реализовать в условии (if...else)?

 
RichLux:

DayOfWeek

Возвращает порядковый номер дня недели последнего известного времени сервера. 

Спасибо, стало понятнее.

Не могу сообразить как теперь реализовать возможность выбора торговых дней во внешние параметры. Если подробнее то я хочу, чтобы один и тот же советник на одной торговой паре в понедельник торговал, а на другой не торговал.

Как прописать это в "extern", а затем реализовать в условии (if...else)?

вот простой пример разрешает торговлю только в понедельник. Данный код работает в МТ4 и МТ5

//+------------------------------------------------------------------+
//|                                                       test08.mq4 |
//|                                                   Sergey Gritsay |
//|                         https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link      "https://www.mql5.com/ru/users/sergey1294"
#property version   "1.00"
#property strict

input ENUM_DAY_OF_WEEK dayofweek=MONDAY;

MqlDateTime time;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   TimeToStruct(TimeCurrent(),time);
   if(time.day_of_week!=dayofweek)return; // выйдем из OnTick() если текущий день не равен установленному дню
  
   // тут остальной код советника.
  }
//+------------------------------------------------------------------+


 ...

 
RichLux:

DayOfWeek

Возвращает порядковый номер дня недели последнего известного времени сервера. 

Спасибо, стало понятнее.

Не могу сообразить как теперь реализовать возможность выбора торговых дней во внешние параметры. Если подробнее то я хочу, чтобы один и тот же советник на одной торговой паре в понедельник торговал, а на другой не торговал.

Как прописать это в "extern", а затем реализовать в условии (if...else)?

Используй перечисление ENUM_DAY_OF_WEEK

В самом конце страницы.

Информация об инструменте - Состояние окружения - Стандартные константы, перечисления и структуры - Справочник MQL4
Информация об инструменте - Состояние окружения - Стандартные константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
Информация об инструменте - Состояние окружения - Стандартные константы, перечисления и структуры - Справочник MQL4
 

void OnTick()
  {
//---
   TimeToStruct(TimeCurrent(),time);
   if(time.day_of_week!=dayofweek)return; // выйдем из OnTick() если текущий день не равен установленному дню
  
   // тут остальной код советника.
  }
//+------------------------------------------------------------------+


 ...

Спасибо! 

Правда, теперь нужно еще позаниматься с таким моментом, что на каждой паре разное кол-во "рабочих" дней.

Наверное, нужно ввести 5 переменных:  dayofweek1, dayofweek2,...?

Но опят таки, а что указывать, в оставшихся 2х переменных, если торговых дней 3!? 

 
Добрый день! Подскажите решение вопроса. Есть код с входом по М15, но учитывается сигнал с Н1. Пока висит сигнал на Н1, на М15  индикатор даёт несколько сигналов. Вопрос в ограничении до одного (то есть первого сигнала).
Файлы:
nsm.txt  1 kb
 
RichLux:


 ...

Спасибо! 

Правда, теперь нужно еще позаниматься с таким моментом, что на каждой паре разное кол-во "рабочих" дней.

Наверное, нужно ввести 5 переменных:  dayofweek1, dayofweek2,...?

Но опят таки, а что указывать, в оставшихся 2х переменных, если торговых дней 3!? 

Можно так попробовать:

#property strict

//-
enum YesNo {
_no       = 0, // NoTrade
_yes      = 1  // Trade
};
//-
sinput YesNo day1 = _yes; // Пн
sinput YesNo day2 = _yes; // Вт
sinput YesNo day3 = _yes; // Ср
sinput YesNo day4 = _no;  // Чт
sinput YesNo day5 = _yes; // Пт


MqlDateTime time;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
//--

 // здесь какой-то код, например закрытие

  ... 

 // проверка запрета на торговлю
  if(TradeAllow()) return;
   // далее код
  
}

//+------------------------------------------------------------------+
//| Разрешение на торговлю по дням                                   |
//+------------------------------------------------------------------+
bool TradeAllow() {
TimeToStruct(TimeCurrent(),time);
  switch(time.day_of_week) {
   case 1 : return(!day1);
   case 2 : return(!day2);
   case 3 : return(!day3);
   case 4 : return(!day4);
   case 5 : return(!day5);
   defaultreturntrue);
  }
}

Стоит запрет на торговлю по четвергам

Можно сделать немного красивее, всё зависит от задачи:

#property version   "1.00"
#property strict

//-
enum YesNo {
_no       = 0, // No trade
_yes      = 1  // Trade
};
//-
sinput YesNo day1 = _yes; // Пн
sinput YesNo day2 = _yes; // Вт
sinput YesNo day3 = _yes; // Ср
sinput YesNo day4 = _no;  // Чт
sinput YesNo day5 = _yes; // Пт


MqlDateTime time;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
//--
  if(TradeAllow()) {
    ClosePos(); // Только закрытие
  } else {
    ClosePos(); // Закрытие
    OpenPos();  // Открытие
    Function()  // Ещё что-то
  }
  
//-
}
//+------------------------------------------------------------------+
//| Функция закрытия                                                 |
//+------------------------------------------------------------------+
void ClosePos()
{
  // код
}

//+------------------------------------------------------------------+
//| Функция открытия                                                 |
//+------------------------------------------------------------------+
void OpenPos()
{
  // код
}

//+------------------------------------------------------------------+
//| Разрешение на торговлю по дням                                   |
//+------------------------------------------------------------------+
bool TradeAllow() {
TimeToStruct(TimeCurrent(),time);
  switch(time.day_of_week) {
   case 1 : return(!day1);
   case 2 : return(!day2);
   case 3 : return(!day3);
   case 4 : return(!day4);
   case 5 : return(!day5);
   default: return( true);
  }
}
//+------------------------------------------------------------------+
 
Привет всем! Я использую в торговле на МТ4 индикатор дельты от clusterdelta.com. Нужен фрилансер, который мог бы сделать так, чтобы при достижении определённого порога в значениях индикатора, срабатывал  алерт или каким-то иным образом издавался звуковой сигнал. Подскажите, к кому с этим вопросом обратиться?
 
Lexx1:
Привет всем! Я использую в торговле на МТ4 индикатор дельты от clusterdelta.com. Нужен фрилансер, который мог бы сделать так, чтобы при достижении определённого порога в значениях индикатора, срабатывал  алерт или каким-то иным образом издавался звуковой сигнал. Подскажите, к кому с этим вопросом обратиться?
Сверху есть синяя полоска, на ней много букв ещё разных. Ищете там слово "Фриланс" и жмёте на него. Дальше, думаю, понятно что делать.