[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 414

 
Traté de ponerlo en mi casa, también es lento. Nunca vi nada de eso, sólo tengo Metatrader.
 
Sepulca:

Te lo diré exactamente, hay exactamente 80 de ellos. Y sss2019 tiene todo bien con los parámetros. Pero, ¿qué es este indicador salvaje con tantos parámetros?

Esa es la cuestión, es correcto, pero sigue siendo un error.
 

escribió una modificación de las órdenes. Cuando se alcance el precio, mueva el stoploss al nivel del precio de apertura. Sale el error 130. No entiendo qué pasa. Antes podía escribir órdenes de arrastre...

if (UseTrailing)
{ 
  for (int trall=0; trall<OrdersTotal(); trall++) 
  {
    if (!(OrderSelect(trall, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol()!=Symb)continue;        
 
    if (Tip==0 && top!=1) 
       {
        RefreshRates();
        SLM=OrderOpenPrice();
        if (Bid-OrderOpenPrice() > WithoutLoss*Point   ) 
           {
           if (OrderStopLoss() < Bid-WithoutLoss*Point) 
              {
              OrderModify(Ticket_B, OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0, Blue);
              top=1;
               }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
         continue;                              // Повторная попытка
         return;                                // Выход из start()

            }
        }
 
    if (Tip==1 && top!=2) 
       {
        RefreshRates();
        SLM=OrderOpenPrice();
       if ( OrderOpenPrice()-Ask > WithoutLoss*Point) 
          {
          if (OrderStopLoss() > Ask+WithoutLoss*Point) 
             {
              OrderModify(Ticket_S, OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0, Blue);
              top=2;
              }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
         continue;                              // Повторная попытка
         return;                                // Выход из start()

           }
         }
 
Egori4:

escribió una modificación de las órdenes. Cuando se alcance el precio, mueva el stoploss al nivel del precio de apertura. Sale el error 130. No entiendo qué pasa. Antes podía escribir órdenes de arrastre...

Se está trabajando en un bucle en todas las órdenes, pero hay una determinada variable Tip que nunca cambia y nadie sabe a qué es igual. Además, se analiza una orden y se modifica otra totalmente diferente con el ticket almacenado en la variable Ticket_B o Ticket_S respectivamente
 
ilunga:
Se trabaja en un bucle sobre todas las órdenes, pero hay alguna variable Tip, que no cambia y no sabe a qué equivale. Además, usted analiza una orden y modifica otra completamente diferente con una variable Ticket_B o Ticket_S respectivamente
(si Tip=0 , entonces es compra, si Tip=1 es venta. y Ticket_B es compra abierta, Ticket_S es venta abierta)
 
Sepulca:


Cuando abra una orden pendiente, establezca una hora de vencimiento, digamos 23:59, la orden se cerrará sola.

nt OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

He intentado establecer el tiempo de expiración en 24 horas (OrderOpenTime()+86400), pero si la orden se abre una o dos horas más tarde, se cerrará también más tarde...
 

Buenas tardes.Gente, alguien por favor ayude con la función WindowScreenShot. Por tercer día nadie responde((. He escrito el siguiente script (ver archivo adjunto).

En 2 palabras sobre el guión. El script está destinado a realizar capturas de pantalla del gráfico actual de la ventana del terminal del cliente. En la variable externa datetime Time_bar se especifica la hora de la barra a partir de la cual y hasta la barra cero se creará (teniendo en cuenta la sangría derecha en el gráfico). En la línea

int número_de_barra=iBarShift(NULL,0,Barra_de_tiempo,true)

se busca el número de serie del bar que hemos especificado en la variable externa datetime time_bar. La propia función, en la línea

bool f=WindowScreenShot(name+".gif",1024,768,bar_number,Scale,View_graph)

Ahora la pregunta es... Para simplificar, supongamos que necesitamos crear una captura de pantalla de las dos últimas barras. Entonces, si la línea

int número_de_barra=iBarShift(NULL,0,Barra_de_tiempo,true)

se deja sin modificar, el resultado será la siguiente captura de pantalla


Es decir, no hay ninguna barra en la captura de pantalla (aunque la cadena

int bar_number=iBarShift(NULL,0,bar_time,true)

el número de barra por tiempo debe ser calculado)

Si esta línea se presenta de la siguiente manera

int número_de_barra=iBarShift(NULL,0,Time_bar,true)+2

obtendrás la captura de pantalla que queríamos:

Pregunta: ¿por qué en caso de que esta cadena tenga la siguiente forma

int número_de_barra=iBarShift(NULL,0,Barra_de_tiempo,true)

¿la captura de pantalla está tomada con un desplazamiento de 2 barras a la derecha del especificado en la línea anterior?

P.D. Para no saturar el foro, gracias de antemano por su respuesta
Archivos adjuntos:
 
Egori4:
Perdóname... no hay manera de establecer la hora (no puedo averiguar el formato). he intentado establecer el tiempo de expiración en 24 horas (OrderOpenTime()+86400), pero si la orden se abrió una o dos horas más tarde, se cierra más tarde también...


Yo lo intentaría así:

exp=iTime(Symbol(),PERIOD_D1,0)+86340;
Donde iTime(Symbol(),PERIOD_D1,0) es la hora de apertura de la barra del día, y 86340 es 23 horas 59 minutos en segundos.
 
Egori4:
(si Tip=0 , entonces es compra, si Tip=1 - venta. y Ticket_B es compra abierta, Ticket_S es venta abierta)

Si tiene tickets almacenados en Ticket_B y Ticket_S, ¿por qué necesita un ciclo?

Sólo tienes que seleccionar por billete y ver si hay condiciones para cambiarlo

 

¿Dónde va la pestaña "Parámetros de entrada" en las "Propiedades del experto"? Ejemplo:

extern int A=1;
extern int B=2;
int init(){return(0);}
int deinit(){return(0);}
int start(){return(0);}

Todo está bien, pero en cuanto añado stdlib.mqh:

#include <stdlib.mqh>
extern int A=1;
extern int B=2;
int init(){return(0);}
int deinit(){return(0);}
int start(){return(0);}

No puedo ver los parámetros de entrada:

Razón de la queja: