Скачать MetaTrader 5

Закрытие части позиции

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Николай
125
Николай  

Имеем следующую ситуацию: есть ордер с тикетом "1", хотим закрыть половину его объема, используем любую из двух методик:

1) открываем ордер "2" половинным объемом в обратную сторону, используем функцию OrderCloseBy, на выходе получаем ордер "3"

2) используем функцию OrderClose и ставим в 2 раза меньший объем, на выходе получаем ордер "2"

Суть вопроса: Как получить тикет ордера котоый получаем на выходе (в первом случае "3", во втором "2), эти функции возвращают только true/false?

Только поиском ордера с самым большим тикетом после совершения операции?

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

Владимир Тезис
4267
Владимир Тезис  
keep87:

Суть вопроса: Как получить тикет ордера котоый получаем на выходе (в первом случае "3", во втором "2), эти функции возвращают только true/false?

Только поиском ордера с самым большим тикетом после совершения операции?

Не обязательно тикетом. Можно отыскать ордер, у которого время открытия самое большое.
Николай
125
Николай  
drknn:
Не обязательно тикетом. Можно отыскать ордер, у которого время открытия самое большое.
Неприемлимо
Владимир Тезис
4267
Владимир Тезис  
keep87:
Неприемлимо

Обоснуйте
Vladyslav Goshkov
2150
Vladyslav Goshkov  
drknn:
Не обязательно тикетом. Можно отыскать ордер, у которого время открытия самое большое.
Лучше открытие по заданной цене и сайз соответствующий и оттуда считать тикет, причем сразу после модификации ордера. ИМХО, конечно же.
mops
5
mops  

Смотри в сторону комента к ордеру. Первичный ордер его не имеет и для второго твоего варианта прикрытия позиции, будет в самый раз - частично прикрытому ордеру, сервак обычно в коменты пишет старый тикет. По поводу OrderCloseBy - ниче сказать не могу, не пробовал такого варианта.

У мну вот проблем-с на ровном месте образовался (спрошу тут, чтоб пачку тем не плодить), не пойму в чем шутка и почему не работает такой вот примитив:

double FindPoint(string Line)
{
double Price_Line = ObjectGetValueByShift(Line,0);

// if (MathAbs(Price_Line-Bid)/Point < Delta)

if(High[0]>=Price_Line>=Low[0])
{
ObjectDelete(Line);
Alert("Цена пересечения: ",Price_Line," Объект уничтожен!");
return(Price_Line);
}
return(0);
}

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

Vladyslav Goshkov
2150
Vladyslav Goshkov  
mops:

Смотри в сторону комента к ордеру. Первичный ордер его не имеет и для второго твоего варианта прикрытия позиции, будет в самый раз - частично прикрытому ордеру, сервак обычно в коменты пишет старый тикет. По поводу OrderCloseBy - ниче сказать не могу, не пробовал такого варианта.

У мну вот проблем-с на ровном месте образовался (спрошу тут, чтоб пачку тем не плодить), не пойму в чем шутка и почему не работает такой вот примитив:

double FindPoint(string Line)
{
double Price_Line = ObjectGetValueByShift(Line,0);

// if (MathAbs(Price_Line-Bid)/Point < Delta)

if(High[0]>=Price_Line>=Low[0])
{
ObjectDelete(Line);
Alert("Цена пересечения: ",Price_Line," Объект уничтожен!");
return(Price_Line);
}
return(0);
}

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

if((High[0]>=Price_Line)&&( Price_Line >=Low[0]) ) Иначе Вы сравниваете результат операции сравнения с числом. В сам алгоритм не вникал.
Николай
125
Николай  
VladislavVG:
if((High[0]>=Price_Line)&&( Price_Line >=Low[0]) ) Иначе Вы сравниваете результат операции сравнения с числом. В сам алгоритм не вникал.


Вторые скобки ни к чему:

if (High[0]>=Price_Line && Price_Line >=Low[0]) { }

Vladyslav Goshkov
2150
Vladyslav Goshkov  
keep87:


Вторые скобки ни к чему:

if (High[0]>=Price_Line && Price_Line >=Low[0]) { }

Это вопрос привычки и веры: не нравится - не ставьте. По мне - так легче читается и всегда правильно выполняется.
Владимир Тезис
4267
Владимир Тезис  
keep87:


Вторые скобки ни к чему:

if (High[0]>=Price_Line && Price_Line >=Low[0]) { }


Ещё как к чему. Поверьте. Вы не знаетет как работает компилятор. Поэтому скобки лучше ставить - это довольно хорошая (читай полезная) привычка.
mops
5
mops  
Сенькью, этот вариант заработал :)
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий