Помогите!! Не могу закрыть ордер .

 
Обращаюсь к специалистам по программированию, т.к. сам еще новичок. Напишите плиз код для закрытия ордера на цене закрытия текущего бара или на цене открытия следующего.
 
vadim2304 >>:
Обращаюсь к специалистам по программированию, т.к. сам еще новичок. Напишите плиз код для закрытия ордера на цене закрытия текущего бара или на цене открытия следующего.

На самом деле здесь все гораздо тривиальнее.



1. На открытии очередного бара определяете с точностью до пипса цену закрытия бара

2. Если цена закрытия больше цены открытия, то отдаете приказ на покупку, иначе на продажу. (Или наоборот, если Вы - извращенец)

3. Выставляете тейкпрофит на вычисленную в п. 1 цену закрытия бара (Или стоплосс, если Вы - извращенец)


И все, задача решена. Теперь на цене закрытия рынок сам закроет старую позу по тейку (Или по лосю, если Вы - извращенец). Останется только на открытии нового бара выполнить п.п. 1 - 3, чтобы грамотно выставить новую позу.


В общем, суть задачи сводится к точному расчету в п. 1


Как только Вы определитесь с п. 1, то остальную часть, Вам как новичку, любой местный программер напишет за бесплатно. Даже в очередь выстроятся, чтобы написать. И не только за бесплатно, но еще и деньги будут предлагать, чтобы только пройти тендер.


Дерзайте!

 
Reshetov >>:


1. На открытии очередного бара определяете с точностью до пипса цену закрытия бара

2. Если цена закрытия больше цены открытия, то отдаете приказ на покупку, иначе на продажу. (Или наоборот, если Вы - извращенец)

3. Выставляете тейкпрофит на вычисленную в п. 1 цену закрытия бара (Или стоплосс, если Вы - извращенец)



Простите пожалуйста, но по моему это торговля по ГЭПу??????   А мне нужно всего лишь сделать цену закрытия текущего бара стопордером. Может быть использовать функции времени???

 
vadim2304 >>:
Обращаюсь к специалистам по программированию, т.к. сам еще новичок. Напишите плиз код для закрытия ордера на цене закрытия текущего бара или на цене открытия следующего.

Я,  правда не спец. Но как вариант, можно попробовать:

int ExpertBars;//- это вставить в глобальные переменные

int start() {

//здесь делаете то, что вам надо по всем тикам

bool isNewBar=false;
if (ExpertBars !=Bars) {ExpertBars=Bars; isNewBar=true; }
if (isNewBar) { //если есть новый бар

 //всё, что вы хотите делать с появлением нового бара
//суйте сюда !    
             }
//------------------------------
  
   return (0);
}
//------------ конец функции старт-------
 
rid писал(а) >>

Я, правда не спец. Но как вариант, можно попробовать:

Молодец.

 
rid >>:

Я,  правда не спец. Но как вариант, можно попробовать:


Я так вообще чайник ))) Объясните пожалуйста, что и куда мне нужно вставить, если я хочу открыть позиции на новом баре при пересечении 2МА и закрыться на этом же баре????  

bool isNewBar=false;
if (ExpertBars !=Bars) {ExpertBars=Bars; isNewBar=true; }
if (isNewBar) { //если есть новый бар

//всё, что вы хотите делать с появлением нового бара
//суйте сюда !
}

Это можно ставить выше, чем int start() {   ??????

 
vadim2304 >>:

Простите пожалуйста, но по моему это торговля по ГЭПу?????? А мне нужно всего лишь сделать цену закрытия текущего бара стопордером. Может быть использовать функции времени???

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


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


И не только на реале, но и в тестере использовать время не удастся, т.к. тестер игнорирует задержку по Sleep().

 

Интересная идея, но честно говоря я ее просто не понимаю, может опыта пока маловато, а у Вас примеров нет????


 

vadim2304 писал(а) >>


Интересная идея, но честно говоря я ее просто не понимаю, может опыта пока маловато, а у Вас примеров нет????

По п. 1 нет, а остальное в качестве примера см. код от rid

 
vadim2304 >>:

bool isNewBar=false;
if (ExpertBars !=Bars) {ExpertBars=Bars; isNewBar=true; }
if (isNewBar) { //если есть новый бар

//всё, что вы хотите делать с появлением нового бара
//суйте сюда !
}

Это можно ставить выше, чем int start() {   ??????

Это вставляется внутри функции  int start()

 
vadim2304 >>:

Я так вообще чайник ))) Объясните пожалуйста, что и куда мне нужно вставить, если я хочу открыть позиции на новом баре при пересечении 2МА и закрыться на этом же баре????  


Решайте проблемы по мере их поступления. Вам для начала надо хотя бы открыться по ценам открытия баров. 

Сделайте это для начала.

Посмотрите, что получилось. 

А уж потом думайте, как будете закрываться.

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