cómo puedo obtener el más alto después de la apertura de orderopenprice.

 

Queridos,

puede alguien comprobar el siguiente enlace y responder a mi pregunta (cómo puedo obtener el más alto después de la orden de precio abierto).

http://www.forexfactory.com/showthread.php?t=307937

 
string PriceToStr(double p){ return( DoubleToStr(p, Digits) ); }
:
datetime    OOT         = OrderOpenTime();          // Assumes OrderSelect() done already
int         iOOT        = iBarShift(NULL,0, OOT);   // Bar of the open.
#define     iBarCURRENT   0                         // Include current bar.
int         nSince  = iOOT - iBarCURRENT + 1;       // No. bars since open.
int         iHi         = iHighest(NULL,0, MODE_HIGH, nSince, iBarCURRENT);
double      HH          = High[iHi];                // Highest high.
Print( "High since order opened on ", TimeToStr(OOT)," is ", PriceToStr(HH) );
 
WHRoeder:


Aquí hay algunos errores para el código anterior.

'(' - definición de la función inesperada D:\Ficheros de programa\FXDD Malta - MetaTrader 4\experts\test2.mq4 (343, 18)

este error para la cadena PriceToStr(double p)

para este error no se como puedo solucionarlo


iBarCurrent' - variable no definida D:\NArchivos de programa\NFXDD Malta - MetaTrader 4\\Nexperts\test2.mq4 (348, 30)

este error se debe a que defines #define iBarCURRENT y luego lo pones como iBarCurrent

lo arreglaré.


2 error(es),

 

Pon esta línea al final de tu código fuera de la función de inicio...

string PriceToStr(double p){ return( DoubleToStr(p, Digits) ); }

y empieza a leer esto si quieres aprender a codificar: https://book.mql4.com//

 

Está claro chicos ( RaptorUK y WHRoeder ),

Gracias.

datetime    OOT         = OrderOpenTime();          // Assumes OrderSelect() done already
int         iOOT        = iBarShift("EURUSD",PERIOD_H1, OOT);   // Bar of the open.
#define     iBarCURRENT   0                         // Include current bar.
int         nSince  = iOOT - iBarCURRENT + 1;       // No. bars since open.
int         iHi         = iHighest("EURUSD",PERIOD_H1, MODE_HIGH, nSince, iBarCURRENT);
double      HH          = High[iHi];                // Highest high.
int         iLi         = iLowest("EURUSD",PERIOD_H1, MODE_LOW, nSince, iBarCURRENT);
double      LL          = Low[iLi];                 // Lowest low. 

Tengo otra pregunta:

si tengo 2 órdenes abiertas una de compra y otra de venta:

como puedo hacer que mi EA entienda y tome la iOOT = iBarShift("EURUSD",PERIOD_H1, OOT); // Barra de la apertura. Para la barra de la que obtuve la posición de compra y calcular el máximo desde ese punto.

Y

Tomar el iOOT = iBarShift("EURUSD",PERIOD_H1, OOT); // Barra de la apertura. Para la barra que tengo posición de venta de ella y calcular el más bajo de ese punto.

Muchas gracias

 
Para obtener OOT debe haber hecho ya un orderSelect
for(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.
){
    datetime    OOT         = OrderOpenTime();          // Assumes OrderSelect() done already
    int         iOOT        = iBarShift("EURUSD",PERIOD_H1, OOT);   // Bar of the open.
    #define     iBarCURRENT   0                         // Include current bar.
    int         nSince      = iOOT - iBarCURRENT + 1;   // No. bars since open.
    if (OrderType == OP_BUY){
        int     iHi         = iHighest("EURUSD",PERIOD_H1, MODE_HIGH, nSince, iBarCURRENT);
        double  HH          = High[iHi];                // Highest high.
    }
    else{
        int     iLi         = iLowest("EURUSD",PERIOD_H1, MODE_LOW, nSince, iBarCURRENT);
        double  LL          = Low[iLi];                 // Lowest low. 
    }
}
 
WHRoeder:
Para conseguir OOT debes haber hecho ya un orderSelect


Gracias chicos.

También tengo otra pregunta:

Cómo puedo hacer estas condiciones: si (último OrderClosePrice() para vender > antes del último OrderClosePrice para vender ) && ( antes del último OrderClosePrice para vender >= bid)

cerrar la posición

es algo como esto estará bien

if ( (OrderType == OP_SELL)&& OrderSelect(pos+1, SELECT_BY_POS,MODE_TRADES ) )          { if( pos>pos+1  && pos+1>MarketInfo("EURUSD",MODE_BID);
            // close the position


 

Solo,

Quiero saber cómo puedo obtener: la orden antes de la última orden (abierta o cerrada) precio() para (comprar o vender) para agregarlos para algunas claculaciones.

Muchas gracias.

 
No hay respuesta, sólo necesito obtener la orden antes de la última orden incluso para comprar o vender incluso esa orden es orden abierta o orden cerrada, esperando su ayuda.
 
Hand:
Quiero saber como puedo obtener: la orden anterior a la última orden(open o close)price() para (buy o sell) para sumarlas para algunas claculaciones.
Encontrar la última orden, recuerda, encontrar la siguiente anterior.
    for(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.
    ){
       datetime OOTlatest = OrderOpenTime();  // found latest open order
       break;
    }
    for(pos--; pos >= 0 ; pos--) if (
        OrderSelect(pos, SELECT_BY_POS)                 // Only my orders w/
    &&  OrderMagicNumber()  == magic.number             // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    ){
       datetime OOTprevious = OrderOpenTime(); // found the previous
       break;
    }
    if (OOTlastest == 0) // no open orders
    if (OOTprevious == 0) // no previous
:
 

Gracias WHRoeder,

Si necesito obtener la última orden de compra y la última orden de venta y luego compararlas haciendo :

si ( la última orden de compra == OOTlastest )

{ hacer algo }

else

{ } ....... es el código de abajo funcionará.

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.
){
    if (OrderType() == OP_BUY){
        int lastorderforbuy= OrderOpenPrice();
    }
    else{
        int lastorderforsell= OrderOpenPrice(); 
         }
    }   for(pos--; pos >= 0 ; pos--) if (
        OrderSelect(pos, SELECT_BY_POS)                 // Only my orders w/
    &&  OrderMagicNumber()  == magic.number             // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    ){
       if (OrderType() == OP_BUY){
        int previousorderforbuy= OrderOpenPrice();
    }
    else{
        int previousorderforsell= OrderOpenPrice(); 
         }
     } 
    if ( ((lastorderforbuy+ previousorderforsell)/2)<=MarketInfo("EURUSD",MODE_BID))
               {  CLOSESHORT("EURUSD") ;}