Dukascopy
 
 
Wiki JStore Search Login

помогите разобраться
 Post subject: помогите разобраться Post rating: 0   New post Posted: Sat 14 Oct, 2017, 18:04 

User rating: 0
Joined: Sat 14 Oct, 2017, 17:49
Posts: 4
Location: BelarusBelarus
Здравствуйте. Не так давно начал осваивать конструктор, прошу помощи в решении задачи - по определённым параметрам робот открывает позицию по закрытию определённой свечи, как сделать так что бы эта позиция была закрыта после закрытия следующей свечи? (тоесть что бы позиция охватывала только одну свечу)


 
 Post subject: Re: помогите разобраться Post rating: 1   New post Posted: Thu 19 Oct, 2017, 12:11 
Visual JForex expert at Dukascopy
User avatar

User rating:
Joined: Mon 22 Apr, 2013, 11:30
Posts: 933
Location: Ukraine, Kiev
Добрый день.

В переменной типа Position есть значение Fill Time. К нему можно прибавить время свечи в милисекундах.
На пример для 5 min = 5*60*1000 = 300000.
И на onTick поставить проверку если время тика больше полученной переменной то закрыть позицию.


 
 Post subject: Re: помогите разобраться Post rating: 0   New post Posted: Mon 29 Oct, 2018, 10:50 
User avatar

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 подсказать не смогу, потому как пока сам не до конца в нем разобрался.


 
 Post subject: Re: помогите разобраться Post rating: 0   New post Posted: Sun 02 Dec, 2018, 10:59 

User rating: 0
Joined: Sat 14 Oct, 2017, 17:49
Posts: 4
Location: BelarusBelarus
Спасибо за ответы. Буду пробовать


 

Jump to:  

  © 1998-2011 Dukascopy® Bank SA
On-line Currency forex trading with Swiss Forex Broker - ECN Forex Brokerage,
Managed Forex Accounts, introducing forex brokers, Currency Forex Data Feed and News
Currency Forex Trading Platform provided on-line by Dukascopy.com