Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 75
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
SELL_Lvl es el número de rodillas (órdenes) de la parrilla de venta ySELL_NoLossLevel es el nivel total (precio) de la UC de estas órdenes. Bien, la idea es la siguiente: necesitamos una línea dibujada a nivel de una Línea de Compra y redibujada respectivamente cuando se abren nuevas Líneas. No sé cómo hacerlo.
¿No entiende cómo determinar la línea BU de todos los pedidos?
¿Pueden decirme cómo anotarlo para ahorrar recursos y obtener precios actualizados?
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
SymbolInfoTick(OrderSymbol(),Last_Tick); <<<
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
¿o así?
for(int i=OrdersTotal(); i>=0; i--) {
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
¿Pueden decirme cómo anotarlo para ahorrar recursos y obtener precios actualizados?
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
SymbolInfoTick(OrderSymbol(),Last_Tick); <<<
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
¿o así?
for(int i=OrdersTotal(); i>=0; i--) {
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
¿Pueden decirme cómo anotarlo para ahorrar recursos y obtener precios actualizados?
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
SymbolInfoTick(OrderSymbol(),Last_Tick); <<<
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
¿o así?
for(int i=OrdersTotal(); i>=0; i--) {
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
Yo diría que depende del tamaño de OrdersTotal() y de la probabilidad de cambios de precio durante el ciclo.
En mi opinión, obtener datos frescos directamente en el bucle es más correcto.
Y creo que las variables adicionales (resaltadas en el código) son absolutamente innecesarias.
Hay un ejemplo en la documentación.
Probablemente sería mejor recorrer las órdenes en el bucle y, siempre que la siguiente orden sea inferior a la anterior, seleccionarla para seguir trabajando con ella. Así, tras salir del bucle, se seleccionará la orden que se va a eliminar.
O bien, puede memorizar primero su posición en la lista de órdenes y luego seleccionarla después de salir del bucle utilizando el índice memorizado.
La primera opción es más correcta. La segunda debería escribirSymbolInfoTick(symb,Last_Tick); <<<<
Sí, lo he copiado y no me he dado cuenta.
Me pregunto siSymbolInfoTick es la forma correcta de ponerlo dentro del bucle, si es necesario, o si se puede poner antes del bucle. Se utiliza en el trailing stop, puede tirar de una red hasta 50pc.
Sí, lo he copiado y no me he dado cuenta.
Me pregunto siSymbolInfoTick es la forma correcta de ponerlo dentro del bucle, si es necesario, o si se puede poner antes del bucle. Utilizado en el trailing stop, puede tirar de una parrilla de hasta 50pc.
¿No sabe cómo determinar la línea BU de todos los pedidos?
Para el trailing stop es por supuesto mejor una vez antes del ciclo.
Ahora lo estoy reescribiendo poco a poco para 5. Me refiero a que el precio puede cambiar muy rápidamente y el nivel puede ser menor que el valor del stop-loss, lo que llevará a un error. Me refiero a que el precio puede cambiar muy rápidamente y el nivel será menor que el nivel de parada permitido, lo que dará lugar a un error.
¿Entiendo que este sombrero"SymbolInfoTick" es necesario para obtener los precios reales?