большое спасибо за вашу реальную помощь. но все же я не уверен, будет ли это работать или нет (я думаю, что мои функции немного сложны). давайте посмотрим.
первая функция :
функция для получения и сохранения цена открытия последнего ордера только для покупки
double LastOpenForBuy(){ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. int magi.number= 0 ; double orderforbuy;
for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber () == magic.number // my magic number
&& OrderSymbol () == Symbol () // and my pair.
&& OrderType ()==OP_BUY )
{ orderforbuy = OrderOpenprice ();
lastTicket = OrderTicket (); }
return (orderforbuy);}
if(OrderSelect(LastOpenForBuy(), SELECT_BY_TICKET)==true)
{ order for buy= OrderOpenPrice();}
// then something like//
// if ( (( order for buy+ order for sell)/2))<MarketInfo("EURUSD",MODE_BID) )
//close the position
что мне нужно: 1- функция для получения и сохранения цена открытия последнего ордера только для покупки
2- функция для получения и сохранения цены открытия последнего ордера на продажу
3- функция для получения и сохранения цены закрытия последнего ордера, независимо от покупки или продажи
4- функция для получения и сохранения предыдущей цены закрытия перед последним закрытием ордера на покупку или продажу.
LastOpenPrice(OP_BUY) для цены открытия последней покупки.
LastOpenPrice(OP_SELL) для цены открытия последней продажи.
double LastOpenPrice(int OrderType)
{
double OpenPrice;
for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber() == magic.number // my magic number // <------- what Magic Number do you use when you place a trade ? it must match ! !
&& OrderSymbol() == Symbol() // and my pair. // magic.number should be a Globally defined variable that has your Magic Numer
&& OrderType() == OrderType )
{
OpenPrice = OrderOpenprice();
break;
}
return (OpenPrice); // <------- this returns the Order Open Price NOT the ticket
}
double LastClosePrice()
{
double ClosePrice;
for ( int pos = OrdersHistoryTotal()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY) // Only my CLOSED orders
&& OrderMagicNumber() == magic.number // my magic number // <------- what Magic Number do you use when you place a trade ? it must match ! !
&& OrderSymbol() == Symbol() // and my pair. // magic.number should be a Globally defined variable that has your Magic Numer
&& OrderType() < OP_BUYLIMIT )
{
ClosePrice = OrderCloseprice();
break;
}
return (ClosePrice); // <------- this returns the Order Open Price NOT the ticket
}
Я думаю, что вы что-то упускаете, если у него более 1 заказа на одну и ту же пару (и одну и ту же магию), поэтому я думаю, что так будет лучше.
double LastOpenPrice(intOrderType)
{
double OpenPrice;
datetime lastOpen; // First line addedfor ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber() == magic.number // my magic number // <------- what Magic Number do you use when you place a trade ? it must match ! !
&& OrderSymbol() == Symbol() // and my pair. // magic.number should be a Globally defined variable that has your Magic Numer
&& OrderType() == OrderType
&& OrderOpenTime() > lastOpen) // Second line added
{
OpenPrice = OrderOpenprice();
break;
}
return (OpenPrice); // <------- this returns the Order Open Price NOT the ticket
}
Если вести обратный отсчет, то первый ордер, соответствующий магическому числу и символу, будет последним, размещенным для данного эксперта и символа, не так ли?
Я думаю, вы что-то упускаете, если у него более 1 заказа на одну и ту же пару (и одну и ту же магию), поэтому я думаю, что так будет лучше.
ваше мнение
ребята,
Большое спасибо,
Позвольте мне сказать вам, почему я хочу использовать LastOpenPrice(OP_BUY) и LastOpenPrice(OP_SELL), потому что я хочу использовать их в некоторых условиях, таких как
if ( LastOpenPrice(OP_BUY) -LastOpenPrice(OP_SELL)) > 0.0090 // по этой причине мне нужно, чтобы последний ордер был открыт на покупку и последний ордер был открыт на продажу, поэтому мне нужны отдельные последние ордера один на покупку, а другой на продажу.
-----
для double LastClosePrice() // могу ли я использовать if ( OrderType() == OP_BUY || OP_SELL) вместо *** OrderType() < OP_BUYLIMIT*** для получения последнего закрытия, независимо от покупки или продажи.
----
для функции номер 4:
4- функция для получения и сохранения предыдущей цены закрытия перед последним закрытием ордера на покупку или продажу. // я хочу получить закрытый ордер перед последним закрытым ордером на покупку или продажу.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Так почему вы возвращаете номер билета? Прочитайте код, который вы копируете и вставляете, поймите его, изучите...
Я использовал его для следующего
if(OrderSelect(LastOpenTicketForBuy(), SELECT_BY_POS)==true)
{ ордер на покупку = OrderOpenPrice();}
if ((( ордер на покупку+ ордер на продажу)/2))<MarketInfo("EURUSD",MODE_BID) )
закрываем позицию
if(OrderSelect(LastOpenTicketForBuy(), SELECT_BY_POS)==true)
небольшое изменение с вашего разрешения
Уважаемый qjol
большое спасибо за вашу реальную помощь. но все же я не уверен, будет ли это работать или нет (я думаю, что мои функции немного сложны). давайте посмотрим.
первая функция :
функция для получения и сохранения цена открытия последнего ордера только для покупки
2- функция для получения и сохранения цены открытия последнего ордера на продажу3- функция для получения и сохранения цены закрытия последнего ордера, независимо от покупки или продажи4- функция для получения и сохранения предыдущей цены закрытия перед последним закрытием ордера на покупку или продажу.Хорошо, попробуйте это...
Это сделает 1 и 2 ...
LastOpenPrice(OP_BUY) для цены открытия последней покупки.
LastOpenPrice(OP_SELL) для цены открытия последней продажи.
А это...
для 3 ...
хищник
Я думаю, что вы что-то упускаете, если у него более 1 заказа на одну и ту же пару (и одну и ту же магию), поэтому я думаю, что так будет лучше.
твоё мнение
хищник
Я думаю, вы что-то упускаете, если у него более 1 заказа на одну и ту же пару (и одну и ту же магию), поэтому я думаю, что так будет лучше.
ваше мнение
ребята,
Большое спасибо,
Позвольте мне сказать вам, почему я хочу использовать LastOpenPrice(OP_BUY) и LastOpenPrice(OP_SELL), потому что я хочу использовать их в некоторых условиях, таких как
if ( LastOpenPrice(OP_BUY) -LastOpenPrice(OP_SELL)) > 0.0090 // по этой причине мне нужно, чтобы последний ордер был открыт на покупку и последний ордер был открыт на продажу, поэтому мне нужны отдельные последние ордера один на покупку, а другой на продажу.
-----
для double LastClosePrice() // могу ли я использовать if ( OrderType() == OP_BUY || OP_SELL) вместо *** OrderType() < OP_BUYLIMIT*** для получения последнего закрытия, независимо от покупки или продажи.
----
для функции номер 4:
4- функция для получения и сохранения предыдущей цены закрытия перед последним закрытием ордера на покупку или продажу. // я хочу получить закрытый ордер перед последним закрытым ордером на покупку или продажу.
спасибо