pyatka__ASD: Подскажите, у кого-нибудь есть кусок программы, в котором есть соединение high и low вершин зиг-зага. Спасибо
Не знаю какое соединение вам нужно, но... так я в советнике определяю какой экстремум ЗЗ есть в наличии - нижний или верхний, надеюсь найдёте то, что вам нужно:
//----------------------------------------------------------------------------------------------------------------- if (op==OP_BUY)
{
for (m=1; m<=CalcBarsLimit; m++) // Найдём первый перелом ЗЗ слева от первого бара
{
zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, m); // Берём данные 0 буфера ЗЗ с бара mif (zz!=0 && // Если первый экстремум верхнийNormalizeDouble(zz, dg)==NormalizeDouble(iCustom(sy, tf, "ZigZag", dp, dv, bs, 1, m), dg))
return(false); // Валим отсюдаelseif (zz!=0 && // Если первый экстремум нижнийNormalizeDouble(zz, dg)==NormalizeDouble(iCustom(sy, tf, "ZigZag", dp, dv, bs, 2, m), dg))
{
if (MathRound((KLevel-zz)/pt)>=DistanceMIN && // Если расстояние от ZZ до KLevel ...MathRound((KLevel-zz)/pt)<=DistanceMAX) // ... в заданных пределах
{
if (Open[1]<KLevel &&
Close[1]>KLevel &&
pa>KLevel)
{
Fibo0_PriceB=zz; // Сохраним цену излома ZZ
Fibo23_PriceB=pa; // Сохраним цену 23 фибы
nmKLB=DoubleToStr(Time[m], 4); // имя метки
SetArrow(5, DeepSkyBlue, nmKLB, Time[m], zz, 1); // Отмечаем излом ЗЗ на графикеreturn(true);
}
}
}
}
}
//----------------------------------------------------------------------------------------------------------------- if (op==OP_SELL)
{
for (m=1; m<=CalcBarsLimit; m++) // Найдём первый перелом ЗЗ слева от первого бара
{
zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, m); // Берём данные 0 буфера ЗЗ с бара mif (zz!=0 && // Если первый экстремум нижнийNormalizeDouble(zz, dg)==NormalizeDouble(iCustom(sy, tf, "ZigZag", dp, dv, bs, 2, m), dg))
return(false); // Валим отсюдаelseif (zz!=0 && // Если первый экстремум верхнийNormalizeDouble(zz, dg)==NormalizeDouble(iCustom(sy, tf, "ZigZag", dp, dv, bs, 1, m), dg))
{
if (MathRound((zz-KLevel)/pt)>=DistanceMIN && // Если расстояние от ZZ до KLevel ...MathRound((zz-KLevel)/pt)<=DistanceMAX) // ... в заданных пределах
{
if (Open[1]>KLevel &&
Close[1]<KLevel &&
pb<KLevel)
{
Fibo0_PriceS=zz; // Сохраним цену излома ZZ
Fibo23_PriceS=pb; // Сохраним цену 23 фибы
nmKLS=DoubleToStr(Time[m], 4); // имя метки
SetArrow(5, BurlyWood, nmKLS, Time[m], zz, 1); // Отмечаем излом ЗЗ на графикеreturn(true);
}
}
}
}
}
return(false);
}
//-------------------------------------------------------------------------------
ЗЫ... Код черновой и неоптимизированный. Надеюсь, знаете, что лучше вычитать два нормализованных значения и проверять результат на ноль...
eddy: это как? если переменная объявлена внутри start то можно присвоить ей значение return_value1?
Да. Это называется передача параметра по ссылке. При обычном объявлении функции ее вызов приводит к тому, что все переменные, переданные как формальные параметры, копируются в локальные переменные функции, и с ними ведется работа. При передаче по ссылке копирования не происходит, т.е. функция работает не с копиями параметров, а с их оригиналами. Соответственно, все изменения, сделанные в коде функции с данными параметрами, остаются в силе после возврата из кода функции.
Для передачи параметра по ссылке необходимо при объявлении функции обозначить этот способ, поставив перед идентификатором нужного параметра значок &.
умножается не на 5, а на 2. В первом случае параметр а передан "по значению", и его содержимое не сохраняется после выхода из функции, во втором - по ссылке (double &a), поэтому измененное значение, т.е. 5*2=10 будет содержаться в переменной a после выхода из функции Func2.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Подскажите, у кого-нибудь есть кусок программы, в котором есть соединение high и low вершин зиг-зага. Спасибо
Не знаю какое соединение вам нужно, но... так я в советнике определяю какой экстремум ЗЗ есть в наличии - нижний или верхний, надеюсь найдёте то, что вам нужно:
ЗЫ... Код черновой и неоптимизированный. Надеюсь, знаете, что лучше вычитать два нормализованных значения и проверять результат на ноль...
Можно. Возвращайте в параметры.
это как? если переменная объявлена внутри start то можно присвоить ей значение return_value1?
Да. Это называется передача параметра по ссылке. При обычном объявлении функции ее вызов приводит к тому, что все переменные, переданные как формальные параметры, копируются в локальные переменные функции, и с ними ведется работа. При передаче по ссылке копирования не происходит, т.е. функция работает не с копиями параметров, а с их оригиналами. Соответственно, все изменения, сделанные в коде функции с данными параметрами, остаются в силе после возврата из кода функции.
Для передачи параметра по ссылке необходимо при объявлении функции обозначить этот способ, поставив перед идентификатором нужного параметра значок &.
Пример (откомпилируйте как скрипт и проверьте)
5*5=5?))
крутокруто:)
а если так?
а если так?
Компьютер занят расчетами, поэтому сам сейчас проверить не могу.
Есть вот такой кусок кода:
Через Гугл нашел несколько повторений этого кода, следовательно, прихожу к заключению, что код рабочий.
Тем не менее, строчка
смущает.
Если DecreaseFactor=3 и losses=3, то, согласно формуле, мы получаем Lot=0 !!!
В случае если losses>3, то мы получаем Lot<0 !!!
Возможно ли такое?
крутокруто:)
а если так?