Ваши вопросы по языку MQL4

vladradon

Программист

Вложения

  • TZZ.png
    TZZ.png
    5,8 КБ · Просмотры: 42
  • TestZigZag.mq4
    TestZigZag.mq4
    4 КБ · Просмотры: 17

1_Lexa

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

Вложения

1_Lexa

Активный участник
Первоначальный, который с ошибками, почему-то торгует лучше
 

Вложения

  • EE07417A-3CA9-4F67-84CB-EAE72A4B3667.jpeg
    EE07417A-3CA9-4F67-84CB-EAE72A4B3667.jpeg
    666,6 КБ · Просмотры: 38
  • D57FC74F-EE31-4F84-86FB-404756711CD0.jpeg
    D57FC74F-EE31-4F84-86FB-404756711CD0.jpeg
    632,2 КБ · Просмотры: 38

vladradon

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

1_Lexa

Активный участник
Смотри на свои скрины - в том, что с ошибками (первоначальный) не выставляются ни стоплоссы, ни тейкпрофиты и все закрытие ордеров идет по окончании тестирования тестером. А в исправленном все торгует согласно алгоритму с расчетом и выставлением стопов и тейков - тут проблема в алгоритме.
Да, я понимаю. Если добавить сетку, то что надо изменить?
 

1_Lexa

Активный участник
Я с другой копии решил начать, только половину прочитал и подредактировал
 

1_Lexa

Активный участник
когда провожу профилирование, показывает, что здесь что то не то. Есть какие нибудь подобных советников?

}
if(((iClose(symb,PERIOD_H1,i) < iOpen(symb,PERIOD_H1,i) && iClose(symb,PERIOD_H1,i) > (iHigh(symb,PERIOD_H1,i)+iLow(symb,PERIOD_H1,i))/2) || (iClose(symb,PERIOD_H1,i) < (iHigh(symb,PERIOD_H1,i)+iLow(symb,PERIOD_H1,i))/2 && iClose(symb,PERIOD_H1,i) == iOpen(symb,PERIOD_H1,i))) && iVolume(symb,Period(),i)>iVolume(symb,Period(),i+1))
{
Support[index] = iClose(symb,PERIOD_H1,i);
for(int sktt = BarsBack-1; sktt>i; sktt--)
{
if(Support[index][sktt] >= iClose(symb,PERIOD_H1,i))
{
Support[index][sktt] = 0;
}
}
 

Ugar

Гуру форума
когда провожу профилирование, показывает, что здесь что то не то. Есть какие нибудь подобных советников?

}
if(((iClose(symb,PERIOD_H1,i) < iOpen(symb,PERIOD_H1,i) && iClose(symb,PERIOD_H1,i) > (iHigh(symb,PERIOD_H1,i)+iLow(symb,PERIOD_H1,i))/2) || (iClose(symb,PERIOD_H1,i) < (iHigh(symb,PERIOD_H1,i)+iLow(symb,PERIOD_H1,i))/2 && iClose(symb,PERIOD_H1,i) == iOpen(symb,PERIOD_H1,i))) && iVolume(symb,Period(),i)>iVolume(symb,Period(),i+1))
{
Support[index] = iClose(symb,PERIOD_H1,i);
for(int sktt = BarsBack-1; sktt>i; sktt--)
{
if(Support[index][sktt] >= iClose(symb,PERIOD_H1,i))
{
Support[index][sktt] = 0;
}
}
Что может показать профилирование, только тормоза. Зачем много раз вызывать одни и те же функции с одинаковыми аргументами? Результат то не меняется. Это всё равно что спрашивать который час 100 раз в секунду.
 

1_Lexa

Активный участник
Что может показать профилирование, только тормоза. Зачем много раз вызывать одни и те же функции с одинаковыми аргументами? Результат то не меняется. Это всё равно что спрашивать который час 100 раз в секунду.
Именно на это и указывает, если удаляю строчку часа, то в другом месте указывает. и так до конца
 

Ugar

Гуру форума
Мне бы пример кода
Я не сторонний всё писать самому вместо подсказывания как надо.
Пример с одной функцией:
double c=iClose(symb,PERIOD_H1,i);
В переменную с записано значение функции iClose(symb,PERIOD_H1,i) . Нет смысла постоянно вызывать эту функцию и грузить её проц. Можно использовать переменную с.
То есть дальше вместо iClose(symb,PERIOD_H1,i) ставим c.
Остальные повторяющиеся функции сделать аналогично.
 

1_Lexa

Активный участник
Я не сторонний всё писать самому вместо подсказывания как надо.
Пример с одной функцией:
double c=iClose(symb,PERIOD_H1,i);
В переменную с записано значение функции iClose(symb,PERIOD_H1,i) . Нет смысла постоянно вызывать эту функцию и грузить её проц. Можно использовать переменную с.
То есть дальше вместо iClose(symb,PERIOD_H1,i) ставим c.
Остальные повторяющиеся функции сделать аналогично.
Спасибо
 

1_Lexa

Активный участник
Только стало еще хуже, все остальное уже не подходит
 

Who has viewed this thread (Total: 3) Посмотреть

Верх