а slippage какой должен быть ?
Попробуйте так:
double closeprice; OrderSelect(0,SELECT_BY_POS,MODE_TRADES); RefreshRates(); if(OrderType()==OP_BUY) closeprice = Bid; if(OrderType()==OP_SELL) closeprice = Ask; OrderClose(OrderTicket(),OrderLots(),closeprice,3,CLR_NONE);
slippage можете выставить любой, если 0-й, то будут или реквоты или закрытие по заявленной цене.
Если ненулевой в пределах спреда, то дадите возможность закрыть ДЦ позицию с проскальзыванием
(как правило, по худшей для Вас цене).
Slippage > спреда по заявлению разработчиков сервером не воспринимается.
О, месье в извращениях знает толк), через зад это как-то ... Удобнее и правильнее, желаемую цену установить для ордера в качестве ТП или СЛ, а если не позволяет СтопЛевел, сравнивать текущую цену с заданной для закрытия, и по достижении пытаться закрыть с рынка.
Сорри, невнимательно ознакомился с постановкой задачи :(
Оказывается и вправду несколько нестандартный подход.
О, месье в извращениях знает толк), через зад это как-то ... Удобнее и правильнее, желаемую цену установить для ордера в качестве ТП или СЛ, а если не позволяет СтопЛевел, сравнивать текущую цену с заданной для закрытия, и по достижении пытаться закрыть с рынка.
Это цена закрытия устанавливается между ценой открытия и TP
тоесть если цена не доходит до ТП и разворачивается, то она закрывается скриптом в профите, недойдя до цены открытия и темболее в минус до СЛ
тоесть думаю нужно вот так
в mq4 я ноль, кто разбирается помогите
//---- input parameters
extern double MYprice = 1.32554;
extern int MYOrderTicket = ALL // Все ордера по дефолту, либо номер определенного ордера
int start()
{
int cmd;
int OrderTicket;
double price;
//----
//??Нужно получить текущую цену, если она равна MYprice, значит закрыть по аск или бид в соответствии с ордером SELL или BUY
cmd=OrderType();
if(cmd==OP_BUY || cmd==OP_SELL)
{
while(true)
{
if(cmd==OP_BUY) price=Ask;
else price=Bid;
if(MYOrderTicket != ALL) OrderTicket = MYOrderTicket; //??Проверяем закрыть все или определенный ордер тикет
//Закрываем
OrderClose(OrderTicket(),OrderLots(),price,3,Violet);
Print("Order Closed");
//----
return(0);
}
Это цена закрытия устанавливается между ценой открытия и TP
тоесть если цена не доходит до ТП и разворачивается, то она закрывается скриптом в профите, недойдя до цены открытия и темболее в минус до СЛ
Так как же она может дойтидо ТП, если на пути в засаде ваш скрипт?) В любом случае надо сравнивать не на равенство, а на нестрогое неравенство. Конкретную цену котировки могут и перескочить.
Возьмите обычный цикл перебора и закрытия всех ордеров, например из ветки полезностей от И.Кима. И на пути слепого закрытия вотниките условие сравнивающие заданую цену для закрытия, и текущую. А то что вы пытаетесь нарисовать - это пока пальцем в небо наощупь..
Так как же она может дойтидо ТП, если на пути в засаде ваш скрипт?) В любом случае надо сравнивать не на равенство, а на нестрогое неравенство. Конкретную цену котировки могут и перескочить.
Возьмите обычный цикл перебора и закрытия всех ордеров, например из ветки полезностей от И.Кима. И на пути слепого закрытия вотниките условие сравнивающие заданую цену для закрытия, и текущую. А то что вы пытаетесь нарисовать - это пока пальцем в небо наощупь..
Скрипт включается, когда текущаяя цена в профите, но есть вероятность что она развернется и не дойдет до ТП, тоесть по сути это стоп лосс профит

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
int start()
{
bool result;
double price;
int cmd,error;
//----
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
cmd=OrderType();
//---- first order is buy or sell
if(cmd==OP_BUY || cmd==OP_SELL)
{
while(true)
{
//if(cmd==OP_BUY) price=Ask;
//else price=Bid;
result=OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE);
if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
else error=0;
if(error==135) RefreshRates();
else break;
}
}
}
else Print( "Error when order select ", GetLastError());
//----
return(0);
}
//+------------------------------------------------------------------+