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

 
Dmitriy2:

код вставляется, не прикрепляется файл 


Внесли исправления.

Попробуйте еще раз.

 
alexvd:

Виснет он из-за бесконечного цикла.

У вас есть единственный выход из цикла - по break. Но брейк у вас возникает при выполнении определенного условия. Один из компонентов

Внутри функции вы каждый раз ЗАНОВО получаете хэндл индикатора и без проверки на готовность данных копируете их.

Предложение.

1. Вынесите переменную хэндла на глобальный уровень.

2. Получайте хэндл индикатора в OnInit (у вас все равно параметры параболика не меняются).

3. Перед тем как скопировать данные из индикаторного буфера проверяйте их готовность (расчитанность) - функция BarsCalculated(Parabolic) вам в помощь.

4. Организуйте выход из цикла, если п. 3 не выполняется.

 

2. Это в тестовом примере не меняется, а на самом деле эта функция используется все время с различными параметрами, поэтому получаю хэндл не в OnInit

3. Хорошо сделаю проверку, просто не очень понимаю смысл зачем это нужно, условие такое, что оно не может не выполниться, серия из точек параболика это ближайшие бары, они однозначно должны закачиваться(и вобще, я так понял история закачивается в тестер за год до указанной даты начала тестирования). Реально это нормально работает. В МQL4 работает и реально и в тестере(правда там не отдельная функция параболика а встроенная...)

 
alexvd:

Внесли исправления.

Попробуйте еще раз.

 

да, получилось, спасибо
 
Dmitriy2:

2. Это в тестовом примере не меняется, а на самом деле эта функция используется все время с различными параметрами, поэтому получаю хэндл не в OnInit

3. Хорошо сделаю проверку, просто не очень понимаю смысл зачем это нужно, условие такое, что оно не может не выполниться, серия из точек параболика это ближайшие бары, они однозначно должны закачиваться(и вобще, я так понял история закачивается в тестер за год до указанной даты начала тестирования). Реально это нормально работает. В МQL4 работает и реально и в тестере(правда там не отдельная функция параболика а встроенная...)

3. По поводу зачем оно нужно уже неоднократно обсуждалось и описано в справке (https://www.mql5.com/ru/docs/series/barscalculated).

Примечание

Функция полезна в тех случаях, когда необходимо получить данные индикатора сразу после его создания (получения хэндла индикатора).

Это как раз Ваш случай.

Индикатор расчитывается на данных баров. Бары-то есть, а вот расчитанных данных может и не быть.

Документация по MQL5: Доступ к таймсериям и индикаторам / BarsCalculated
Документация по MQL5: Доступ к таймсериям и индикаторам / BarsCalculated
  • www.mql5.com
Доступ к таймсериям и индикаторам / BarsCalculated - Документация по MQL5
 
Rosh:
Это означает, что данная позиция является результатом нескольких сделок по данному инструменту. Как следствие, Вы видите средневзвешенную цену позиции.
я думал средневзвешенная цена относиться только к техническим индикаторам.. то то я думаю мне в тестере при прогонах не всегда удаеться поджаться в 0.. иногда несколько центов все ж торчат
 
alexvd:

3. По поводу зачем оно нужно уже неоднократно обсуждалось и описано в справке (https://www.mql5.com/ru/docs/series/barscalculated).

Это как раз Ваш случай.

Индикатор расчитывается на данных баров. Бары-то есть, а вот расчитанных данных может и не быть.

 

Да с BarsCalculated получилось, спасибо

ну и все равно по логике это не правильно, что реально работает а в тестере нет. Нужно что бы все проверки уже в тестер были встроены, и если запрос идет к каким-то данным а их нет, то выдавалась ошибка. А то бары есть, а расчитать данные тестер почему-то не может и молчит... 

 
maryan.dirtyn:
я думал средневзвешенная цена относиться только к техническим индикаторам.. то то я думаю мне в тестере при прогонах не всегда удаеться поджаться в 0.. иногда несколько центов все ж торчат

Средневзвешенная по объему. Например, было три сделки по EURUSD:

Сделка
Объем
 Цена
Buy EURUSD
0.1 лота
1.2800
Buy EURUSD0.2 лота
1.3400
Buy EURUSD0.3 лота
1.2000
Итого:  Long позиция по EURUSD
0.6 лота
?


Имеем в итоге позицию по EURUSD объемом 0.6 лота, но по какой цене?

 
Rosh:

Средневзвешенная по объему. Например, было три сделки по EURUSD:

Сделка
Объем
 Цена
Buy EURUSD
0.1 лота
1.2800
Buy EURUSD0.2 лота
1.3400
Buy EURUSD0.3 лота
1.2000
Итого:  Long позиция по EURUSD
0.6 лота
?


Имеем в итоге позицию по EURUSD объемом 0.6 лота, но по какой цене?

А не проще будет округлить цену до уровня точности валюты на уровне сервера? Ведь по любому советнику придется мучится с подгонкой в точности и ценой за пункт..
 
Interesting:
А не проще будет округлить цену до уровня точности валюты на уровне сервера? Ведь по любому советнику придется мучится с подгонкой в точности и ценой за пункт..
Зачем советнику мучиться? Эта средневзвешенная цена нужна будет для расчетов при закрытии позиции. Советнику она, по большому счету, ни к чему. Закрывать позицию все равно придется по нормальной цене с нужным количеством знаков для данного символа.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
Rosh:
Зачем советнику мучиться? Эта средневзвешенная цена нужна будет для расчетов при закрытии позиции. Советнику она, по большому счету, ни к чему. Закрывать позицию все равно придется по нормальной цене с нужным количеством знаков для данного символа.

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

Проще ведь сразу со стороны сервера нормализацию сделать, раз сервер все равно цену открытия пересчитывает (по крайней мере на мой взгляд).


Кстати, раз речь зашла о средневзвешенной цене и неттенговой платформе.

Насколько я понимаю есть две модели урезки (частичного закрытия) убыточной позиции, которая была ранее долита:

1. Не фиксировать убыток по частичному закрытию, а просто пересчитать цену открытия (если не ошибаюсь так делает ФК);

2. Оставить цену открытия без изменения, зафиксировав убыток.

Подобное качается и переворота убыточных позиций


Хочется узнать мнение разработчиков о том какой способ в конечном счете будет стандартизирован в MT5, если можно почему...