Ваши вопросы по языку MQL4

ZNV

Активный участник
Подскажите пожалуйста, как реализовать... Советник должен совершить действие, после получения ТейкПрофита.
Историю фильтровать не очень вариант, потому что будет видеть предыдущие профиты...
Как грамотно написать - если профит получен менее минуты назад, сделай то то?
киньте кусок кода...
Спасибо.
 

AlexeNP

Гуру форума
Подскажите пожалуйста, как реализовать... Советник должен совершить действие, после получения ТейкПрофита.
Историю фильтровать не очень вариант, потому что будет видеть предыдущие профиты...
Как грамотно написать - если профит получен менее минуты назад, сделай то то?
киньте кусок кода...
Спасибо.
используй OnTrade
 

Вложения

  • ZNV.mq4
    3,5 КБ · Просмотры: 27

AlexeNP

Гуру форума
Спасибо. Вот нашел что в mql4 эта функция не работает... Вы пользуетесь и все работает? Или это просто старый форум...
ну, если не работает, то
1) тупо просто проверяй время закрытия ордера внутри OnTick
2) начинай проверять если изменилось количество OrdersHistoryTotals
второй вариант умнее
 

Абдулхаким

Почетный гражданин
Как обойти "пасхалки" в МТ4 ?
Если на основном графике объектов RECTANGLE_LABEL будет больше 62, то цвет баров становится цветом рамки графика, но при условии, что цена bid в пределах видимости, если же bid за пределами видимой части графика, то цвет становится нормальным.
при чём количество таких объектов в подвале роли не играет.
:), но сильно мешает.
Попробовал через canvas, не понравилось (тормозит, ну или я не умею им пользоваться).
Есть варианты ?
 

Абдулхаким

Почетный гражданин
возможно ли после удаления обычных объектов, освободить память ими занимаемую ?
 

star603

Новичок форума
Подскажите пожалуйста как воплотить желаемое:
struct moving
{
string symbol; // имя символа
int timeframe; // таймфрейм;
int ma_period; // период
int ma_shift; // сдвиг средней
int ma_method; // метод усреднения
int applied_price; // тип цены
int shift; // сдвиг
};
moving MA;

void OnTick()
{
////////////////////////////////////////////////////////////////////////////
moving _MA= {NULL,PERIOD_CURRENT,18,0,MODE_EMA,PRICE_CLOSE,1};
Comment(moving _MA);//если добавить эту строчку выдает ошибку.
////////////////////////////////////////////////////////////////////////////
}

В советники несколько скользящих средних будет. Как воплотить используя одну структуру получать значения разных скользящих средних. Или несколько структур нужно будет делать разными переменными пользоваться.
Прошу подсказки как быть в такой ситуации.
 

Ugar

Гуру форума
Подскажите пожалуйста как воплотить желаемое:
struct moving
{
string symbol; // имя символа
int timeframe; // таймфрейм;
int ma_period; // период
int ma_shift; // сдвиг средней
int ma_method; // метод усреднения
int applied_price; // тип цены
int shift; // сдвиг
};
moving MA;

void OnTick()
{
////////////////////////////////////////////////////////////////////////////
moving _MA= {NULL,PERIOD_CURRENT,18,0,MODE_EMA,PRICE_CLOSE,1};
Comment(moving _MA);//если добавить эту строчку выдает ошибку.
////////////////////////////////////////////////////////////////////////////
}

В советники несколько скользящих средних будет. Как воплотить используя одну структуру получать значения разных скользящих средних. Или несколько структур нужно будет делать разными переменными пользоваться.
Прошу подсказки как быть в такой ситуации.
А почему бы не массив структур?
Пример для 5 МА
Код:
struct moving
{
string symbol; // имя символа
int timeframe; // таймфрейм;
int ma_period; // период
int ma_shift; // сдвиг средней
int ma_method; // метод усреднения
int applied_price; // тип цены
int shift; // сдвиг
};
moving MA[5];

//Нужно заполнить массив структур параметрами всех МА

...

double ma[5];//Массив с результатами

string text="";

for(int i=0; i<5; i++)

{

ma=iMA{MA[i].symbol,MA[i].timeframe,MA[i].ma_period,MA[i].ma_shift,MA[i].ma_method,MA[i].applied_price,1};

text=text+ma+"\n";

}

Comment(text);
 
Последнее редактирование:

Ugar

Гуру форума
Код:
struct moving
{
string symbol; // имя символа
int timeframe; // таймфрейм;
int ma_period; // период
int ma_shift; // сдвиг средней
int ma_method; // метод усреднения
int applied_price; // тип цены
int shift; // сдвиг
};
moving MA[5];

//Нужно заполнить массив структур параметрами всех МА

...

double ma[5];//Массив с результатами

string text="";

for(int i=0; i<5; i++)

{

ma[i]=iMA(MA[i].symbol,MA[i].timeframe,MA[i].ma_period,MA[i].ma_shift,MA[i].ma_method,MA[i].applied_price,1);

text=text+ma[i]+"\n";

}

Comment(text);
Поправил код. На плохом мониторе было плохо видно нюансы.
 

star603

Новичок форума
А почему бы не массив структур?
Пример для 5 МА
Код:
struct moving
{
string symbol; // имя символа
int timeframe; // таймфрейм;
int ma_period; // период
int ma_shift; // сдвиг средней
int ma_method; // метод усреднения
int applied_price; // тип цены
int shift; // сдвиг
};
moving MA[5];

//Нужно заполнить массив структур параметрами всех МА

...

double ma[5];//Массив с результатами

string text="";

for(int i=0; i<5; i++)

{

ma=iMA{MA[i].symbol,MA[i].timeframe,MA[i].ma_period,MA[i].ma_shift,MA[i].ma_method,MA[i].applied_price,1};

text=text+ma+"\n";

}

Comment(text);
Спасибо конечно еще загвозка в том, что скользящие средний не порядку. Скажем 18, 125, 75, 14, 87
 

AlexeyVik

Программист mql4 mql5
Спасибо конечно еще загвозка в том, что скользящие средний не порядку. Скажем 18, 125, 75, 14, 87
Ну заведи в структуру ещё один параметр, periodMA в который и вставляй 18, 125, 75, 14, 87 и по этому параметру проверяй какой MA это всё принадлежит…
 

star603

Новичок форума
Ну заведи в структуру ещё один параметр, periodMA в который и вставляй 18, 125, 75, 14, 87 и по этому параметру проверяй какой MA это всё принадлежит…
там же так и стоит - int ma_period;
вся проблема в том что я ещ пока не знаю как толком получить из инициализированной структуры значение скользящей средней.
 
Последнее редактирование:

AlexeyVik

Программист mql4 mql5
там же так и стоит - int ma_period;
вся проблема в том что я ещ пока не знаю как толком получить из инициализированной структуры значение скользящей средней.
Ага, я предыдущие сообщения не читал. И что тебе не понравилось в варианте Андрея? Хотя я-бы вместо дополнительного массива ма[5] поставил-бы значение МА в структуру. Тогда можно было-бы в цикле вставлять параметры, записывать полученное значение МА в структуру, а потом читая в цикле проверить параметр ma_period и если это который нужен, прочесть значение МА.
Ну как-то так. Только писать всё это у меня нет ни желания, ни времени.
 
  • Like
Реакции: Ugar

Ugar

Гуру форума
Ага, я предыдущие сообщения не читал. И что тебе не понравилось в варианте Андрея? Хотя я-бы вместо дополнительного массива ма[5] поставил-бы значение МА в структуру. Тогда можно было-бы в цикле вставлять параметры, записывать полученное значение МА в структуру, а потом читая в цикле проверить параметр ma_period и если это который нужен, прочесть значение МА.
Ну как-то так. Только писать всё это у меня нет ни желания, ни времени.
Да, результаты МА можно было и в ту же структуру засунуть. Да и функцию вызова всех МА то же.
А вообще, как по мне, структура там вообще не нужна. Да и массивы то же могут запутать новичка. Их стоит применять когда количество МА может меняться. Например задаётся количество МА у которых периоды с шагом.
А так, надо 5 МА с задаваемыми параметрами, написал 5 строчек с iMA() без структур и массивов.
 

AlexeyVik

Программист mql4 mql5
Да, результаты МА можно было и в ту же структуру засунуть. Да и функцию вызова всех МА то же.
А вообще, как по мне, структура там вообще не нужна. Да и массивы то же могут запутать новичка. Их стоит применять когда количество МА может меняться. Например задаётся количество МА у которых периоды с шагом.
А так, надо 5 МА с задаваемыми параметрами, написал 5 строчек с iMA() без структур и массивов.
А если он хочет штук 300 написать?
А так, мне кажется это вопрос был для освоения работы со структурами. Ну показалось человеку, что можно как-то позаковырестей написать, а влёт не получилось. Ну пусть мальчик позабавится, пошалит… Ведь чтобы заполнить структуру разными, хаотично разбросанными параметрами, надо всё это написать…
 

star603

Новичок форума
А если он хочет штук 300 написать?
А так, мне кажется это вопрос был для освоения работы со структурами. Ну показалось человеку, что можно как-то позаковырестей написать, а влёт не получилось. Ну пусть мальчик позабавится, пошалит… Ведь чтобы заполнить структуру разными, хаотично разбросанными параметрами, надо всё это написать…
Да ты прав. Я осваю все. Я читал структуры облегчают доступ к данным и повышают скорость кода. А для осваивания нужны помощники и буду выкладывать сюда, а вы направьте по возможности проверяйте (если не сложно).
 

star603

Новичок форума
А если он хочет штук 300 написать?
А так, мне кажется это вопрос был для освоения работы со структурами. Ну показалось человеку, что можно как-то позаковырестей написать, а влёт не получилось. Ну пусть мальчик позабавится, пошалит… Ведь чтобы заполнить структуру разными, хаотично разбросанными параметрами, надо всё это написать…
Покапался перелапатил получилось вот что:



struct moving

{

string symbol; // имя символа

int timeframe; // таймфрейм;

int ma_period; // период

int ma_shift; // сдвиг средней

int ma_method; // метод усреднения

int applied_price; // тип цены

int shift; // сдвиг

};

//************************************************** ***************************

int sdvig = 0;

int periodind = 18;

//************************************************** ***************************

void OnTick()

{

////////////////////////////////////////////////////////////////////////////

moving MA;

MA.symbol=Symbol();

MA.timeframe=PERIOD_CURRENT;

MA.ma_shift=sdvig;

MA.ma_period=periodind;

MA.ma_method=MODE_EMA;

MA.applied_price=PRICE_CLOSE;

MA.shift=1;

ShowInfo(MA);

////////////////////////////////////////////////////////////////////////////

}

//************************************************** ***************************

void ShowInfo (moving &ima)

{

double mr = iMA(ima.symbol,ima.timeframe,ima.ma_period,ima.ma_ shift,MODE_EMA,PRICE_CLOSE,ima.shift);

Comment(mr);

};
не получилось меньше кода сделать. как у вас так получается. с оранжевым полем и цифрами.
 

AlexeyVik

Программист mql4 mql5
Покапался перелапатил получилось вот что:

не получилось меньше кода сделать. как у вас так получается. с оранжевым полем и цифрами.
1. Для вставки кода используй кнопку
00.png
2. Что ты там лопатил? Структура без изменений и массива структур тоже нет.
 

ZNV

Активный участник
Где находиться и как изменить стандартный индикатор Фибоначи?
Хочу добавить уровни и сделать разные цвета для разных уровней...
Спасибо.
 

AlexeyVik

Программист mql4 mql5
Где находиться и как изменить стандартный индикатор Фибоначи?
Хочу добавить уровни и сделать разные цвета для разных уровней...
Спасибо.
Ну… это вообще не индикатор. Это графическое построение…
В МТ4 уровни фибоначи не могут быть разным цветом.
 
  • Like
Реакции: ZNV
Верх