Советники: Мультивалютный советник на основе кластерного индикатора. Вторая версия - страница 2

 

Спасибо. приступил к тестированию на 4 часах. на альпари с параметрами индикатора CCFp - 3,6,2,3.

Предыдущая версия советника в моей модификации еще трепещится и даже вывела баланс в плюс.

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

Относительно NZD - на альпари и на форекс4ю - по нему только сбританцем нет кросса, остальные есть... У себя я его включил в этой версии советника

 

Как бы отключить еще канадца на нем спрэд с австрийцем 10 и в плюс практически не выходит, закрывает сделку по смене сигнала, все тянет в убыток.

Всё вроде разобрался... отключил

 
Chipito:

Господа, кто может подсказать, в чем причина такого поведения.

Не могу даже просто запустить для теста


И при тесте еще пишет, что торговля по инструменту ###### запрещена.


Это ошибки индикатора. они не принципиальны, небольшие косяки в самой логике построения линий. Переписывать с нуля индюк у меня желания нет. Можете попробовать обратится к автору индюка. Дело в том что индикатор пытается создать легенду в еще не созданном окне. При инициализации. После первого же тика эти ошибки пропадают.

Никакого влияния на работу советника они не оказывают, можете просто не обращать на них внимания.

По поводу второй ошибки. Я же написал в описании, что ввел функцию проверки наличия инструмента на конкретном ДЦ. данные сообщения означают, что ваш ДЦ не предоставляет торговли по какой либо паре, которую пытается открыть советник.

 
Sdimm:

Как бы отключить еще канадца на нем спрэд с австрийцем 10 и в плюс практически не выходит, закрывает сделку по смене сигнала, все тянет в убыток.

Всё вроде разобрался... отключил


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

Отключение валют в индикаторе - не оказывает никакого влияния на советник. Если только не отключать их прямо в коде индикатора и не перекомпилировать индюк в таком виде.

Однако, если сделать таким образом - нарушится логика заключения сделок. Т.к. Валютные пары по которым надо открывать позы - забиты в советник именно с учетом того порядка валют, которые и есть в индикаторе (т.е. ВСЕ валюты за исключением NZD). и если вырубить какую то валюту из середины - результат будет непредсказуем. будут открываться совсем не те позы на которые показывает индикатор.

 

Хотя нет... прошу прощения за предыдущий пост.

Глянул в индюк. Запросто можно отключать валюты в индюке и в таком виде его компилить... тогда советник не будет открывать позы по данным валютам. 

ну или прямо в советнике закоментить нежелательные пары в функции oper_up

Возможно позже доделаю функцию отключения конкретных пар... Просто комбинаций очень много.. Работа муторная:)

 
lexandros:

Хотя нет... прошу прощения за предыдущий пост.

Глянул в индюк. Запросто можно отключать валюты в индюке и в таком виде его компилить... тогда советник не будет открывать позы по данным валютам.

ну или прямо в советнике закоментить нежелательные пары в функции oper_up

Возможно позже доделаю функцию отключения конкретных пар... Просто комбинаций очень много.. Работа муторная:)

есть вопрос бросил в личку

 

Lexandros

Поясните пожалуйста. Из этого кода на основании какого индикатора принимается окончательное решение для открытия сделки?

for (x=0;x<7;x++)
   {
   for (y=0;y<7;y++)
      {
      if (ccfp[x,1]==ccfp[y,1])continue;
      if (ccfp[x,0]-ccfp[y,0]>step&&ccfp_old[x,0]-ccfp_old[y,0]<=step&&ccfp[x,0]>ccfp_old[x,0]&&ccfp[y,0]<ccfp_old[y,0]&&cc[x,0]-cc[y,0]>step&&cc[x,0]>cc_old[x,0]&&cc[y,0]<cc_old[y,0]) {open=true; oper_up(ccfp[x,1],ccfp[y,1],lot[0],stop,profit,close,open,magicnumber);}
      if (cc[x,0]-cc[y,0]>step&&cc_old[x,0]-cc_old[y,0]<=step&&cc[x,0]>cc_old[x,0]&&cc[y,0]<cc_old[y,0]&&ccfp[x,0]-ccfp[y,0]>step&&ccfp[x,0]>ccfp_old[x,0]&&ccfp[y,0]<ccfp_old[y,0]) {open=true;oper_up(cc[x,1],cc[y,1],lot[0],stop,profit,close,open,magicnumber);}
      if (ccfp[x,0]-ccfp[y,0]>step&&ccfp_old[x,0]-ccfp_old[y,0]<=step) {open=false; oper_up(ccfp[x,1],ccfp[y,1],lot[0],stop,profit,close,open,magicnumber);}
      if (cc[x,0]-cc[y,0]>step&&cc_old[x,0]-cc_old[y,0]<=step) {open=false;oper_up(cc[x,1],cc[y,1],lot[0],stop,profit,close,open,magicnumber);}
      }
   }
 
evbut:

Lexandros

Поясните пожалуйста. Из этого кода на основании какого индикатора принимается окончательное решение для открытия сделки?

for (x=0;x<7;x++)
   {
   for (y=0;y<7;y++)
      {
      if (ccfp[x,1]==ccfp[y,1])continue;
      if (ccfp[x,0]-ccfp[y,0]>step&&ccfp_old[x,0]-ccfp_old[y,0]<=step&&ccfp[x,0]>ccfp_old[x,0]&&ccfp[y,0]<ccfp_old[y,0]&&cc[x,0]-cc[y,0]>step&&cc[x,0]>cc_old[x,0]&&cc[y,0]<cc_old[y,0]) {open=true; oper_up(ccfp[x,1],ccfp[y,1],lot[0],stop,profit,close,open,magicnumber);}
      if (cc[x,0]-cc[y,0]>step&&cc_old[x,0]-cc_old[y,0]<=step&&cc[x,0]>cc_old[x,0]&&cc[y,0]<cc_old[y,0]&&ccfp[x,0]-ccfp[y,0]>step&&ccfp[x,0]>ccfp_old[x,0]&&ccfp[y,0]<ccfp_old[y,0]) {open=true;oper_up(cc[x,1],cc[y,1],lot[0],stop,profit,close,open,magicnumber);}
      if (ccfp[x,0]-ccfp[y,0]>step&&ccfp_old[x,0]-ccfp_old[y,0]<=step) {open=false; oper_up(ccfp[x,1],ccfp[y,1],lot[0],stop,profit,close,open,magicnumber);}
      if (cc[x,0]-cc[y,0]>step&&cc_old[x,0]-cc_old[y,0]<=step) {open=false;oper_up(cc[x,1],cc[y,1],lot[0],stop,profit,close,open,magicnumber);}
      }
   }


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

Поэтому в данном случае сделано так.

Первые два условия - сигналы на открытие и закрытие.

Если ссфп пересекается и в то же время на сс эти валюты расположены так же и кроме того линии должны идти вверх и вниз соответственно (т.е. идти в разбег) на обоих индикаторах - есть сигнал.

Аналогично если сс пересекается и на ссфп валюты расположены соответственно и линии идут в разбег - также есть сигнал.

При таких сигналах - происходит закрытие существующих поз в другом направлении(если они есть) и потом открытие поз в соответствии с сигналами.

Последние 2 условия - сигналы только на закрытие. Если на любом из индюков валюты пересекаются, а на другом индюке валюты не в том порядке - то идет сигнал только на закрытие (если есть соответствующие позы), открытия в таком случае не происходит, а только закрываются позы.

 
lexandros:
evbut:

Lexandros

Поясните пожалуйста. Из этого кода на основании какого индикатора принимается окончательное решение для открытия сделки?

for (x=0;x<7;x++)
   {
   for (y=0;y<7;y++)
      {
      if (ccfp[x,1]==ccfp[y,1])continue;
      if (ccfp[x,0]-ccfp[y,0]>step&&ccfp_old[x,0]-ccfp_old[y,0]<=step&&ccfp[x,0]>ccfp_old[x,0]&&ccfp[y,0]<ccfp_old[y,0]&&cc[x,0]-cc[y,0]>step&&cc[x,0]>cc_old[x,0]&&cc[y,0]<cc_old[y,0]) {open=true; oper_up(ccfp[x,1],ccfp[y,1],lot[0],stop,profit,close,open,magicnumber);}
      if (cc[x,0]-cc[y,0]>step&&cc_old[x,0]-cc_old[y,0]<=step&&cc[x,0]>cc_old[x,0]&&cc[y,0]<cc_old[y,0]&&ccfp[x,0]-ccfp[y,0]>step&&ccfp[x,0]>ccfp_old[x,0]&&ccfp[y,0]<ccfp_old[y,0]) {open=true;oper_up(cc[x,1],cc[y,1],lot[0],stop,profit,close,open,magicnumber);}
      if (ccfp[x,0]-ccfp[y,0]>step&&ccfp_old[x,0]-ccfp_old[y,0]<=step) {open=false; oper_up(ccfp[x,1],ccfp[y,1],lot[0],stop,profit,close,open,magicnumber);}
      if (cc[x,0]-cc[y,0]>step&&cc_old[x,0]-cc_old[y,0]<=step) {open=false;oper_up(cc[x,1],cc[y,1],lot[0],stop,profit,close,open,magicnumber);}
      }
   }


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

Поэтому в данном случае сделано так.

Первые два условия - сигналы на открытие и закрытие.

Если ссфп пересекается и в то же время на сс эти валюты расположены так же кроме того линии должны идти вверх и вниз соответственно на обоих индикаторах - есть сигнал.

Аналогично если сс пересекается и на ссфп валюты расположены соответственно - также есть сигнал.

При таких сигналах - происходит закрытие существующих поз в другом направлении(если они есть) и потом открытие поз в соответствии с сигналами.

Последние 2 условия - сигналы только на закрытие. Если на любом из индюков валюты пересекаются, а на другом индюке валюты не в том порядке - то идет сигнал только на закрытие (если есть соответствующие позы), открытия в таком случае не происходит, а только закрываются позы.

как, по-вашему, будет вести себя советник на этих участках?


 
evbut:

как, по-вашему, будет вести себя советник на этих участках?



никак... т.к. в обведенных участках пересечений нет ни на одном индикаторе

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