órdenes abiertas con 10pip de diferencia - página 3

 
    &&  OrderMagicNumber()  == 0           // my magic number

0 es el número mágico por defecto, por lo que su condición no excluirá ninguna operación abierta manualmente

         Tip   =OrderType();                    // Type of selected order
         Price =OrderOpenPrice();               // Price of selected order
         SL    =OrderStopLoss();                // SL of selected order 
         TP    =OrderTakeProfit();               // TP of selected order
         Lot   =OrderLots();                     // Amount of lots

Aquí está almacenando los valores de la última orden seleccionada. Si desea almacenar los valores delastTicket, tendrá que volver a seleccionarla.

¿Por qué hace un bucle a través de las órdenes para encontrar la última orden y no hace nada con el resultado?

Tus 2 bloques de código son totalmente independientes el uno del otro

 
GumRai:

0 es el número mágico por defecto, por lo que su condición no excluirá ninguna operación abierta manualmente

Aquí está almacenando los valores de la última orden seleccionada. Si desea almacenar los valores delastTicket, tendrá que volver a seleccionarla.

¿Por qué hace un bucle a través de las órdenes para encontrar la última orden y no hace nada con el resultado?

Tus 2 bloques de código son totalmente independientes el uno del otro




GumRai: gracias por tu respuesta, según tus indicaciones

OrderMagicNumber() == 0 ------------aquí puse 0 porque estaba probando mi código y lo publiqué sin el valor del número, gracias por las recomendaciones y correcciones

OrderMagicNumber() == 1234

lastTicket lo puse en mi ordersend


lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0, "My Comment",magic,0,Green);

if(lastTicket>0)
{
bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red);
}



pero no se si lo he hecho bien porque todo lo que quiero que haga mi ea es colocar multiples ordenes de venta, asi que quiero que el ea obtenga el precio abierto mas alto en el simbolo del grafico actual y abra 10pip por encima de el.

Para conseguir lo que quiero lo hago paso a paso. primero trato de conseguir la última orden abierta primero, siguiendo el fomular que me dio WHRoeder .

por lo que mi bucle a través de la orden no es sólo para establecer 1 comercio abierto, pero múltiples comercio abierto por lo que quiero conseguir último billete abierto high.please GumRai si estoy equivocado en mi orderselected me puso a través de gracias por querer ayudar.



// Orders accounting 

{
     datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
        OrderSelect(0, SELECT_BY_POS,MODE_TRADES)                 // Only my orders w/
    &&  OrderMagicNumber()  == 0           // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    &&  OrderOpenTime()     >=  lastTime
    &&  OrderTicket()       >   lastTicket
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }
 
}

         Tip   =OrderType();                    // Type of selected order
         Price =OrderOpenPrice();               // Price of selected order
         SL    =OrderStopLoss();                // SL of selected order 
         TP    =OrderTakeProfit();               // TP of selected order
         Lot   =OrderLots();                     // Amount of lots
   
////////////////////////////////////////////////////////////////////////////////////////////////////////
//---------------------------------------- 5 ------------------------------------//
/*this is the poinnt where main formular or trading system EA-MA is based*/
//---------------------------------------------------------------------------
// Trading criteria
       
rsi1=iRSI(NULL,0,14,PRICE_CLOSE,1);
rsi2=iRSI(NULL,0,14,PRICE_CLOSE,0); 
     
 if(rsi2>70 && Ask > High[1] + (10*pips2dbl) )
  {
      Opn_S=true;
     } 
     else 
   if(rsi2>70 && Ask < High[1] + (10*pips2dbl)) 
      {
      Opn_S=false;
     }


lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0,"My Comment",magic,0,Green);

         if(lastTicket>0)
     {
      bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),
                         NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red);
     }
 

Por favor, trate de no incluir largas líneas de código en sus mensajes, hace que sean difíciles de leer

   if(lastTicket>0)
     {
      bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),
                         NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red);
     }

No hay nada que te impida usar 2 líneas como las anteriores

 
dan100:

WHRoeder este código es todo en mi cálculo de la ejecución de la orden por favor le pido que me ayude a modificar mis errores y me puso a través. gracias por su voluntad de ayudar a



dan100:

WHRoeder este código es todo en mi cálculo de la ejecución de la orden por favor pido que me ayude a modificar mis errores y me puso a través. gracias por su voluntad de ayudar a






GumRai gracias por tus correcciones. pero ¿hice bien el código anterior?

 
dan100: Por favor, sigo esperando tu ayuda.WHRoeder
Vas a tener que esperar mucho tiempo.
  1. Te dije lo que tenías que hacer y no lo hiciste.
  2. Te recordé aquí que aún no lo habías hecho.
  3. Y ahora vuelves a pedirlo pero sigues sin hacerlo.
 
WHRoeder:
dan100: por favor, sigo esperando su ayuda.WHRoeder
Vas a estar esperando mucho tiempo.
  1. Te he dicho lo que tienes que hacer, no lo has hecho.
  2. Te recordé aquí que todavía no lo habías hecho.
  3. Y ahora preguntas de nuevo pero todavía no lo he hecho.



WHRoeder no entendí más esto es toda la parte lógica de mi ea y también donde mi conocimiento del código es por ahora.i no sabe lo que de nuevo a presentar, después de todo

No sé qué presentar de nuevo, después de todo, es por eso que estoy aquí en busca de ayuda. pero si usted puede permitirme enviar todo el código ea a usted voy a estar bien por favor, por favor WHRoeder por favor me ayudan sé que puede.

y el enlace para enviar los códigos ea enteros.


ademas formalmente antes de que usted me dio esta formula......

  1. Encuentra la operación abierta con el precio abierto más alto.
  2. Si el mercado no ha alcanzado el precio + 10 pips, volver
  3. abrir una nueva orden.


solo pruebo el ultimo precio con la media móvil que cruza el precio ASK o BID y luego descubro que a veces abre ordenes por debajo del precio alto del grafico actual asi que eso es lo que quiero corregir

No tengo ningun codigo para probar el precio alto solo MA y Ask y 10point asi que no hay codigo que use en las pruebas.

 
dan100:

GumRai , gracias por tus correcciones, pero ¿hice bien el código anterior?

En primer lugar, no está claro lo que estás tratando de hacer

Usted dice

"pero no se si lo he hecho bien porque todo lo que quiero que haga mi ea es colocar multiples ordenes de venta, asi que quiero que el ea obtenga el precio abierto mas alto en el simbolo del grafico actual y abra 10pip por encima de este. y cualquier comercio por debajo de la ultima orden actual sea rechazado.

paraconseguir lo que quiero lo hago paso a paso. primero intento conseguir la ultima orden abiertaprimero, siguiendo el fomularque me dio WHRoeder".

Entonces, ¿qué es lo que quieres encontrar?

¿La orden con el precio abierto más alto?

o

¿La orden que se abrió más recientemente?

¿Cómo puede alguien ayudarte si eres incapaz de describir lo que quieres?

     datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
        OrderSelect(0, SELECT_BY_POS,MODE_TRADES)                 // Only my orders w/
    &&  OrderMagicNumber()  == 0           // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    &&  OrderOpenTime()     >=  lastTime
    &&  OrderTicket()       >   lastTicket
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }

Este código encuentra la última orden abierta, pero no almacena el precio en ningún sitio

      
rsi1=iRSI(NULL,0,14,PRICE_CLOSE,1);
rsi2=iRSI(NULL,0,14,PRICE_CLOSE,0); 
     
 if(rsi2>70 && Ask > High[1] + (10*pips2dbl) )
  {
      Opn_S=true;
     } 
     else 
   if(rsi2>70 && Ask < High[1] + (10*pips2dbl)) 
      {
      Opn_S=false;
     }

Aquí le das valor a Opn_S, pero no haces nada con él

   lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0,"My Comment",magic,0,Green);

Aquí no hay condiciones para abrir una orden y sobreescribes el valor de lastTicket.

Tu código no tiene ninguna lógica, son sólo 3 secciones de código que no tienen ninguna relación entre sí

 
GumRai gracias de nuevo por tus indicaciones y el resumen. lo que quiero encontrar es

el precio de apertura más alto en el símbolo del gráfico actual y abrir 10pip por encima de él si es de compra/abrir 10pips por debajo si es de venta

por favor ayúdame con esto

 
dan100:
GumRai gracias de nuevo por tus indicaciones y el resumen. lo que quiero encontrar es

precio abierto más alto en el símbolo del gráfico actual

por favor ayúdeme con esto

¿Por qué necesitas ayuda con esto?

Si puede escribir un código para encontrar la orden con la última (más alta) OrderOpenTime, debería ser una cuestión sencilla encontrar la orden con el OrderOpenPrice más alto.

Es una simple sustitución.

 
GumRai:

¿Por qué necesita ayuda con esto?

Si puedes escribir un código para encontrar la orden con la última (más alta) OrderOpenTime, debería ser una cuestión sencilla encontrar la orden con el OrderOpenPrice más alto.

Es una simple sustitución.



si, escribo mis códigos y algunos los investigo pero cuando no veo el resultado deseado busco soluciones aunque sé que estoy a medio camino de los errores

A veces, por muy simples o pequeños que sean, pueden ser difíciles de resolver.

Razón de la queja: