Вопрос к разработчикам MetaTrader4 (тормозит платформа)

 

Написал серию индикаторов по свечному анализу (7шт,связаных между собою и с экспертом).Видять все модели и генерируют торговые приказы.Тестирую в течении месяца на всех валютных парах.За это время,на W1 и D1 графиках,все приказы на вход в рынок показывают отличный результат(для торговых приказов отобрал на мой взгляд самые можные свечные  модели).


Проблема в том,что на данном этапе,не могу использовать данную систему в режиме online(тормозит платформа,приходиться накидывать индюков на каждую пару по отдельности в ручном режиме при помощи шаблонов) и из за этого вижу сигнал на вход в рынок достаточно позновато.(платформа начинает тормозить даже если накинуть индюков на одну вал.пару,я работаю по всем кроме восточной европы)

Подскажите пожалуйста,можно ли что то зделать для оптимизации и имеет ли смысл покупать более мощьный комп.

Мой комп.








 
intersheff писал(а) >>

Написал серию индикаторов по свечному анализу (7шт,связаных между собою и с экспертом).Видять все модели и генерируют торговые приказы.Тестирую в течении месяца на всех валютных парах.За это время,на W1 и D1 графиках,все приказы на вход в рынок показывают отличный результат(для торговых приказов отобрал на мой взгляд самые можные свечные модели).

Проблема в том,что на данном этапе,не могу использовать данную систему в режиме online(тормозит платформа,приходиться накидывать индюков на каждую пару по отдельности в ручном режиме при помощи шаблонов) и из за этого вижу сигнал на вход в рынок достаточно позновато.(платформа начинает тормозить даже если накинуть индюков на одну вал.пару,я работаю по всем кроме восточной европы)

Подскажите пожалуйста,можно ли что то зделать для оптимизации и имеет ли смысл покупать более мощьный комп.

Мой комп.

Нужно оптимизировать индикаторы и советник. Имхо конечно.

 
Vinin >>:

Нужно оптимизировать индикаторы и советник. Имхо конечно.

Вы совершенно правы, просто здесь я не выкладываю полностью алгоритм при помощи которого принимаются торговые приказы они основаны не только на свечном анализа.Свечной анализ лишь часть его.

 
Vinin >>:

Нужно оптимизировать индикаторы и советник. Имхо конечно.

Что вы подразумеваете под словом оптимизировать

 
Vinin >>:

Нужно оптимизировать индикаторы и советник. Имхо конечно.

Да чего там - имхо. Код не оптимален, очевидно (имхо))). Не могу себе представить, чтобы какой угодно свечной анализ по своей природе мог тормозить комп. Это же... я даже не знаю что... не автооптимизация на каждом тике (хотя, одно другого не исключает))).

Короче, комп с "абалденным" запасом для работы советника (не для оптимизаций), а вот код... код смотреть нужно. Так сложно что-то сказать.

// для работы подавляющего большинства советников годится самый слабый нетбук - главное, чтоб его начинка Windows запустить позволила, а частоты камня, частоты и задержки памяти и пр. - неважно.

 
intersheff >>:

Что вы подразумеваете под словом оптимизировать

//Виктор, ты не против? )))

Попробуйте воспользоваться поиском по слову "оптимизация". Учебник посмотрите - там точно есть.

===

"оптимизация кода, алгоритма" разумеется. А то про тестер в основном будет.

 
Svinozavr >>:

//Виктор, ты не против? )))

Попробуйте воспользоваться поиском по слову "оптимизация". Учебник посмотрите - там точно есть.

===

"оптимизация кода, алгоритма" разумеется. А то про тестер в основном будет.

Огромное спасибо сейчас посмотрю

 
intersheff >>:

Огромное спасибо сейчас посмотрю

И ещё посмотрите пожалуйста код для одной свечной модели(просто на выбор),может быть я не правильно мыслю на уровне кода.


 
//HHHHHHHHHHHHHHHHHHHHHHHHHHHH       Брошеный младенец на вершине.(дожи белый)  HHHHHHHHHHННННННHHHHHHHHHHHHH       1
/*    
                               Д
                               |
                              =1=
           -------------->     |    <---------------------------------------
   разрыв тенями               Б                             разрыв   тенями                     
           ------->    |               |     <------------------------------
                      ===             ===                 
                      | |             |0|
                      |2|-------------| |-----------------------------------     close 0 < середины 2
                      | |             ===   <-- сигнал
                      ===
                       |               Ч
                       Б 
                       
          Брошеный младенец на вершине.Очень редкий сигнал!!!(дожи белый)                          */    
   
  //     2я  белая                  0я  чёрная                                                   h4 ------------------------- 0
  if(Open_2_h4 < Close_2_h4  && Open_0_h4 > Close_0_h4)
   {//            1я  дожи  белый
   if(Open_1_h4 < Close_1_h4 && WhiteTelo_1_h4 <= doji_h4)
    {  //  1я в отрыве от 2 и 0  тенями
    if(Low_1_h4 > High_2_h4 && Low_1_h4 > High_0_h4)
     {
     if(Close_0_h4 < (Open_2_h4 +WhiteTelo_2_h4/2)-doji_h4)
      {
     ObjectSetText("h4_coment","H4 Брошеный младенец на вершине от  "+DoubleToStr(Open_2_h4 +WhiteTelo_2_h4/2,Digits),10,"Arial",Red);
          GlobalVariableSet("Брош_млад_на_вершине_б_h4_"+Symbol(),-2);
        ObjectSet("Брош_млад_на_вершине_б_h4_"+Symbol(),OBJPROP_PRICE1,Open_2_h4 +WhiteTelo_2_h4/2);  
        ObjectSet("Брош_млад_на_вершине_б_h4_"+Symbol(),OBJPROP_COLOR,Red);
           }     
          }
         }
        }
     else{
     GlobalVariableDel("Брош_млад_на_вершине_б_h4_"+Symbol());
     ObjectDelete("Брош_млад_на_вершине_б_h4_"+Symbol());
     }
//--------------------------------------------------------------------------------------------------------------------------------------------+
   //     2я  белая                  0я  чёрная                                                   d1 ------------------------- 0
  if(Open_2_d1 < Close_2_d1  && Open_0_d1 > Close_0_d1)
   {//            1я  дожи  белый
   if(Open_1_d1 < Close_1_d1 && WhiteTelo_1_d1 <= doji_d1)
    {  //  1я в отрыве от 2 и 0  тенями
    if(Low_1_d1 > High_2_d1 && Low_1_d1 > High_0_d1)
     {
     if(Close_0_d1 < (Open_2_d1 +WhiteTelo_2_d1/2)-doji_d1)
      {
     ObjectSetText("d1_coment","D1 Брошеный младенец на вершине от  "+DoubleToStr(Open_2_d1 +WhiteTelo_2_d1/2,Digits),10,"Arial",Red);
         GlobalVariableSet("Брош_млад_на_вершине_б_d1_"+Symbol(),-2);
        ObjectSet("Брош_млад_на_вершине_б_d1_"+Symbol(),OBJPROP_PRICE1,Open_2_d1 +WhiteTelo_2_d1/2);  
        ObjectSet("Брош_млад_на_вершине_б_d1_"+Symbol(),OBJPROP_COLOR,Red);
           }     
          }
         }
        }
     else{
     GlobalVariableDel("Брош_млад_на_вершине_б_d1_"+Symbol());
     ObjectDelete("Брош_млад_на_вершине_б_d1_"+Symbol());
     }
 
intersheff >>:

Значение некоторых переменных не выставляю,спешу на работу.

 

Из приведенного кода на вскидку:

1. Графические объекты - на порядки замедляют работу. GV тоже медленны.

2. Лог. операции, вложенные if (&&) - где возможно (возможно - видно), убрать вложенность.

НО!!! Дело явно не в этом!!! Это все так - мелочи.

Из фрагмента непонятно, как у вас организован просчет истории. Как советник обращается к вашим индикаторам или м.б. есть вызовы индикаторов из индикаторов.

Скорее всего, дело именно там - в лишних пересчетах на тиках. Т.е. пришел новый тик - весь индюк пересчитывается заново. В учебнике оптимизация алгоритма для этого случая рассмотрена.

В тупую, без серьезных переделок, поможет простое ограничение расчетной истории. Но, поскольку непонятно, как это у вас сделано, с конкретными предложениями напряг.)))

Причина обращения: