Функция MathRand() - страница 3

 

Вообще, для нахождения оптимального уровня стоп-лосса на каждом стопе я прогонял тестер 100 раз, и думаю, что этого вполне достаточно: визуальная аналоговость полученных средних МО тому подтверждение. Тысяча раз - это наверно перебор. Но прогон переменной Balk необходим лишь для уменьшения погрешности МО. А суть самой программы - в поиске! В поиске максимумов матожидания при изменениях SL или TP.

Так, например, при поиске оптимального стоп-лосса я включаю оптимизатор с такими параметрами:


А при поиске оптимального тейк-профита, картинка перед запуском оптимизации будет выглядеть так:

Здесь ClRandPeriod=600 означает, что в среднем любая новая сделка будет в рынке в течение 10 часов, но это уж как ей повезёт с MathRand().

Take_NotStop=true говорит о том, что участвовать в расчёте будет только тейк-профит. Стоп-лосс при этом установлен не будет (и даже не важно его значение во внешних параметрах).

Take_NotStop=false говорит о том, что участвовать в расчёте будет только стоп-лосс. Тейк-профит при этом установлен не будет (опять же, не важно его значение во внешних параметрах).

Но важно то, чтобы вместе с переменной Balk прогонялась исследуемая величина: SL или TP.

 
coaster >>:

1. Вы на М1 тестировали?

2. Я так понял, что комиссионные Вы самостоятельно уже исключили из полученных результатов. Так ли это?

3. В оптимизаторе у Вас такая картинка была?

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

2. комиссионые учитываются в тестере по умолчанию, как их можно исключить???

3. в оптимизаторе была такая картинка

4. у вас есть такая проверка  if(Volume[0]>1) return(0); я ее убирал и оставлял, на результат она не влияет, а количество сделок и общую прибыль уменьшает, при 1000 прогоне она присутствовала

5. вот примерно такие результаты:

Средняя длительность убыточной сделки в часах.: 72.80

Средняя длительность прибыльной сделки в часах: 324.13


 
blend >>:

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

2. комиссионые учитываются в тестере по умолчанию, как их можно исключить???

3. в оптимизаторе была такая картинка

4. у вас есть такая проверка  if(Volume[0]>1) return(0); я ее убирал и оставлял, на результат она не влияет, а количество сделок и общую прибыль уменьшает, при 1000 прогоне она присутствовала

5. вот примерно такие результаты:

Средняя длительность убыточной сделки в часах.: 72.80

Средняя длительность прибыльной сделки в часах: 324.13

Спасибо. Интересное наблюдение. Мне понравился такой ход событий. Есть над чем подумать.  А вопросы были с целью досконального взаимопонимания.

П.С.

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

 

проиграл 167 раз из 1000, то есть 16,7%, но не слил весь депо ни разу

опять это соотношение 5 к 1, сразу не заметил, хотя по смыслу вроде никак не связаны

 
blend >>:

опять это соотношение 5 к 1, сразу не заметил, хотя по смыслу вроде никак не связаны

Ну что же, Вы подали хорошую идею выявления зависимости математического ожидания от средней продолжительности жизни сделки. В исследовании: (???)SL=0; TP=0; оптимизируем вместе с Balk теперь ClRandPeriod. Результаты, по мере готовности, приведу в виде таблицы. (Хотя уверен, что без стоп-лосса МО будет отрицательным из-за свопов. Значит буду включать и SL в оптимизацию.)

 
coaster >>:

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

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

 

затестил 100 проходов вариант с генерируемым случайно стоплоссом и типом ордера, включая отложенные, с 1.1.1999 по нынешнее время на Н4

случайная комбинация стоплосса и типа ордера не слила ни разу за этот длительный срок депо в 10 000, а общая прибыль и матожидание положительные

система бессистемна кроме присутствующего стоплосса и отсутствующего тейкпрофита, отсюда делаю вывод что график сдвинут в трендовую сторону, а значит трендовые советники обречены на победу, может кто-нибудь иначе думает?

прилагаю тест и код

Файлы:
 

Вот и первая ласточка. Здесь уровень стоп-лосса взят фиксированный и оптимальный по предыдущему тесту: 37 пунктов. Видно, что при торговле в интрадее советник будет испытывать недостаток матожидания:

хотя уже приближаясь к двухсуточному периоду среднего случайного удержания позиции в рынке, советник вполне сможет компенсировать отрицательное матожидание по спреду, равное для EUR/USD двум пунктам. Тестирование проводилось на EUR/USD_M1 для годового ближайшего исторического промежутка времени.

Результаты при удвоенном стоп-лоссе в 74 пункта следуют...

 

Очень плохо, что тестер выдаёт ошибку: ERR_TRADE_TOO_MANY_ORDERS.

И очень плохо, что я обратил на это внимание только сейчас.

Хоть переменная OpRandPeriod и не влияет на матожидание, но точность эксперимента от неё всё-таки зависит.

Вопрос к знатокам: как мне убрать ограничение на количество установленных ордеров?

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


 

Загвоздка здесь в активности торговли. В моём терминале смогли открыться одновременно максимум 4 позиции, поэтому переменную OpRandPeriod обделили в её функциях, и в тестере среднее количество сделок при быстром выходе из рынка оказалось значительно большим (в 5-10 раз) чем среднее количество сделок с более длительным удержанием позиции. К чему это привело: к тому что погрешность определения матожидания увеличилась значительно из-за того что она расчитывается в среднем/на 1(одну) сделку, а вероятность случайного открытия позиции изменилась (уменьшилась) и стала зависимой от времени закрытия ранее открытых позиций.

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

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

Ну ведь хочется заглянуть направо за график! :)

После устранения ошибки стало очевидно, что придётся пересчитывать все результаты. :(

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