Автоматизация торговли на финансовых рынках Автоматизация торговли на финансовых рынках

 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Как перенести код индикатора в советник

 
Начать новую тему   Ответить на тему    Список форумов Автоматизация торговли на финансовых рынках -> Программирование в MQL4
Предыдущая тема :: Следующая тема  
Автор Сообщение
Lord Shadows



Зарегистрирован: 15.12.2007
Сообщения: 14

СообщениеДобавлено: Чт Dec 20, 2007 5:03 pm    Заголовок сообщения: Ответить с цитатой

Пожалуй не буду создавать новой темы и задам вопрос здесь...
Уважаемый KimIV возможно ли такое...Существуют довольно тыжёлые по вычислениям индикаторы(например Kaufman), забирающие много ресурсов...но их вычисление на каждом тике мне совершенно не нужно( так как использую исключительно результат предидущего бара), а вот для трейлинга или изменений в параметрах позиций необходимо. Так вот можно ли это совместить в советнике соответствующим образом так что при прогоне по всем тикам не загружать процессор...а индикаторы корректно считались по сформированным барам. Podmigivanie
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KimIV
Admin


Зарегистрирован: 24.01.2006
Сообщения: 958
Откуда: Кунгур

СообщениеДобавлено: Чт Dec 20, 2007 5:55 pm    Заголовок сообщения: Ответить с цитатой

Да, можно... Для этого код индикатора нужно перенести в советник и выполнять расчёты только для нужных баров. В качестве примера приведу АМА.
Код:
//+------------------------------------------------------------------+
//| Индикатор AМА                                                    |
//| Параметры:                                                       |
//|   sym - наименование инструмента                                 |
//|   tf  - таймфрейм (количество минут)                             |
//|   nbi - номер буфера индикатора                                  |
//|   nb  - номер бара                                               |
//+------------------------------------------------------------------+
double iAMA(string sym, int tf, int nbi, int nb) {
  double noise=0.000000001, AMA, AMA0, signal, ER;
  double dSC, ERSC, SSC, ddK;
  double slowSC, fastSC, vbi[3];
  int    nfast=2;
  int    nslow=30;
  double G=2.0;
  double dK=2.0;
  int    i;

  slowSC=(2.0/(nslow+1));
  fastSC=(2.0/(nfast+1));
  AMA0=iClose(sym, tf, nb+1);
  signal=MathAbs(iClose(sym, tf, nb)-iClose(sym, tf, nb+AMA_Period));
  for(i=0; i<AMA_Period; i++) {
    noise=noise+MathAbs(iClose(sym, tf, nb+i)-iClose(sym, tf, nb+i+1));
  }
  ER=signal/noise;
  dSC=(fastSC-slowSC);
  ERSC=ER*dSC;
  SSC=ERSC+slowSC;
  AMA=AMA0+(MathPow(SSC,G)*(iClose(sym, tf, nb)-AMA0));
  vbi[0]=AMA;

  ddK=AMA-AMA0;
  if (MathAbs(ddK)>dK*Point && ddK>0) vbi[1]=AMA; else vbi[1]=0;
  if (MathAbs(ddK)>dK*Point && ddK<0) vbi[2]=AMA; else vbi[2]=0;

  return (vbi[nbi]);
}

_________________
Ещё вчера я себе казался умным и пытался изменить мир, а сегодня я стал мудрым и пытаюсь изменить себя...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора Yahoo Messenger
Lord Shadows



Зарегистрирован: 15.12.2007
Сообщения: 14

СообщениеДобавлено: Чт Dec 20, 2007 6:10 pm    Заголовок сообщения: Ответить с цитатой

Огромное спасибо...вечер пройдёт в освоении данного метода...жаль только что Вы применили в качестве примера AMA а не упомянутый kaufman... возможно чтобы я не просто скопировал а поварочал мозгами хоть чуток...и тоже стал немного мудрее
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Lord Shadows



Зарегистрирован: 15.12.2007
Сообщения: 14

СообщениеДобавлено: Чт Dec 20, 2007 6:24 pm    Заголовок сообщения: Ответить с цитатой

Я извиняюсь...но либо эти два индикатора(AMA и Kaufman) идентчны...либо что-то не уловил...подскажите пожалуйста Shocked
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KimIV
Admin


Зарегистрирован: 24.01.2006
Сообщения: 958
Откуда: Кунгур

СообщениеДобавлено: Чт Dec 20, 2007 6:25 pm    Заголовок сообщения: Ответить с цитатой

Lord Shadows писал(а):
...жаль только что Вы применили в качестве примера AMA а не упомянутый kaufman...

Я не знаю этот индикатор, просто надеялся, что АМА и kaufman - одно и то же. Видимо, нет Smile

АМА я привёл в качестве примера, потому что он у меня уже был сделан и потому что перенос кода этого индикатора в советник - задача нетривиальная. Если Вы её усвоите, то будете легко переносить код любого индикатора.

_________________
Ещё вчера я себе казался умным и пытался изменить мир, а сегодня я стал мудрым и пытаюсь изменить себя...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора Yahoo Messenger
Lord Shadows



Зарегистрирован: 15.12.2007
Сообщения: 14

СообщениеДобавлено: Чт Dec 20, 2007 6:33 pm    Заголовок сообщения: Ответить с цитатой

Да похоже идентичные...ещё раз преогромное спасибо за помощь... Wink
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Rosh



Зарегистрирован: 27.03.2006
Сообщения: 39

СообщениеДобавлено: Чт Dec 20, 2007 8:52 pm    Заголовок сообщения: Ответить с цитатой

Можно оптимизировать до приемлемого уровня практически любой индикатор. Вот, например, Оптимизированная АМА Кауфмана : Perry Kaufman AMA optimized
_________________
http://www.simple-testing.blogspot.com - Мой блог
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Lord Shadows



Зарегистрирован: 15.12.2007
Сообщения: 14

СообщениеДобавлено: Чт Dec 20, 2007 9:43 pm    Заголовок сообщения: Ответить с цитатой

Rosh писал(а):
Можно оптимизировать до приемлемого уровня практически любой индикатор. Вот, например, Оптимизированная АМА Кауфмана : Perry Kaufman AMA optimized


Да спасибо всем за помощь...уже копаю и тестирую.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Lord Shadows



Зарегистрирован: 15.12.2007
Сообщения: 14

СообщениеДобавлено: Сб Dec 22, 2007 6:38 pm    Заголовок сообщения: Ответить с цитатой

Извените пожалуйста...но не подскажете ли как мне получить постоянно открывающиеся позиции в одном направлении при появлении точки одного цвета до тех пор пока не появится точка другого цвета, а не единичное исполнение...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KimIV
Admin


Зарегистрирован: 24.01.2006
Сообщения: 958
Откуда: Кунгур

СообщениеДобавлено: Сб Dec 22, 2007 11:02 pm    Заголовок сообщения: Ответить с цитатой

Сформулируйте точнее вопрос. Без уточнения не понятно то ли на каждом тике открывать по новой позе, то ли на каждом баре, а то ли на каждой точке...
_________________
Ещё вчера я себе казался умным и пытался изменить мир, а сегодня я стал мудрым и пытаюсь изменить себя...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора Yahoo Messenger
Lord Shadows



Зарегистрирован: 15.12.2007
Сообщения: 14

СообщениеДобавлено: Сб Dec 22, 2007 11:33 pm    Заголовок сообщения: Ответить с цитатой

Вопрос в следующем...например kaufman или AMA показали точку синюю, сигнал о направлении вверх, а затем например на следующем баре не появляется никаких точек...и на следующем и на следующем...лично для меня это говорит о как минимуме паритете...так вот я и хочу чтоб позиции в данном случае на всех этих барах открывались именно на покупку( даже при закрытии по профиту стопу или трейлингом и не появлении на данном баре сигналов на покупку тоесть синей точки) до тех пор пока на одном из баров не зажгётся точка другого цвета..что укажет об изменении тенденции...Вот и прошу Вас уважаемый KimIV помочь мне в определении данных условий, я вообще очень слаб в программировании так как всего несколько месяцев осваиваю MQL4 а до этого вообще дуб-дубом...конечно все мои вопросы Вам кажутся наивными и порой бестолковыми...но у меня есть идеи, реализовать которые мне слишком трудно...простые советники я научился писать по чужим кодам, а вот чтоб сделать сложную систему( с множеством подсистем) это для меня впервые, а делится такими советниками никто думаю не захочет( так как данные советники содержат внутри систему защиты и взаимосвязи от трендов, корекций и различных торговых ситуаций и показывают возможно не гипер рост-слив депозита, а стабильный рост без смертельных просадок-что является идеалом)...Хотя возможно я оптимист и это всё яйца выеденного не стоит Podmigivanie
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KimIV
Admin


Зарегистрирован: 24.01.2006
Сообщения: 958
Откуда: Кунгур

СообщениеДобавлено: Вс Dec 23, 2007 1:12 am    Заголовок сообщения: Ответить с цитатой

Для открытия позиций по одной на каждом баре я использую следующую функцию
Код:
//+------------------------------------------------------------------+
//|  Возвращает номер бара открытия последней позиции или -1.        |
//|  Параметры:                                                      |
//|    sy - наименование инструмента   (NULL - текущий символ)       |
//|    tf - таймфрейм                  ( 0   - текущий таймфрейм)    |
//|    op - операция                   (-1   - любая позиция)        |
//|    mn - MagicNumber                (-1   - любой магик)          |
//+------------------------------------------------------------------+
int NumberOfBarOpenLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderOpenTime()) t=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}

_________________
Ещё вчера я себе казался умным и пытался изменить мир, а сегодня я стал мудрым и пытаюсь изменить себя...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора Yahoo Messenger
Lord Shadows



Зарегистрирован: 15.12.2007
Сообщения: 14

СообщениеДобавлено: Вс Dec 23, 2007 1:23 am    Заголовок сообщения: Ответить с цитатой

Пожалуйста не мучайте меня Sad ...Уважаемый KimIV, я безумно благодарен Вам за такие великолепные коды и за Вашу открытость и желание помочь...но можно попросить Вас дать полный код любого советника чтобы там были использованы данные функции. Иначе мне не понять их приминение, я же говорю что чайник в этом деле полный...Очень Вас прошу...любой советник без затей но с данными функциями...Заранее благодарю Вас.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KimIV
Admin


Зарегистрирован: 24.01.2006
Сообщения: 958
Откуда: Кунгур

СообщениеДобавлено: Вс Dec 23, 2007 3:04 am    Заголовок сообщения: Ответить с цитатой

Нет такого... есть, но не для публикации...

Lord Shadows писал(а):
Иначе мне не понять их приминение

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

_________________
Ещё вчера я себе казался умным и пытался изменить мир, а сегодня я стал мудрым и пытаюсь изменить себя...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора Yahoo Messenger
Рубин-8



Зарегистрирован: 25.02.2013
Сообщения: 14

СообщениеДобавлено: Чт Авг 29, 2013 8:42 am    Заголовок сообщения: Ответить с цитатой

доброе утро ,Игорь подскажи если вырезать часть функций индикатора ( каналы от минутного до часового) терминал тормозить перестанет
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Автоматизация торговли на финансовых рынках -> Программирование в MQL4 Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять вложения в этом форуме
Вы не можете просматривать вложения в этом форуме
Рейтинг@Mail.ru


Powered by phpBB © 2001, 2005 phpBB Group