Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 405

 
Leanid Aladzyeu:

Вот код:

 

if(OrderStopLoss()>Ask+(TrailingStop+TrailingStep)*Point)

Вы не учитываете возможный вариант когда OrderStopLoss() равен нулю. А ноль в любом случае будет меньше  выражения Ask+(TrailingStop+TrailingStep)*Point, и условие вернет false. 

 
if((OrderStopLoss()>Ask+(TrailingStop+TrailingStep)*Point)||OrderStopLoss()==0)
Попробуйте, может так получится. Сильно не вникал в код.
 

Спасибо Вам Vitalii Ananev , Vladimir Zubov!

Я пишу советник на основе индикатора RSI, принцип советника будет построен на открытие ордеров по индикатору, НО  и закрытие будет так же по индикатору (именно ценны закрытия я не знаю)

if(OrderType()==OP_BUY && irsa <=20 || irsa >=40  )

                        OrderClose(ticket,Lot,Ask,Slippage,Blue);

                        return(0); 

 

Это условие не выполняется. Почему? (открывает и сразу же закрывает ордер и так по циклу)

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

 
Leanid Aladzyeu:

Как указано в справке дает ошибку.    

Да!? И какую же ошибку выдает? Что пишет компилятор? 

 
Leanid Aladzyeu:

Спасибо Вам Vitalii Ananev , Vladimir Zubov!

Я пишу советник на основе индикатора RSI, принцип советника будет построен на открытие ордеров по индикатору, НО  и закрытие будет так же по индикатору (именно ценны закрытия я не знаю)

if(OrderType()==OP_BUY && irsa <=20 || irsa >=40  )

                        OrderClose(ticket,Lot,Ask,Slippage,Blue);

                        return(0); 

 

Это условие не выполняется. Почему? (открывает и сразу же закрывает ордер и так по циклу)

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

Цена закрытия позиции будет не известна до тех пор пока позиции не будет закрыта. После чего в истории сделок можно будет узнать цену закрытия функция OrderClosePrice().

Открывает и сразу же закрывает позиции потому, что условие закрытия позиций  у вас выполняется. Проверяйте логику условия закрытия позиций. Для начала попробуйте написать так:

if(OrderType()==OP_BUY && (irsa <=20 || irsa >=40))
{
  OrderClose(ticket,Lot,Ask,Slippage,Blue);

 return(0); 
}

 Почитайте справку о приоритете вычислений логических выражений. 

" потребуется высчитать среднюю,большую и меньшую  цену по всем ордерам в рынке" - Не понял о какой цене идет речь? Цене открытия ордера? Текущей цене валютной пары? Цене когда совокупная прибыль по всем открытым позициям достигнет без убытка?

 
Tapochun:

Да!? И какую же ошибку выдает? Что пишет компилятор? 

Простите нету ошибки, Но метод из образца мне не подходит(с тралингом ошибки сыпятся)
 
Vitalii Ananev:

Цена закрытия позиции будет не известна до тех пор пока позиции не будет закрыта. После чего в истории сделок можно будет узнать цену закрытия функция OrderClosePrice().

Открывает и сразу же закрывает позиции потому, что условие закрытия позиций  у вас выполняется. Проверяйте логику условия закрытия позиций. Для начала попробуйте написать так:

 Почитайте справку о приоритете вычислений логических выражений.

Ну а как быть в к примеру с сеткой , там нужно  общий ТР или (и) общ. Цену . 

Может есть какой буфер(а) куда сохранять цену  или в самом индикаторе еможет есть буфер где хранится цена открытия посл. ордера (а оттуда можно было бы брать и сохранять в наш общий буфер)

 
Leanid Aladzyeu:

Ну а как быть в к примеру с сеткой , там нужно  общий ТР или (и) общ. Цену . 

Может есть какой буфер(а) куда сохранять цену  или в самом индикаторе еможет есть буфер где хранится цена открытия посл. ордера (а оттуда можно было бы брать и сохранять в наш общий буфер)

Рекомендую начать изучать язык с учебника Ковалева (должен быть на сайте). Он, конечно, немного устарел, но в совокупности с документацией все будет ок!
 
Leanid Aladzyeu:

Спасибо Вам Vitalii Ananev , Vladimir Zubov!

Я пишу советник на основе индикатора RSI, принцип советника будет построен на открытие ордеров по индикатору, НО  и закрытие будет так же по индикатору (именно ценны закрытия я не знаю)

if(OrderType()==OP_BUY && irsa <=20 || irsa >=40  )

                        OrderClose(ticket,Lot,Ask,Slippage,Blue);

                        return(0); 

 

Это условие не выполняется. Почему? (открывает и сразу же закрывает ордер и так по циклу)

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

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

или вы привыкли методом научного тыка? 

 

 
Leanid Aladzyeu:

Ну а как быть в к примеру с сеткой , там нужно  общий ТР или (и) общ. Цену . 

Может есть какой буфер(а) куда сохранять цену  или в самом индикаторе еможет есть буфер где хранится цена открытия посл. ордера (а оттуда можно было бы брать и сохранять в наш общий буфер)

Вам надо вычислить среднюю цену открытия всех позиций. И исходя из этого уже рассчитывать общий тейкпрофит для всех  позиций. Цена открытия позиций известна (OrderOpenPrice()). Сложите все и поделите на кол-во открытых позиций.
Причина обращения: