Обучение языку MQL4 под MetaTrader 4📌

От xbms, 13 апреля, 2013 в Уголок Программиста

#4701

Никто не поможет вшить в скомпилированный код.. надо файл с расширением mq4

#4702
d1w4m3 Получилось ?
Небольшое замечание: NormalizeDouble() не надо использовать часто - не за чем. Эта функция используется только для передачи цены в функции работы с ордерами! т.е. OrderModify() OrderOpen(). В других случаях это просто потеря времени.
#4703


d1w4m3 Получилось ?
Небольшое замечание: NormalizeDouble() не надо использовать часто - не за чем. Эта функция используется только для передачи цены в функции работы с ордерами! т.е. OrderModify() OrderOpen(). В других случаях это просто потеря времени.



Конечно получилось)Спасибо учителям)
мм)если не затруднит:
uptr = iCustom(NULL, 0, "FL11",12.0,34.0,69.0,"5,3","5,3","5,3",172,174,82,"",FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,4, 0);
dntr = iCustom(NULL, 0, "FL11",12.0,34.0,69.0,"5,3","5,3","5,3",172,174,82,"",FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,5, 0);
bool UP_Trend()
{
if(uptr > 0 && uptr != 2147483647.0) return(true);
return(false);
}
//+------------------------------------------------------------------+
bool DN_Trend()
{
if(dntr > 0 && dntr != 2147483647.0) return(true);
return(false);
}
В чем я тут мог ошибиться?Вроде буферы взял правильно?
#4704

В чем я тут мог ошибиться?Вроде буферы взял правильно?

Может на 0 баре нет ничего? Я так думаю и на 1 баре может не быть... Понаблюдайте за индюком.
#4705

Доброго времени суток всем. во втором видеоуроке автор показал как определять максимум и минимум за последние 10 баров, не подскажет ли кто нибудь, как определить те же минимум и максимум цены скажем за первые семь (например) часов. Что то вроде стратегии пробой утреннего флэта . Попытка разобраться самостоятельно ни к чему не привела -я только начал осваивать MQL и опыта и знаний 0. Заранее спасибо

#4706
вут716 Вам понадобятся несколько функций, алгоритм такой:
Определяем кол-во бар для анализа
barcount = 7 * 60 / _Period; // 7 часов * 60 минут / текущий период графика
При наступлении часа прорыва флета определяем High/Low
iHigh(NULL, 0, iHighest(NULL, 0, MODE_HIGH, barcount, 0)); // с Low аналогично
#4707

Добрый день.
В чем может быть проблема?
2017.07.17 11:17:26.815 TestGenerator: unmatched data error (volume limit 1555 at 2017.04.13 18:30 exceeded)

uptr = iCustom(NULL, 0, "FL11",12.0,34.0,69.0,"5,3","5,3","5,3",172,174,82,"",FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,4, 2);
dntr = iCustom(NULL, 0, "FL11",12.0,34.0,69.0,"5,3","5,3","5,3",172,174,82,"",FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,5, 2);

if( lastBarTime != Time[0] && Ask > ma && !CountSell() > 0 && BuySignal()==true && UP_Trend()==true)
{
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "Sloper", Magic, 0, Blue);
if (ticket>0)
{
TP = NormalizeDouble(Ask + TakeProfit*Point, Digits);
SL = NormalizeDouble(Ask - StopLoss*Point, Digits);

if (OrderSelect(ticket, SELECT_BY_TICKET))
if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print("Ошибка на покупку");
lastBarTime = Time[0];
}
bool UP_Trend()
{
if(uptr > 0 && uptr != 2147483647.0) return(true);
return(false);
}
bool DN_Trend()
{
if(dntr > 0 && dntr != 2147483647.0) return(true);
return(false);
}

Не работает после добавления FL11

#4708

Здравствуйте. Ограничьте историю в барах пожалуйста, очень мешает лишнее на графике...


Добавлено: 17-07-2017 18:23:37

-Volume_Custome_2xMA.mq44 скач.
-Volume_Custome_2xMA.mq41 скач.

Изменено 17 июля, 2017 пользователем Strong-Tezis

#4710

Не то,спасибо. И у меня тоже немного не то. Мне важно знать ,что у только закрытой свечи больше объема, чем у предыдущей! Поэтому подвал стандартный вообще не нужен, а на этом много линий((

#4711
Strong-Tezis, так какой, в итоге, из 3-х одинаково названных индюков в топике правильный?
Надо оставить один - или указать какой правильный в килобайтах.
#4712

Пока нет правильного. Который сделал 0ll, к сожалению не реагирует на уменьшение истории. Который переделал я, реагирует не так как надо. он правильно только при навешивании на график. Я сейчас пытаюсь сделать и если удастся, то обязательно выложу его для всех.


Добавлено: 18-07-2017 12:34:14

---Volume vLine(Last) - Это почти готовая версия того что было нужно. Единственное что мне не удалось, это удаление объектов или перерасчет, пересчитывает(удаляет лишние линии) при повторной загрузке шаблона. Если кроме меня кому то тоже был нужен такой индик, то сорри ,сделал все что мог...

---Volume_vLine.mq44 скач.
---Volume_vLineLast.mq43 скач.

Изменено 18 июля, 2017 пользователем Strong-Tezis

#4713

Добрый вечер, как правильно задать? Например если 2 свечи D1 подряд бычьи, то это аптренд (ищу покупки), пока не появиться 2 медвежьи свечи подряд, начинаю искать продажи, а то получается что он постоянно проверяет условие?
open1 = NormalizeDouble(iOpen(NULL, PERIOD_D1, 1), Digits);
open2 = NormalizeDouble(iOpen(NULL, PERIOD_D1, 2), Digits);
close1 = NormalizeDouble(iClose(NULL, PERIOD_D1, 1), Digits);
close2 = NormalizeDouble(iClose(NULL, PERIOD_D1, 2), Digits);
bool DN_Trend()
{
if( close1>open1 && close2>open2 ) return(true);//1й и 2й бар медвежий
else return(false);
}
//+------------------------------------------------------------------+
bool UP_Trend()
{
if(open1>close1 && open2>close2) return(true);//1й и 2й бар бычий
else return(false);
}

#4714

if(open1>close1 && open2>close2) return(true);//1й и 2й бар бычий - это медвежьи бары :d
Чтоб на каждом тике не вычисляла тренд надо проверять день недели, если новый день - вычисляем.

#4715

Спасибо))Я утром уже увидел)) #:-s
мммм.. я опять не правильно задал вопрос походу)
Задача чтоб было условие: если было 2 бара up D1, то покупки разрешаются, пока не появятся 2 бара down D1.

Новый_точечный_рисунок.jpg

#4716

Задача чтоб было условие: если было 2 бара up D1, то покупки разрешаются, пока не появятся 2 бара down D1.

Я и пишу: Появился новый дневной бар - определяем тренд.
Новый дневной бар можно определить так:
bool isNewDay()
{
static int opDay = 0;
if ( DayOfYear() != opDay ) { opDay = DayOfYear(); return(true); } return(false);
}
#4717

Доброе утро.
Возник вопрос с индикатором Slope?Почему не получается реализовать вход через функцию?
Что я упускаю?
//возвращает данные DN буфера
double Reds(int shift)
{
double buf = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 1,shift);
return(buf);
}
//возвращает данные UP буфера
double Greens(int shift)
{
double buf = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 0, shift);
return(buf);
}
bool SellSignal()
{
//если последний столбик красный, а предпоследний зеленый
if(Reds(1)!=0&&Greens(2)!=0) return(true);
else return (false);
}
bool BuySignal()
{
//если последний столбик зеленый, а предпоследний красный
if(Greens(1)!=0&&Reds(2)!=0) return(true);
else return (false);

#4718

попробуй принтом вывести оба буфера в лог, может там не "0"? У значений дубль иногда бывает, что 0.00...001 = 0. Пару раз сталкивался, с тех пор опасаюсь с 0 сравнивать - только через

#4719

Ок спасибо, правильно я понимаю просто Print(buf);? а потом \тестер\logs

При таком условии все работает. Но хочется научится и через функцию, как правильно сделать и записать код)
uptr = NormalizeDouble(iCustom(NULL, 0, "Slope Direction Line", period, method, price, 0, n), 4);
bool UP_Trend()
{
if(uptr > 0 && uptr != 2147483647.0) return(true);
return(false);
}

#4720

нет, на новом баре читаешь буфера: uptr = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 0, 1);
ну или через функцию:
double Reds(int shift) { return( iCustom(NULL, 0, "Slope Direction Line", period, method, price, 1, shift) ); }
потом Print( "
Функцию сравнения можно записать так (на выбор):
bool UP_Trend() { return ( uptr > 0 && uptr bool DN_Trend() { return ( Reds(1) > 0 && Reds(1)

#4721

Извиняюсь, а где про такую запись можно почитать и вникнуть, в чем я не прав при такой записи?
double Reds(int shift)
{
double buf = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 1,shift);
return(buf);Print("buf=",buf);
}
и при Вашей выдает ошибку "declaration without type" или я опять туплю))


Добавлено: 23-07-2017 13:41:09

bool SellSignal()
{return(Reds(1) > 0 && Reds(1)0 && Greens(2)Вот вроде заработало)))Но как то не красиво и он открывает на первый бар, по изменению цвета, даже если shift поменять,
то да весь смысл теряется, задача вообще была чтоб он открыл через функцию на 3 бар?

Изменено 23 июля, 2017 пользователем d1w4m3

#4722

после return ничего работать не будет, даже Print. :d
сунь параметр shift в SellSignal() и будет так:
bool SellSignal(int shift)
{return(Reds(shift) > 0 && Reds(shift)0 && Greens(shift+1)

#4723


после return ничего работать не будет, даже Print. :d
сунь параметр shift в SellSignal() и будет так:
bool SellSignal(int shift)
{return(Reds(shift) > 0 && Reds(shift)0 && Greens(shift+1)


Вот я валенок))невнимательность главная проблема походу)

Добавлено: 24-07-2017 04:32:52

Я очень извиняюсь, но теперь я в конец запутался)
//возвращает данные DN буфера
double Reds(int shift)
{
double buf = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 1,shift);
return(buf);
}
//возвращает данные UP буфера
double Greens(int shift)
{
double buf = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 0, shift);
return(buf);
}
//если последний столбик красный, а предпоследний зеленый
bool SellSignal(int shift)
{return(Reds(shift) > 0 && Reds(shift)0 && Greens(shift+1)
//если последний столбик зеленый, а предпоследний красный
bool BuySignal(int shift)
{return(Greens(shift)>0 && Greens(shift)0 && Reds(shift+1)

Изменено 24 июля, 2017 пользователем d1w4m3

#4724

Я очень извиняюсь, но теперь я в конец запутался)

??? вроде наоборот прояснилось...
#4725

нет я структуру примерно понял, запутался в
//возвращает данные DN буфера

double Reds(int shift) { return( iCustom(NULL, 0, "Slope Direction Line", period, method, price, 1, shift) ); }

а потом как мы можем всунуть shift в bool переменную????Я такого ни где не видел, и мы ее уже объявляли??
bool SellSignal(int shift)
{return(Reds(shift) > 0 && Reds(shift)0 && Greens(shift+1)Ибо я структуру сам запутал?Но буфер то надо вернуть....

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025