Хочу чтобы ордер закрылся по мной заданной цене

 
чета у меня неполучается, подскажите как правельно
Код:
extern int price = 1.2935;


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);
}
//+------------------------------------------------------------------+
 
A00007 >>:
чета у меня неполучается, подскажите как правельно

Код:


extern int price = 1.2935;



...


extern double price = 1.2935;

 

Блин неполучается нифига, может надо както диапазон цен установить ? типа 1.32554 +- 0,00009 ?

упростил до:

int start()
{


double price = 1.32554;
//----

OrderClose(OrderTicket(),OrderLots(),price,3,Violet);
Print("Order Closed");



//----
return(0);
}

 

а slippage какой должен быть ?

 
A00007 >>:

double price = 1.32554;

OrderClose(OrderTicket(),OrderLots(),price,3,Violet);

Попробуйте так:

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 > спреда по заявлению разработчиков сервером не воспринимается.

 
A00007 писал(а) >>
чета у меня неполучается, подскажите как правельно

О, месье в извращениях знает толк), через зад это как-то ... Удобнее и правильнее, желаемую цену установить для ордера в качестве ТП или СЛ, а если не позволяет СтопЛевел, сравнивать текущую цену с заданной для закрытия, и по достижении пытаться закрыть с рынка.

 

Сорри, невнимательно ознакомился с постановкой задачи :(

Оказывается и вправду несколько нестандартный подход.

 
Figar0 писал(а) >>

О, месье в извращениях знает толк), через зад это как-то ... Удобнее и правильнее, желаемую цену установить для ордера в качестве ТП или СЛ, а если не позволяет СтопЛевел, сравнивать текущую цену с заданной для закрытия, и по достижении пытаться закрыть с рынка.

Это цена закрытия устанавливается между ценой открытия и 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);
}

 
A00007 писал(а) >>

Это цена закрытия устанавливается между ценой открытия и TP

тоесть если цена не доходит до ТП и разворачивается, то она закрывается скриптом в профите, недойдя до цены открытия и темболее в минус до СЛ

Так как же она может дойтидо ТП, если на пути в засаде ваш скрипт?) В любом случае надо сравнивать не на равенство, а на нестрогое неравенство. Конкретную цену котировки могут и перескочить.

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

 
Figar0 писал(а) >>

Так как же она может дойтидо ТП, если на пути в засаде ваш скрипт?) В любом случае надо сравнивать не на равенство, а на нестрогое неравенство. Конкретную цену котировки могут и перескочить.

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

Скрипт включается, когда текущаяя цена в профите, но есть вероятность что она развернется и не дойдет до ТП, тоесть по сути это стоп лосс профит

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