Ошибки, баги, вопросы - страница 3540

 
fxsaber #:

Баланс может увеличиваться при слабо меняющемся эквити.

Может.

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

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

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

 
Aleksey Vyazmikin #:

Как вариант

Просто всегда для оценки DD брать надо только показатель Equity. Есть же сервисы мониторинга, которые именно так и делают.
 
Vladislav Boyko #:

Что делать, если нет исходника индикатора?

Написать новый.

Это реальная ситуация или поболтать?

 
fxsaber #:
Просто всегда для оценки DD брать надо только показатель Equity. Есть же сервисы мониторинга, которые именно так и делают.

На какую дату брать показатель в 100%? Что он символизирует?

 
Alexey Viktorov #:

Во входные параметры ресурсного индикатора добавьте ТФ на котором нужно получать новый бар и контролируйте именно этот ТФ непосредственно в ресурсном индикаторе. И в iCustom() обязательно укажите это. Тогда получите заполнение буфера в момент первого тика нового бара.

В вызывающем индикаторе можете контролировать любой, наверное только младший, ТФ на новый бар. Старший ТФ надо проверять как будет работать…

Вот добавил в вызывающий индикатор:

handleResource = iCustom(Symbol(), inpTimeFrame, pathInd, inpTimeFrame);

В ресурсный - входный параметр:

input ENUM_TIMEFRAMES   inpTimeFrame    = PERIOD_M15;           // TimeFrame

В OnCalculate перд заполнением буфера два варианта проверки нового бара по time[] и iTime():

  isNewBar(time);
  if(!isNewBarItime(inpTimeFrame)) return rates_total;


И все равно CopyBuffer() вызывается до появления нового бара.



Исходники прилагаю.

Что не так делаю?

Файлы:
 
Aleksey Vyazmikin #:

На какую дату брать показатель в 100%? Что он символизирует?

Любой положительный числовой массив всегда обладает MaxDD-характеристикой.

Хотите MaxDD с начала жизни счете - формируйте Equity-массив с момента его открытия. C момента включения в мониторинг - аналогично.

 
Alexey Viktorov #:

Во входные параметры ресурсного индикатора добавьте ТФ на котором нужно получать новый бар и контролируйте именно этот ТФ непосредственно в ресурсном индикаторе. И в iCustom() обязательно укажите это. Тогда получите заполнение буфера в момент первого тика нового бара.

В вызывающем индикаторе можете контролировать любой, наверное только младший, ТФ на новый бар. Старший ТФ надо проверять как будет работать

Проверил, когда вызывающий индикатор имеет старший ТФ, а ресурсный - младший ТФ, там действительно CopyBuffer() получает данные с младшего бара заранее.

Хотя я не знаю, почему вы именно так проверяли, все мои примеры были о получении данных со старшего ТФ.

Дождусь вашего ответа, если не увидите вариантов решения по вызову CopyBuffer() со старшего ТФ, вернусь в ветку с текущим билдом об актуальности проблемы.

 
fxsaber #:

Любой положительный числовой массив всегда обладает MaxDD-характеристикой.

Хотите MaxDD с начала жизни счете - формируйте Equity-массив с момента его открытия. C момента включения в мониторинг - аналогично.

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

Идея дать пользователю разные варианты расчета просадки интересная.

 
Vasiliy Pushkaryov #:

Проверил, когда вызывающий индикатор имеет старший ТФ, а ресурсный - младший ТФ, там действительно CopyBuffer() получает данные с младшего бара заранее.

Хотя я не знаю, почему вы именно так проверяли, все мои примеры были о получении данных со старшего ТФ.

Дождусь вашего ответа, если не увидите вариантов решения по вызову CopyBuffer() со старшего ТФ, вернусь в ветку с текущим билдом об актуальности проблемы.

Я тоже поэкспериментировал. Получается, что надо контролировать новый бар в обоих индикаторах по одному ТФ. А зачем вы усложняете код ненужным циклом пока ещё не добились результата? Лучше сделайте печать показания только нового бара из обоих индикаторов. И зачем в печать поставили __FUNCTION__ ? Чтобы было трудней понять откуда эта распечатка?

И ещё вопрос: Какой такой смысл в переворачивании массивов? Сколько я не спрашивал, ответ один «я так привык»… Неправильно это. Привычки можно иногда менять. В детстве до определённого возраста никто не курит. Привычка… Потом поменял привычку, курит. Потом ещё раз решил поменять привычку, бросил курить. Хорошая привычка.

А если один из массивов забыл перевернуть? Представляете на сколько трудноуловима такая ошибка?

 
Aleksey Vyazmikin #:

На какую дату брать показатель в 100%? Что он символизирует?

А размер депозита на какую дату брать? Что он символизирует?