Ответить
25.05.2016, 17:36
Аватар для Prizr@k
Prizr@k Prizr@k вне форума Интересующийся
Регистрация: 11.10.2011 / Сообщений: 86
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
Не, подскажите как объявить эти функции... выдает ошибки... не могу никак разобраться, что куда вставлять... начинаю программировать у меня готовый советник, пытаюсь прикрутить...
25.05.2016, 18:03
Аватар для officialboob
officialboob officialboob вне форума Элитный участник
Регистрация: 13.07.2013 / Адрес: Moscow / Сообщений: 2,269
Поблагодарили 1,302 раз(а) / Репутация: 1261
Не, подскажите как объявить эти функции... выдает ошибки... не могу никак разобраться, что куда вставлять... начинаю программировать у меня готовый советник, пытаюсь прикрутить...

Смотреть код готовых советников. Пробовать.

_http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=sel ect&id=4
Всем бобра!
Алексея Бонифациевича Фіерсова (Пылесоса) на портянку!
26.05.2016, 10:40
Аватар для gince
gince gince вне форума Местный знаток
Регистрация: 09.09.2008 / Адрес: Литва / Сообщений: 448
Поблагодарили 810 раз(а) / Репутация: 810
  • Отправить сообщение для gince с помощью Skype™
Написал код индикатора. Работает но с ошибкой. Помогире разобраться.

На нулевом тф три стохастика в зонах перекуплености/перепродоности , ставим в зоне квадратик на уровне 5/95.
А если и в добавок еще и стохастик старшего ТФ в той зоне, тогда ставим и квадратик на уровне 5/95 , и ромбик на уровне 0/100.

На рисунке показал, что внизу в зоне перепродоности нет ни квадратиков ни ромриков.

Вроде все понятно, надо проверять условия. Но я их проверял уже много раз и наверное зациклился и не могу найти ошибку.

Помогите.
Гинтарас
26.05.2016, 11:10
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,715 раз(а) / Репутация: 3711
Написал код индикатора. Работает но с ошибкой. Помогире разобраться.

На нулевом тф три стохастика в зонах перекуплености/перепродоности , ставим в зоне квадратик на уровне 5/95.
А если и в добавок еще и стохастик старшего ТФ в той зоне, тогда ставим и квадратик на уровне 5/95 , и ромбик на уровне 0/100.

На рисунке показал, что внизу в зоне перепродоности нет ни квадратиков ни ромриков.

Вроде все понятно, надо проверять условия. Но я их проверял уже много раз и наверное зациклился и не могу найти ошибку.

Помогите.
А вот это
Stoch2[1]<LevelL &&
тебя не смущает?
gince 
26.05.2016, 11:58
Аватар для gince
gince gince вне форума Местный знаток
Регистрация: 09.09.2008 / Адрес: Литва / Сообщений: 448
Поблагодарили 810 раз(а) / Репутация: 810
  • Отправить сообщение для gince с помощью Skype™
А вот это
Stoch2[1]<LevelL &&
тебя не смущает?
Огромное спасибо. Незаметил, зациклился. Теперь все ОК.
Гинтарас
26.05.2016, 12:58
Аватар для Prizr@k
Prizr@k Prizr@k вне форума Интересующийся
Регистрация: 11.10.2011 / Сообщений: 86
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
'GetTypeLastOpenPos' - function can be declared only in the global scope
как исправить... на глобальном уровне... че только не делал
26.05.2016, 13:19
Аватар для derzerack
derzerack derzerack вне форума Новичок форума
Регистрация: 30.11.2012 / Сообщений: 12
Поблагодарили 1 раз в 1 сообщении / Репутация: 7
Уважаемые знатоки, в сотый раз беспокою глупыми вопросами, но самостоятельно не могу разобраться. Есть такая функция рукотворная)

double SamiVisokiOrder()
{
int x;
int indexmas;
double znachenie;
double MasCen[100];

for(x=0;x<OrdersTotal();x++)
{
if(OrderSelect(x,SELECT_BY_POS,MODE_TRADES)==true)
{
indexmas=x-1;
MasCen[x]=OrderOpenPrice();
znachenie=ArrayMaximum(MasCen,WHOLE_ARRAY,0);
}
}

return znachenie;
}

в ней хочу получить значение самого высокого из открытых ордеров. Но получаю ошибку при запуске советника (array out of range). вроде всё по мануалам, переменная Х больше нигде не используется и объявлена локально. Большая просьба подсказать где не прав. Думаю для завсегдатых этой ветки это даже не вопрос, но я в тупике. Или подскажите другой путь определения самого высокого ордера. Заранее благодарен.
26.05.2016, 13:32
Аватар для officialboob
officialboob officialboob вне форума Элитный участник
Регистрация: 13.07.2013 / Адрес: Moscow / Сообщений: 2,269
Поблагодарили 1,302 раз(а) / Репутация: 1261
Уважаемые знатоки, в сотый раз беспокою глупыми вопросами, но самостоятельно не могу разобраться. Есть такая функция рукотворная)

double SamiVisokiOrder()
{
int x;
int indexmas;
double znachenie;
double MasCen[100];

for(x=0;x<OrdersTotal();x++)
{
if(OrderSelect(x,SELECT_BY_POS,MODE_TRADES)==true)
{
indexmas=x-1;
MasCen[x]=OrderOpenPrice();
znachenie=ArrayMaximum(MasCen,WHOLE_ARRAY,0);
}
}

return znachenie;
}

в ней хочу получить значение самого высокого из открытых ордеров. Но получаю ошибку при запуске советника (array out of range). вроде всё по мануалам, переменная Х больше нигде не используется и объявлена локально. Большая просьба подсказать где не прав. Думаю для завсегдатых этой ветки это даже не вопрос, но я в тупике. Или подскажите другой путь определения самого высокого ордера. Заранее благодарен.

Просто немного перепишите эту функцию.


PHP код:
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 04.06.2008                                                     |
//|  Описание : Возвращает цену открытия ближайшей позиции.                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double PriceOpenNearPos(string sy=""int op=-1int mn=-1) {
  
double mioop=0p;
  
int    ik=OrdersTotal(), pp=0;

  if (
sy=="0"sy=Symbol();
  for (
i=0i<ki++) {
    if (
OrderSelect(iSELECT_BY_POSMODE_TRADES)) {
      if ((
OrderSymbol()==sy || sy=="") && (op<|| OrderType()==op)) {
        if (
OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (
mn<|| OrderMagicNumber()==mn) {
            if (
OrderType()==OP_BUY)  mi=MarketInfo(OrderSymbol(), MODE_ASK);
            if (
OrderType()==OP_SELLmi=MarketInfo(OrderSymbol(), MODE_BID);
            
p=MarketInfo(OrderSymbol(), MODE_POINT);
            if (
p==0) if (StringFind(sy"JPY")<0p=0.0001; else p=0.01;
            if (
pp==|| pp>MathAbs(OrderOpenPrice()-mi)/p) {
              
pp=MathAbs(OrderOpenPrice()-mi)/p;
              
oop=OrderOpenPrice();
            }
          }
        }
      }
    }
  }
  return(
oop);






'GetTypeLastOpenPos' - function can be declared only in the global scope
как исправить... на глобальном уровне... че только не делал


GetTypeLastOpenPos не нужно совать в глобальные переменные.

Вот, еще может этого не хватать.

PHP код:
//------- Подключение внешних модулей --------------------------------------------+
//-- Подключаемые модули --
#include <stdlib.mqh>                  // Стандартная библиотека МТ4 
Всем бобра!
Алексея Бонифациевича Фіерсова (Пылесоса) на портянку!

Последний раз редактировалось officialboob; 26.05.2016 в 13:36.
27.05.2016, 05:41
Аватар для derzerack
derzerack derzerack вне форума Новичок форума
Регистрация: 30.11.2012 / Сообщений: 12
Поблагодарили 1 раз в 1 сообщении / Репутация: 7
Спасибо за ответ, но доработать функцию не смог. Допилил свою. Незнаю насколько правильно со стороны грамотности написания, но работает. На всякий случай опубликую код мож кому сгодится. Я его использую для того чтоб найти отскок между самым верхним и нижним ордерами в %

double SamiVisokiOrder()
{
int x;
int indexmas;
double znachenie;
double MasCen[];
ArrayInitialize(MasCen,EMPTY_VALUE);
for(x=0;x<OrdersTotal();x++)
{
if(OrderSelect(x,SELECT_BY_POS,MODE_TRADES)==true)
{
indexmas=x+1;
ArrayResize(MasCen,indexmas);

MasCen[x]=OrderOpenPrice();
znachenie=MasCen[ArrayMaximum(MasCen,WHOLE_ARRAY,0)];
}
}

return znachenie;
}
28.05.2016, 18:46
Аватар для lexar
lexar lexar вне форума Местный житель
Регистрация: 12.03.2013 / Адрес: Химки / Сообщений: 247
Поблагодарили 244 раз(а) / Репутация: 245
Господа программисты. Вопрос скорее по математике. Нужно найти второй минимум при восходящем тренде или второй максимум при нисходящем тренде. Нужно для построения равноудалённого канала получить время и цену. Первая точка понятно самая низкая или самая высокая на графике, третью тоже можно найти, а вот со второй проблемка. Может у кого есть готовое решение?

Немного программирую mql4 и один раз mql5
28.05.2016, 19:28
Аватар для officialboob
officialboob officialboob вне форума Элитный участник
Регистрация: 13.07.2013 / Адрес: Moscow / Сообщений: 2,269
Поблагодарили 1,302 раз(а) / Репутация: 1261
Господа программисты. Вопрос скорее по математике. Нужно найти второй минимум при восходящем тренде или второй максимум при нисходящем тренде. Нужно для построения равноудалённого канала получить время и цену. Первая точка понятно самая низкая или самая высокая на графике, третью тоже можно найти, а вот со второй проблемка. Может у кого есть готовое решение?

PHP код:
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 13.08.2008                                                     |
//|  Описание : Возвращает номер бара фрактала по его номеру.                  |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//|    tf - таймфрейм                       (    0       - текущий ТФ)         |
//|    nf - номер фрактала                  (    0       - последний)          |
//+----------------------------------------------------------------------------+
int GetFractalBar(string sy="0"int tf=0int nf=0) {
  if (
sy=="" || sy=="0"sy=Symbol();
  
double f=0;
  
int    ik=iBars(sytf), kf;

  for (
i=2i<ki++) {
    
f=iFractals(sytfMODE_LOWERi);
    if (
f!=0) {
      
kf++;
      if (
kf>nf) return(i);
    }
    
f=iFractals(sytfMODE_UPPERi);
    if (
f!=0) {
      
kf++;
      if (
kf>nf) return(i);
    }
  }
  Print(
"GetFractalBar(): Фрактал не найден");
  return(-
1);

Всем бобра!
Алексея Бонифациевича Фіерсова (Пылесоса) на портянку!
lexar 
01.06.2016, 19:05
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 271
Поблагодарили 86 раз(а) / Репутация: 86
Спасибо за ответ, но доработать функцию не смог. Допилил свою. Незнаю насколько правильно со стороны грамотности написания, но работает. На всякий случай опубликую код мож кому сгодится. Я его использую для того чтоб найти отскок между самым верхним и нижним ордерами в %

double SamiVisokiOrder()
{
int x;
int indexmas;
double znachenie;
double MasCen[];
ArrayInitialize(MasCen,EMPTY_VALUE);
for(x=0;x<OrdersTotal();x++)
{
if(OrderSelect(x,SELECT_BY_POS,MODE_TRADES)==true)
{
indexmas=x+1;
ArrayResize(MasCen,indexmas);

MasCen[x]=OrderOpenPrice();
znachenie=MasCen[ArrayMaximum(MasCen,WHOLE_ARRAY,0)];
}
}

return znachenie;
}
Грамотность написания не критерий, критерий правильный результат в неправильных условиях.
01.06.2016, 19:15
Аватар для artamir
artamir artamir вне форума Интересующийся
За призовое место в конкурсе 

Регистрация: 01.01.2010 / Сообщений: 3
Поблагодарили 0 раз(а) / Репутация: -1
Спасибо за ответ, но доработать функцию не смог. Допилил свою. Незнаю насколько правильно со стороны грамотности написания, но работает. На всякий случай опубликую код мож кому сгодится. Я его использую для того чтоб найти отскок между самым верхним и нижним ордерами в %

double SamiVisokiOrder()
{
int x;
int indexmas;
double znachenie;
double MasCen[];
ArrayInitialize(MasCen,EMPTY_VALUE);
for(x=0;x<OrdersTotal();x++)
{
if(OrderSelect(x,SELECT_BY_POS,MODE_TRADES)==true)
{
indexmas=x+1;
ArrayResize(MasCen,indexmas);

MasCen[x]=OrderOpenPrice();
znachenie=MasCen[ArrayMaximum(MasCen,WHOLE_ARRAY,0)];
}
}

return znachenie;
}
Если MasCen используется только для определения самого высокого ордера, то можно обойтись без массива.
PHP код:
int max_pr=0;int max_tifor (int i=0i<OrdersTotal(); i++){  if(!OrderSelect(iSELECT_BY_POS,MODE_TRADES)) continue;  if(OrderOpenPrice()>max_pr){    max_pr =OrderOpenPrice();    max_ti OrderTicket();  }} 
На выходе будет самая высокая цена и тикет.
01.06.2016, 19:19
Аватар для lexar
lexar lexar вне форума Местный житель
Регистрация: 12.03.2013 / Адрес: Химки / Сообщений: 247
Поблагодарили 244 раз(а) / Репутация: 245
Спасибо за ответ, но ... решил задачку по другому...
if (CountBars>Bars)CountBars=Bars; //если баров на графике меньше чем в переменной
for (int i = 0; i <= CountBars - 1; i++){ //перебираем все доступные бары
if (high[i] > maxH) {maxH = high[i]; maxHT = time[i]; barH1 = i;} //находим максимальную цену и её время
if (low[i] < minL) {minL = low[i]; minLT = time[i]; barL1 = i;}} //находим минимальную цену и её время
if (maxHT < minLT)
{
delta = (maxH - minL)/(barH1-barL1);
delta2 = 0;
for (int i = 0; i <= barH1; i++) //ищим вторую точку
{
if (maxHT <= time[i] && minLT >= time[i] && (maxH - delta*(barH1 - i))+delta2 < high[i])
{
srdH = high[i];
srdHT = time[i];
delta2 = high[i] - (maxH - delta*(barH1 - i));
barH2 = i;
}
}
delta = (maxH - srdH)/(barH1-barH2);
delta2 = 0;
srdHT2 = srdHT;
for (int i = 0; i <= barH1; i++)
{
if (maxHT <= time[i] && srdHT2 >= time[i] && (maxH - delta*(barH1 - i))+delta2 < high[i])
{
srdH = high[i];
srdHT = time[i];
delta2 = high[i] - (maxH - delta*(barH1 - i));
barH2 = i;
}
}
delta2 = 0;
srdHT2 = srdHT;
delta = (maxH - srdH)/(barH1-barH2);
for (int i = 0; i <= barH1; i++) //ищим третью точку

Немного программирую mql4 и один раз mql5
16.06.2016, 20:32
Аватар для ivansss
ivansss ivansss на форуме Новичок форума
Регистрация: 11.12.2015 / Сообщений: 48
Поблагодарили 15 раз(а) / Репутация: 16
Добрый день не могу считать показания фракталов.
Fractals_www_fx1618_com_by = iCustom(NULL,0,"Fractals_www_fx1618_com",0,1);
Fractals_www_fx1618_com_sell = iCustom(NULL,0,"Fractals_www_fx1618_com",1,1);
}
Comment ("Цена продажи: " + DoubleToStr(Fractals_www_fx1618_com_by, 5) +"\n"+"Цена покупки: " + DoubleToStr(Fractals_www_fx1618_com_sell, 5)+"\n"+"Цена : " + DoubleToStr(MA_ANGL_FLAT, 5));


Считываю фрактал через icustom ,но собственно в режиме реального времени coment в тесте не отображает какое то изменение в ячейке памяти в прогоне,
Подскажите как мне считывать фракталы ,и чтобы они потом записывались в ячейки и обнулялись при появлении противоположного фрактала.Помогите неучу!
18.06.2016, 18:21
Регистрация: 13.03.2009 / Сообщений: 2,362
Поблагодарили 1,967 раз(а) / Репутация: 2044
Добрый день не могу считать показания фракталов.
Fractals_www_fx1618_com_by = iCustom(NULL,0,"Fractals_www_fx1618_com",0,1);
Fractals_www_fx1618_com_sell = iCustom(NULL,0,"Fractals_www_fx1618_com",1,1);
}
Comment ("Цена продажи: " + DoubleToStr(Fractals_www_fx1618_com_by, 5) +"\n"+"Цена покупки: " + DoubleToStr(Fractals_www_fx1618_com_sell, 5)+"\n"+"Цена : " + DoubleToStr(MA_ANGL_FLAT, 5));


Считываю фрактал через icustom ,но собственно в режиме реального времени coment в тесте не отображает какое то изменение в ячейке памяти в прогоне,
Подскажите как мне считывать фракталы ,и чтобы они потом записывались в ячейки и обнулялись при появлении противоположного фрактала.Помогите неучу!
Ты ищешь фрактал на 1 баре. Его там может и не быть.
В цикле перебирай бары от 1 и более, как найдёшь фрактал прерывай цикл.
for(uint i=0; i<Bars; i++)
{
Fractals_www_fx1618_com_by = iCustom(NULL,0,"Fractals_www_fx1618_com",0,i);
Fractals_www_fx1618_com_sell = iCustom(NULL,0,"Fractals_www_fx1618_com",1,i);
if((Fractals_www_fx1618_com_by>_Point && Fractals_www_fx1618_com_by<EMPTY_VALUE) ||
(Fractals_www_fx1618_com_sell>_Point && Fractals_www_fx1618_com_sell<EMPTY_VALUE))break;
}
Как то так
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
21.06.2016, 22:27
Аватар для Finbest
Finbest Finbest вне форума Новичок форума
Регистрация: 11.03.2010 / Адрес: Волгоград / Сообщений: 14
Поблагодарили 7 раз(а) / Репутация: 8
Здравствуйте!

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

Мой вариант не работает.
double ind_1 = iCustom (NULL,PERIOD_CURRENT,"PZ_SwingTrading","---- Indicator Settings",300,50,3000, FALSE,FALSE,0,0);
double ind_2 = iCustom (NULL,PERIOD_CURRENT,"PZ_SwingTrading","---- Indicator Settings",300,50,3000, FALSE,FALSE,1,0);
Comment ("\n","1 = ",ind_1,"\n","2 = ",ind_2);
21.06.2016, 22:41
Регистрация: 09.08.2012 / Адрес: Ua_Khm / Сообщений: 1,850
Поблагодарили 9,508 раз(а) / Репутация: 9513
Здравствуйте!

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

Мой вариант не работает.
double ind_1 = iCustom (NULL,PERIOD_CURRENT,"PZ_SwingTrading","---- Indicator Settings",300,50,3000, FALSE,FALSE,0,0);
double ind_2 = iCustom (NULL,PERIOD_CURRENT,"PZ_SwingTrading","---- Indicator Settings",300,50,3000, FALSE,FALSE,1,0);
Comment ("\n","1 = ",ind_1,"\n","2 = ",ind_2);
1) Так видно даже по скрину, на нулевом баре у данного индикатора нет сигнала, бери по первому.
2) Раз уж решил перечислить входные параметры индикатора - перечисляй все, а не часть их или не указывай их совсем.
07.07.2016, 05:38
Аватар для Cathylva
Cathylva Cathylva вне форума Новичок форума
Регистрация: 18.01.2011 / Сообщений: 10
Поблагодарили 4 раз(а) / Репутация: 5
Пытаюсь наложить ленты Боллинджера на Осциллятор Бестрендовости, а получается какая-то дырка перечеркнутая:

Не могу понять в чем дело, подскажите, пожалуйста!
07.07.2016, 16:30
Аватар для lexar
lexar lexar вне форума Местный житель
Регистрация: 12.03.2013 / Адрес: Химки / Сообщений: 247
Поблагодарили 244 раз(а) / Репутация: 245
Здравствуйте и процветайте уважаемые знатоки программирования. Подскажите пожалуйста как вызвать скрипт из советника, если это возможно?

Немного программирую mql4 и один раз mql5
Ответить

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 22:38. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO