Коллеги, подскажите:
Есть 2-5 сделок Sell и 1 Buy.
Получаю новый сигнал Sell, нужно решить - лучше цена по новому сигналу или хуже уже открытых (новый Sell должен быть выше открытых ранее). Лучше - открываю Sell.
Аналогично для Buy.
Как правильно осуществить проверку?
Уточните - Вы хотите произвести поиск среди всех ПОЗИЦИЙ или нужен поиск по сделкам в истории?
Только среди открытых позиций:
- для нового сигнала Sell - ищу среди открытых на данный момент коротких (Sell) позиций
- для нового сигнала Buy - среди открытых на данный момент длинный (Buy) позиций
Тогда такая функция:
{
//--- обнулим цены - мало-ли какое там занчение пришло :)
up_price=0.0;
down_price=0.0;
int count=0;
for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
if(m_position.PositionType()==pos_type) // gets the position type
{
double price_open=m_position.PriceOpen();
if(count==0)
{
up_price=down_price=price_open;
continue;
}
if(price_open>up_price)
up_price=price_open;
if(price_open<down_price)
down_price=price_open;
count++;
}
}
Перед её вызовом нужно объявить две переменные - для самой высокой и для самой низкой цены. В функцию, кроме этого нужно передать тип позиции, для которой Вы ищите цены
То есть функция ищет самую высокую и самую низкую цену среди того типа позиций, который Вы её сообщите.
Тогда такая функция:
{
//--- обнулим цены - мало-ли какое там занчение пришло :)
up_price=0.0;
down_price=0.0;
int count=0;
for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
if(m_position.PositionType()==pos_type) // gets the position type
{
double price_open=m_position.PriceOpen();
if(count==0)
{
up_price=down_price=price_open;
continue;
}
if(price_open>up_price)
up_price=price_open;
if(price_open<down_price)
down_price=price_open;
count++;
}
}
Перед её вызовом нужно объявить две переменные - для самой высокой и для самой низкой цены. В функцию, кроме этого нужно передать тип позиции, для которой Вы ищите цены
То есть функция ищет самую высокую и самую низкую цену среди того типа позиций, который Вы её сообщите.
Владимир, благодарю! Сейчас попробую, отпишусь ...
Владимир, благодарю! Сейчас попробую, отпишусь ...
Тогда такая функция:
{
//--- обнулим цены - мало-ли какое там занчение пришло :)
up_price=0.0;
down_price=0.0;
int count=0;
for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
if(m_position.PositionType()==pos_type) // gets the position type
{
double price_open=m_position.PriceOpen();
if(count==0)
{
up_price=down_price=price_open;
continue;
}
if(price_open>up_price)
up_price=price_open;
if(price_open<down_price)
down_price=price_open;
count++;
}
}
Перед её вызовом нужно объявить две переменные - для самой высокой и для самой низкой цены. В функцию, кроме этого нужно передать тип позиции, для которой Вы ищите цены
То есть функция ищет самую высокую и самую низкую цену среди того типа позиций, который Вы её сообщите.
Владимир, добрый день!
Был в отъезде, только сел за работу.
Я правильно понял - вы скинули код для MQL5? Я сову на 4-ке пишу.
Владимир, добрый день!
Был в отъезде, только сел за работу.
Я правильно понял - вы скинули код для MQL5? Я сову на 4-ке пишу.
Да, код для MQL5.
Вопросы по старому терминалу пожалуйста задавайте в разделе: MQL4 и MetaTrader 4
Да, код для MQL5.
Вопросы по старому терминалу пожалуйста задавайте в разделе: MQL4 и MetaTrader 4
Владимир, я думал что по роботам на MQL4 сюда тоже можно и забыл в топике указать про 4-ку.
А вы можете подсказать как эта функция на 4-ке будет выглядеть?
Владимир, я думал что по роботам на MQL4 сюда тоже можно и забыл в топике указать про 4-ку.
А вы можете подсказать как эта функция на 4-ке будет выглядеть?
Я не консультирую по старому терминалу. Подсказывать по старому терминалу это всё равно, что продлевать медленную смерть обреченному, а я не изверг :)
я смогу перейти на 5-ку не ранее чем через полгода :-(
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Коллеги, подскажите:
Есть 2-5 сделок Sell и 1 Buy.
Получаю новый сигнал Sell, нужно решить - лучше цена по новому сигналу или хуже уже открытых (новый Sell должен быть выше открытых ранее). Лучше - открываю Sell.
Аналогично для Buy.
Как правильно осуществить проверку?