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) );
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
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. } }
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.
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.
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") ;}

- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
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