[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 140

 
valeryk:

bool NewBar()
{static datetime newbar;
bool res=false;
if(newbar==0)newbar=Time[0];
if(newbar!=Time[0]){res=true;newbar=Time[0];}
return(res);
}

Nueva presencia en el bar .

He entendido que el símbolo se pone al precio de apertura de la barra. Y necesito que sea a precio de cierre.
No he podido insertar tu código porque no soy programador. Especialmente frunce el ceño ante este bool NewBar()
 
supernyb:
Entiendo que el icono se fija en el precio de apertura de la barra. Necesito que sea al precio de cierre.
No he podido insertar tu código porque no soy programador. Especialmente frunce el ceño ante este bool NewBar()
Observe la hora de cotización y la hora de ajuste de la barra: 15 minutos. ¿Cree que Close[0] puede cambiar durante este tiempo?
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if(NevBar()) 
     {
     //в этом блоке размещайте ваш код
     }    
//----
   return(0);
  }
//-----------------------------------------------------------------------------+
// Функция контроля нового бара                                                |
//-----------------------------------------------------------------------------+
bool NevBar(){
   static int PrevTime=0;
   if (PrevTime==Time[0]) return(false);
   PrevTime=Time[0];
   return(true);} 
 

Una vez más, por favor. Hola, he tomado como base el script del tutorial de S. Kovalev. Quiero hacer un Asesor Experto para abrir una operación, poner un stop loss, tomar ganancias, y luego esperar a que la operación se cierre (es decir, el stop loss o las ganancias), y sólo entonces reabrir la operación. Lo he intentado con interrupciones de ciclo y de ciclo. Por favor, aconséjeme cómo hacerlo. He pensado que puede ser más fácil no poner el stop-loss y el take-profit a la vez, y que el precio se cierre cuando se acerque a un determinado nivel. Pero no quiero hacerlo así porque tengo miedo al deslizamiento, y cada punto es importante para mí. Tengo entendido que abrí un trato o a veces un par a la vez (¿también está mal?) pero no puedo abrir nuevos tratos después de que el trato se haya cerrado. ¿O aconsejar cómo prescribir, de modo que el programa estaba esperando para el rendimiento de la pérdida de la parada o tekaprofit, y sólo entonces siguió?

//+------------------------------------------------------------------+
int start() //---- función start
{
double //---- declarar variables
x,
y;
//+------------------------------------------------------------------+
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-15*Point,Ask+15*Point); //---- orden de mercado para comprar y poner un stop y beneficio a 15 puntos del precio de apertura
//+------------------------------------------------------------------+
while(x!=Ask-15*Point||y!=Pregunta+15*Punto) //---- de la condición Quiero que la operación se cierre hasta que se cierre la operación anterior, es decirе. es posible
{//----- mantener SOLO una operación abierta
continuar;//---- interrumpir la condición y pasar al siguiente paso
}
//+------------------------------------------------------------------+
return;//---- function return
}
//+------------------------------------------------------------------+

 

Si no te importa si tienes un stop o una toma, ¿por qué no compruebas simplemente si hay órdenes abiertas o no?

if(PedidosTotal()<1)

 

¿Puede decirme qué se puede hacer en esta situación? Tengo un indicador. Tengo que dibujar una línea vertical en el gráfico, luego llamar a propiedades, copiar el número y luego introducirlo en el indicador.

Sería bueno que el indicador se colocara donde se hace clic con el ratón.

O, al menos, sería posible moverlo con el ratón en el gráfico.


Archivos adjuntos:
indicator.mq4  3 kb
 
Begemot7:

Una vez más, por favor. Hola, he tomado como base el script del tutorial de S. Kovalev. Quiero hacer un Asesor Experto para abrir una operación, poner un stop loss, tomar ganancias, y luego esperar a que la operación se cierre (es decir, el stop loss o las ganancias), y sólo entonces reabrir la operación. Lo he intentado con interrupciones de ciclo y de ciclo. Por favor, aconséjeme cómo hacerlo. He pensado que puede ser más fácil no poner el stop-loss y el take-profit a la vez, y que el precio se cierre cuando se acerque a un determinado nivel. Pero no quiero hacerlo así porque tengo miedo al deslizamiento, y cada punto es importante para mí. Tengo entendido que abrí un trato o a veces un par a la vez (¿también está mal?) pero no puedo abrir nuevos tratos después de que el trato se haya cerrado. ¿O aconsejar cómo prescribir, de modo que el programa estaba esperando para el rendimiento de la pérdida de la parada o tekaprofit, y sólo entonces fue más allá?

int ticket=-1;
int start()       //---- функеция старт            
  {
  double     //---- объявляю переменные 
  x,
  y;
  bool sel;
  //+------------------------------------------------------------------+
  sel=false;
  if(ticket>=0)
   {
    sel=OrderSelect(ticket,SELECT_BY_TICKET);if(!sel) ticket=-1;
   }
  if(ticket<0 || (sel && ticket>=0 && OrderCloseTime()>0)) ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-15*Point,Ask+15*Point);
   return;                                                          //---- функция return 
    }

O mejor así (en caso de reiniciar el Asesor Experto):

int ticket=-1;
int init()
 {
  if(GlobalVariableCheck("TICKET")) ticket=GlobalVariableGet("TICKET");
  else ticket=-1;
 }
int start()          
 {
  bool sel;
  sel=false;
  if(ticket>0)
   {
    sel=OrderSelect(ticket,SELECT_BY_TICKET);if(!sel) ticket=-1;
   }
  if(ticket<=0 || (sel && ticket>0 && OrderCloseTime()>0))
   {
    ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-15*Point,Ask+15*Point);
    if(ticket>0) GlobalVariableSet("TICKET",ticket);
   }
   return; 
  }
 
r772ra:
Tenga en cuenta la hora de la cita, y la hora en que el icono se puso, 15 minutos, ¿crees que Close[0] puede cambiar durante este tiempo


Gracias, ¡esto es justo lo que necesita! He hecho lo que has dicho y todo ha funcionado! También he puesto Close[1] en lugar de Close[0] en Star Price y ha resultado que mi marca se ha dibujado a precios de cierre. No espera una barra como yo pensaba que lo haría.
 
001:

Me gustaría que el indicador se colocara donde se hace clic con el ratón.

Para obtener las coordenadas del punto, donde se lanzó el indicador, se pueden utilizar funciones:

WindowXOnDropped()

WindowYOnDropped()

Precio y hora:

WindowPriceOnDropped()

WindowTimeOnDropped()

 
valeryk:

bool NuevaBarra()
{static datetime newbar;
El bool res=false;
if(newbar==0)newbar=Time[0];
if(newbar!=Time[0]){res=true;newbar=Time[0];}
return(res);
}

Disponibilidad de un nuevo bar .


Esto es lo que dijo el gurú sobre su código.

En tu versión, la barra estática de fecha no se inicializa con cero, y esto es incorrecto.

 
Sepulca:

Mejor así (en caso de que el EA se reinicie):

IMHO - mejor buscar su orden y ver si está en el mercado o cerrada, y cómo se cerró, por toma, parada o manualmente. A partir de aquí empezaremos a bailar en diferentes direcciones.

Entonces todo será preciso. Y las variables globales pueden perderse...

Razón de la queja: