Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 852
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Лучше всего воспользоваться новыми возможностями mql4 CopyHigh и математической функцией MathMax
Или iHighest
Доброе утро, подскажите где ошибка.
/////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////Зона консолидации/////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
if(Hour()>=10)
{
for(x9=2; x9<=5; x9++)
{
x10=Hour()-x9;//x10 -номер свечи от которой считаем восемь свечей назад
if(x10>=0)
{
int Minn=iLowest(NULL, PERIOD_H1, MODE_LOW , x10+8, x10);
int Maxx=iHighest(NULL, PERIOD_H1, MODE_HIGH, x10+8, x10);
z11 =iHigh(NULL,PERIOD_H1,Maxx);
z12 =iLow(NULL, PERIOD_H1,Minn);
ZPB =iTime(NULL,PERIOD_H1,x10+8);
ZPB1 =iTime(NULL,PERIOD_H1,x10);
if(z11-z12<=z10)
{
y4=ObjectCreate("Зона консолидации",OBJ_RECTANGLE,0,0,0,0,0);
y4=ObjectSet("Зона консолидации",OBJPROP_WIDTH,2);
y4=ObjectSet("Зона консолидации",OBJPROP_COLOR,Blue);
y4=ObjectSet("Зона консолидации",OBJPROP_BACK,true);
y4=ObjectMove("Зона консолидации",0,ZPB,z11);
y4=ObjectMove("Зона консолидации",1,ZPB1,z12);
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
Лучше всего воспользоваться новыми возможностями mql4 CopyHigh и математической функцией MathMax
Или iHighest
Подскажите пожалуйста, как справиться с ошибкой номер 1 (ERR_NO_RESULT Нет ошибки, но результат неизвестен) ?
На паре EURUSD при условии, что ордер в убытке более чем на 1$ (100 пунктов при лоте 0,01), эксперт пытается модифицировать ордер (поставить TakeProfit ордера на цену его открытия).
Выдает эту ошибку, что делать?
Если CopyHigh, то тогда уж ArrayMaximum, ИМХО...
Здравствуйте, работаю со скользящими средними(MA) в количестве 2000 шт.
Задача, подсчитать количества повторений цены МА на Close[1].
- Каким образом можно реализовать, данную задачу, при минимальных затрат ресурсов.
Здравствуйте, работаю со скользящими средними(MA) в количестве 2000 шт.
Задача, подсчитать количества повторений цены МА на Close[1].
- Каким образом можно реализовать, данную задачу, при минимальных затрат ресурсов.
Здравствуйте, читаю учебник, добрался до GV переменных. Не могу понять принцип их работы. К примеру, в учебнике говорится, что GV переменные могут иметь только тип double. Ну ладно, double так double). Но потом при перечислении функций GlobalVariableSet(), GlobalVariableGet(), GlobalVariableDel() пишут, что одна из них возвращает время, вторая bool и т.д. В голове произошла путаница, не могу вообще понять вообще как они устроены. К тому же начал изучать MQL4 недавно, в голове много новой информации. Если возможно, объясните на примере задачи, которая есть в учебнике(или на каком нибудь своем):
Задача 24. В терминале одновременно работают несколько экспертов. Сумма депозита составляет $10 000. Общая стоимость всех открытых ордеров не должна превышать 30% от суммы депозита. Каждому эксперту должно быть выделено равное количество денежных средств. Составить программу эксперта, содержащую расчёт суммы, выделенной для торговли.
int Experts; // Колич. экспертов
double Depo=10000.0, // Заданный депозит
Persent=30, // Заданный процент
Money; // Искомые средства
string Quantity="GV_Quantity"; // Имя GV-переменной
//--------------------------------------------------------------------
int init() // Спец. функция init
{
Experts=GlobalVariableGet(Quantity); // Получим тек. знач.
Experts=Experts+1; // Колич. экспертов
GlobalVariableSet(Quantity, Experts); // Новое значение
Money=Depo*Persent/100/Experts; // Средства для эксп.
Alert("Для эксперта в окне ", Symbol()," выделено ",Money);
return; // Выход из init()
}
//--------------------------------------------------------------------
int start() // Спец. функция start
{
int New_Experts= GlobalVariableGet(Quantity);// Новое колич. эксп.
if (Experts!=New_Experts) // Если изменилось
{
Experts=New_Experts; // Теперь текущ. такое
Money=Depo*Persent/100/Experts; // Новое знач. средств
Alert("Новое значение для эксперта ",Symbol(),": ",Money);
}
/*
...
Здесь долен быть указан основной код эксперта,
в котором используется значение переменной Money
...
*/
return; // Выход из start()
}
//--------------------------------------------------------------------
int deinit() // Спец. ф-ия deinit
{
if (Experts ==1) // Если эксперт один..
GlobalVariableDel(Quantity); //..удаляем GV-перемен
else // А иначе..
GlobalVariableSet(Quantity, Experts-1); //..уменьшаем на 1
Alert("Эксперт выгружен из окна ",Symbol()); // Сообщ. о выгрузке
return; // Выход из deinit()
}
Если не использовать период 1 по ценам закрытия, то количество повторений будет ноль. Но если считать попадание в какой-то диапазон, то задача может быть решаемой и более интересной. Как вариант находим максимальное и минимальное значение. Разность делим на диапазон. Потом по каждому мувингу определяем диапазон в который попадает (тут речь пойдет о массиве, который соответствует нашим диапазонам или интервалам). Индекс массива набравший максимальное количество попаданий является победителем. Может не совсем понятно выразился. Лучше задачу решать в отдельном топике. Вариантов решения может быть несколько. И в будущем может кому-то понадобиться. А здесь и концов потом не найдут
Надо подумать, Спасибо.
отдельный топик - https://forum.mql4.com/ru/66882