Возвращает значение цены закрытия позиции при достижении уровня убыточности (stop loss) для текущего выбранного ордера.
OP_BUY - позиция на покупку, OP_SELL - позиция на продажу, OP_BUYLIMIT - отложенный ордер на покупку по достижении заданного уровня, текущая цена выше уровня, OP_BUYSTOP - отложенный ордер на покупку по достижении заданного уровня, текущая цена ниже уровня, OP_SELLLIMIT - отложенный ордер на продажу по достижении заданного уровня, текущая цена ниже уровня, OP_SELLSTOP - отложенный ордер на продажу по достижении заданного уровня, текущая цена выше уровня. Ордер должен быть предварительно выбран с помощью функции OrderSelect(). |
Спасибо. А вот так как?
//+------------------------------------------------------------------+
//| NumberOfPositions.mq4 |
//| Copyright © 2008, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
WhatOpen();
//----
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Версия : 19.02.2008 |
//| Описание : Возвращает количество позиций. |
//+------------------------------------------------------------------+
int NumberOfPositionsBuy(string sy="", int op=-1, int mn=-1){
int i, k=OrdersTotal(), kp=0; if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) kp++;
}}}}} return(kp);}
//+------------------------------------------------------------------+
int NumberOfPositionsSell(string sy="", int op=-1, int mn=-1){
int i, k=OrdersTotal(), kp=0; if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) kp++;
}}}}} return(kp);}
//+------------------------------------------------------------------+
int WhatOpen() // Функция проверки наличия открытых ордеров.
// Возвращает: Long-1, Short-2, Null-0.
{int WO=0;
if (NumberOfPositionsBuy()==1)
WO=1;
if (NumberOfPositionsSell()==1)
WO=2;
return(WO);
}
//+------------------------------------------------------------------+
Фунция WhatOpen(); у тебя типа int, а она у тебя вверху просто написана, ты ее значение присвой какой либо переменной, например int a = WhatOpen(); И зачем она вообще нужна, OrderTotal итак вычисляет количество открытых ордеров. Далее тип string лучше обнуляй не кавычками, а так string sy=NULL. Лучше просто напиши что это все должно делать, тут без ста грамм не разобраться..
Да...ничего особенного просто хочу на стоп выставлять отложенный ордер в обратную сторону. Вот и надо определить в какую сторону уже открыто и где у этого открытого стоп стоит :)
Проще :( Только я что то не нашел как определить процесс открытия. Как узнать что он вот открылся?
А да...он то изначально отложенник...так что надо определять момент открытия и превращения его в открытый
if (OrderSend(Symbol(),Type,volume,Ask,2,stoploss,takeprofit,NULL,0,0,CLR_NONE==-1); {Alert(Ошибка);}
ТОлько я вот в твоем эксперте нигде не нашел функцию, которая открывает ордера..
В общем вопрос такой, кто ставит первый отложенник, ты или эксперт? Если эксперт, то где в нем функция открытия первого отложенного ордера?
значит в начале программы надо сделать примерно так
if (TotalOrder()>0) { if (OrderSelect(0,SELECT_BY_POS)==true) { int a=OrderType(); int ticket= OrderTicket(); double Lots= OrderLots(); double SL= OrderStopLoss(); switch(a) { case 0 : //открыт ордер BUE дальнейшие расчеты case 1 : // открыт ордер SELL дальнейшие расчеты } } }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Доброе время суток.
Подскажите пж может кто то видел функцию или что то подобное есть:
Есть открытый ордер с выставленными SL и TP. Как вернуть цену на котором стоит Stop Loss ордера?
И узнать какой открыт ордер Buy или Sell...
Заранее благодарен за любую инфу