Не соответствуют сигналы советника и индикатора

 

Доброго времени суток всем форумчанам!

Я решил попробовать написать для себя советника, как можно проще, но в то же время максимально настраиваемого. Написал, протестил, работает вроде, но много ложных сигналов, даже после оптимизации параметров точки входа не идеально расположены, как видно на скриншоте.

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

Дикость какая-то, подбираю параметры индикатора чтобы сигналы на торговлю красивые были, ввожу эти параметры в тестер стратегий и фигушки, торгует совсем не там где сигналы на экране, да ещё и сливает на раз... Ну и наоборот параметры полученные после оптимизации вписываю в настройки индикатора, с тем же "успехом" :(

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



 

Другими словами: мне лень разбираться со своим кодированием, т.к. оно безошибочное, а вот платформа бракованная (выполняет мой код с ошибками). Мало того, Вы своё время цените, а "более опытных" нет: пусть они найдут все мои ошибки - им же всё равно делать нечего!

===

Вы же хотите на рынке денег заработать (иначе зачем разрабатывать торговые стратегии), а вдруг не получится? Кто тогда будет виноват - рынок?

===

Не обижайтесь, но Вам нужно самому во всём разобраться. Удачи!

 
evillive:

Доброго времени суток всем форумчанам!

Я решил попробовать написать для себя советника, как можно проще, но в то же время максимально настраиваемого. Написал, протестил, работает вроде, но много ложных сигналов, даже после оптимизации параметров точки входа не идеально расположены, как видно на скриншоте.

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

Дикость какая-то, подбираю параметры индикатора чтобы сигналы на торговлю красивые были, ввожу эти параметры в тестер стратегий и фигушки, торгует совсем не там где сигналы на экране, да ещё и сливает на раз... Ну и наоборот параметры полученные после оптимизации вписываю в настройки индикатора, с тем же "успехом" :(

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




Для корректной работы надо переделать логику индикатора, да и советника тоже.
 
Vinin:

Для корректной работы надо переделать логику индикатора, да и советника тоже.

Оччень ценный ответ, как в том анекдоте про сломанную машину :)))

Переделывал, и в соответстии с учебником, и по своему разумению, результат всё тот же. Начинаю подозревать что это всё-таки платформа или ДЦ...

 
DC2008:

Другими словами: мне лень разбираться со своим кодированием, т.к. оно безошибочное, а вот платформа бракованная (выполняет мой код с ошибками). Мало того, Вы своё время цените, а "более опытных" нет: пусть они найдут все мои ошибки - им же всё равно делать нечего!

===

Вы же хотите на рынке денег заработать (иначе зачем разрабатывать торговые стратегии), а вдруг не получится? Кто тогда будет виноват - рынок?

===

Не обижайтесь, но Вам нужно самому во всём разобраться. Удачи!



пришел, обосрал, ушел, называется... На этом советнике вряд ли заработаешь, я программированию на МQL4 учусь, но пока учебник в этом вопросе не помогает, там только общие сведения
 
evillive:

Оччень ценный ответ, как в том анекдоте про сломанную машину :)))

Переделывал, и в соответстии с учебником, и по своему разумению, результат всё тот же. Начинаю подозревать что это всё-таки платформа или ДЦ...

Начинайте подозревать собственную некомпетентность. Эти коды работать не должны.

Скажите, а Вы как понимаете Вот эти куски кода ?

double force0 = iForce(NULL,0,fp,MODE_SMA,PRICE_CLOSE,0);



double cci = iCCI(NULL,0,ccip,PRICE_CLOSE,0);

// это из индиатора

 for (shift = loopbegin; shift >= 0 ;shift--)
        {
         double force0 = iForce(NULL,0,fp,MODE_SMA,PRICE_CLOSE,shift);
         double force1 = iForce(NULL,0,fp,MODE_SMA,PRICE_CLOSE,shift+1);
    double cci = iCCI(NULL,0,ccip,PRICE_CLOSE,shift);


Поясняйте прямо в этой ветке.. Это конечно, если хотите разобраться почему эти коды работать не должны...

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

 
VladislavVG:

Начинайте подозревать собственную некомпетентность. Эти коды работать не должны.

Скажите, а Вы как понимаете Вот эти куски кода ?


Поясняйте прямо в этой ветке.. Это конечно, если хотите разобраться почему эти коды работать не должны...

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




ЭТО коды из разных файлов, почему-то Вы их обьединили в один исходник и говорите что они работать не будут. Конечно в таком виде не будут :)))

Индикатор как раз работает нормально с переборкой вызываемых индикаторов Форс, Демаркер и Коммодити в цикле, проверял, а вот советник далеко не всегда торгует по сигналам индикатора, хотя совпадения бывают, 1:5 примерно.

В советнике поначалу тоже вызов индикаторов в цикл вписал, но разницы в работе по сравнению с нынешним кодом не заметил.

 
evillive:

....


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

Хотя возможно, что индикатор слегка перерисовывается, логику организации в нем рассчетов я так до конца и не понял, тогда несоответствие может сохраниться.

 

Figar0:



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

Хотя возможно, что индикатор слегка перерисовывается, логику организации в нем рассчетов я так до конца и не понял, тогда несоответствие может сохраниться.



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

Пишу

double order = iCustom(NULL,0,"iCCIforce","fp","dmp","dm1","dm2","ccip","cci1","cci2",2,0); компилер ругается на отсутствие нужных скобок...

А если пишу double order = iCustom(NULL,0,"iCCIforce",fp,dmp,dm1,dm2,ccip,cci1,cci2,2,0); так он кроме скобок ещё и на параметры ругается...

 

Вы пробывали вызов индикатора в эксперте через iCustom?

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

int shift=0, prevbars=0, loopbegin=0;
if (Bars < prevbars ) first = true;
if (Bars-prevbars>1) first = true;
prevbars = Bars;
if (first)
{
// loopbegin prevent couning of counted bars exclude current
loopbegin = Bars-1;
if (loopbegin < 0) return(0); // not enough bars for counting
first = False;
}
loopbegin = loopbegin+1;
// current bar is to be recounted too
for (shift = loopbegin; shift >= 0 ;shift--)
{

}

 
evillive:


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

Что вам конкретно не ясно в iCustom? Опишите более доходчиво.
Причина обращения: