А зачем тестить по ценам открытия если советник работает по тикам?
Ждет закрытия сигнального бара. Давно так делаю для скорости оптимизации. По тикам получите тот-же результат.
Fc=iCustom(NULL,0,"CMx",Fx,kx,L_adx,0,1); Fp=iCustom(NULL,0,"CMx",Fx,kx,L_adx,0,2);
А зачем тестить по ценам открытия если советник работает по тикам?
Ждет закрытия сигнального бара. Давно так делаю для скорости оптимизации. По тикам получите тот-же результат.
Fc=iCustom(NULL,0,"CMx",Fx,kx,L_adx,0,1); Fp=iCustom(NULL,0,"CMx",Fx,kx,L_adx,0,2);
Ну да, ну да, конечно, абсолютно идентичные результаты
Когда нет контроля нового бара, тестить по тикам надо, оптимизировать тоже, хоть и долго. Вот введите ради научного интересу контроль нового бара.
Кроме того оно ещё и лоты неправильно считает, 4051 если ММ выключить. Вот скажите, нафига что-то считать при отключенном ММ если в настройках лот ЗАДАН пользователем???
Замените
double lot=NormalizeDouble(AccountFreeMargin()*Risk/10000.0,2);
if(MM==true)
{
на
double lot=NormalizeDouble(Min_lot,2);
if(MM==true)
{lot=NormalizeDouble(AccountFreeMargin()*Risk/10000.0,2); //Но так лот считать всё равно не очень правильно! Лучше задать цену лота для торгуемой пары с учётом плеча, а не абстрактный коэффициент
А зачем тестить по ценам открытия если советник работает по тикам?
Ждет закрытия сигнального бара. Давно так делаю для скорости оптимизации. По тикам получите тот-же результат.
Fc=iCustom(NULL,0,"CMx",Fx,kx,L_adx,0,1); Fp=iCustom(NULL,0,"CMx",Fx,kx,L_adx,0,2);
Ну да, ну да, конечно, абсолютно идентичные результаты
Когда нет контроля нового бара, тестить по тикам надо, оптимизировать тоже, хоть и долго. Вот введите ради научного интересу контроль нового бара.
Кроме того оно ещё и лоты неправильно считает, 4051 если ММ выключить. Вот скажите, нафига что-то считать при отключенном ММ если в настройках лот ЗАДАН пользователем???
Согласен - недоглядел. Код накидывал быстренько для примера к индикатору.
Замените
double lot=NormalizeDouble(AccountFreeMargin()*Risk/10000.0,2);
if(MM==true)
{
на
double lot=NormalizeDouble(Min_lot,2);
if(MM==true)
{lot=NormalizeDouble(AccountFreeMargin()*Risk/10000.0,2); //Но так лот считать всё равно не очень правильно! Лучше задать цену лота для торгуемой пары с учётом плеча, а не абстрактный коэффициент
Спасибо за отзывы. Думал тишина будет. Данный советник - набросок, и код менять приветствуется. Конкретно для расчета лота, лучше будет мой кусок заменить на библиотеку управления капиталом, коих можно подобрать по вкусу в codebase. Согласитесь для того и существует данный сайт.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
CM_X:
Author: a1ex_n