|
помогите разобраться |
Todesko
|
Post subject: помогите разобраться |
Post rating: 0
|
Posted: Sat 14 Oct, 2017, 18:04
|
|
User rating: 1
Joined: Sat 14 Oct, 2017, 17:49 Posts: 4 Location: BelarusBelarus
|
Здравствуйте. Не так давно начал осваивать конструктор, прошу помощи в решении задачи - по определённым параметрам робот открывает позицию по закрытию определённой свечи, как сделать так что бы эта позиция была закрыта после закрытия следующей свечи? (тоесть что бы позиция охватывала только одну свечу)
|
|
|
|
![](images/spacer.gif) |
vadim_berezhnoj
|
Post subject: Re: помогите разобраться |
Post rating: 1
|
Posted: Thu 19 Oct, 2017, 12:11
|
|
Visual JForex expert at Dukascopy | ![User avatar](https://www.dukascopy.com/imageserver/img/873577ff108d2548ea46be1cf76852ff/60_3/image.jpg) |
User rating: ∞
Joined: Mon 22 Apr, 2013, 11:30 Posts: 604 Location: UkraineUkraine
|
Добрый день.
В переменной типа Position есть значение Fill Time. К нему можно прибавить время свечи в милисекундах. На пример для 5 min = 5*60*1000 = 300000. И на onTick поставить проверку если время тика больше полученной переменной то закрыть позицию.
|
|
|
|
![](images/spacer.gif) |
valador
|
Post subject: Re: помогите разобраться |
Post rating: 0
|
Posted: Mon 29 Oct, 2018, 10:50
|
|
User rating: 1
Joined: Tue 23 Oct, 2018, 09:13 Posts: 5 Location: Russian Federation, Санкт-Петербург
|
Я бы хотел предложить другой вариант.
На сколько я понимаю механика работы "OnCandle" следующая: весь код в рамках OnCandle выполняется один раз на каждой свече графика на первом тике новой свечи.
Тогда, если в советнике в ветке OnCandle перед кодом открытия позиции поставить условие проверяющее есть ли уже открытая сделка текущим советником, мы сможем код разделить на две части. Первая часть кода (когда сделка ещё не открыта) выполняется как и было задумано автором - открывается сделка. Вторая часть кода (когда сделка уже открыта) - тут создаем ветку с блоком закрытия ранее открытой сделки.
Технически я себе представляю так. В условии проверяем значение Positions Amount из раздела "Positions info" и подраздела "Open Positons". Если Positions Amount меньше 1, то открываем позицию при соблюдении условия для открытия позиции, если равно 1, то закрываем позицию, если больше 1, то это третья ветка на случай, если советник будет работать с несколькими сделками.
Возможно, на случай, если на одном счете используется несколько стратегий, для идентификации сделки понадобится отдельно созданная переменная с типом "position", с предварительным прочтением имеющихся позиций с помощью цикла Positions Viewer (см. Component-Logical) и последующей проверкой переменной с типом position .Commet на соответствие заранее установленное текстовое значение уникальное для вашего советника. Естественно при открытии позиции нужно этим значением заполнять поле "Comment".
Итак, получится следующая последовательность действий советника (например, период графика 1час): 9:00 - проверка наличия ранее открытых сделок текущим советником - сделок нет, поэтому проверка соблюдения условий для открытия сделки - условия соблюдены, поэтому открываем сделку 10:00 - проверка наличия ранее открытых сделок текущим советником - 1 сделка есть, поэтому закрываем эту сделку
По поводу того, как работает Positions Viewer подсказать не смогу, потому как пока сам не до конца в нем разобрался.
|
|
|
|
![](images/spacer.gif) |
Todesko
|
Post subject: Re: помогите разобраться |
Post rating: 0
|
Posted: Sun 02 Dec, 2018, 10:59
|
|
User rating: 1
Joined: Sat 14 Oct, 2017, 17:49 Posts: 4 Location: BelarusBelarus
|
Спасибо за ответы. Буду пробовать
|
|
|
|
![](images/spacer.gif) |
|
Pages: [
1
]
|
|
|
|
|