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

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Есть советник, хочу чтобы в нем була возможность выбора в какие дни торговать, а в какие нет.
Пн - false
Вт - true
Cp- ...
Прошу подскажите как это реализовать?
Есть советник, хочу чтобы в нем була возможность выбора в какие дни торговать, а в какие нет.
Пн - false
Вт - true
Cp- ...
Прошу подскажите как это реализовать?
DayOfWeek
Возвращает порядковый номер дня недели последнего известного времени сервера.
int DayOfWeek();
Возвращаемое значение
Порядковый номер дня недели (воскресенье-0,1,2,3,4,5,6).
Примечание
При тестировании последнее известное время сервера моделируется.
Пример:
// не работает в выходные дни.
if(DayOfWeek()==0 || DayOfWeek()==6) return(0);
DayOfWeek
Возвращает порядковый номер дня недели последнего известного времени сервера.
Спасибо, стало понятнее.
Не могу сообразить как теперь реализовать возможность выбора торговых дней во внешние параметры. Если подробнее то я хочу, чтобы один и тот же советник на одной торговой паре в понедельник торговал, а на другой не торговал.
Как прописать это в "extern", а затем реализовать в условии (if...else)?
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() если текущий день не равен установленному дню
// тут остальной код советника.
}
//+------------------------------------------------------------------+
...
DayOfWeek
Возвращает порядковый номер дня недели последнего известного времени сервера.
Спасибо, стало понятнее.
Не могу сообразить как теперь реализовать возможность выбора торговых дней во внешние параметры. Если подробнее то я хочу, чтобы один и тот же советник на одной торговой паре в понедельник торговал, а на другой не торговал.
Как прописать это в "extern", а затем реализовать в условии (if...else)?
Используй перечисление ENUM_DAY_OF_WEEK
В самом конце страницы.
void OnTick()
{
//---
TimeToStruct(TimeCurrent(),time);
if(time.day_of_week!=dayofweek)return; // выйдем из OnTick() если текущий день не равен установленному дню
// тут остальной код советника.
}
//+------------------------------------------------------------------+
...
Спасибо!
Правда, теперь нужно еще позаниматься с таким моментом, что на каждой паре разное кол-во "рабочих" дней.
Наверное, нужно ввести 5 переменных: dayofweek1, dayofweek2,...?
Но опят таки, а что указывать, в оставшихся 2х переменных, если торговых дней 3!?
...
Спасибо!
Правда, теперь нужно еще позаниматься с таким моментом, что на каждой паре разное кол-во "рабочих" дней.
Наверное, нужно ввести 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);
default: return( true);
}
}
Стоит запрет на торговлю по четвергам
Можно сделать немного красивее, всё зависит от задачи:
#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. Нужен фрилансер, который мог бы сделать так, чтобы при достижении определённого порога в значениях индикатора, срабатывал алерт или каким-то иным образом издавался звуковой сигнал. Подскажите, к кому с этим вопросом обратиться?