Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1643

 
Анатолий Железняк #:

Entonces la pregunta es: ¿Quién es esta persona ? ¿Es un amigo tuyo? Preséntalo.

Te lo dije: ¡¡¡a nivel de usuario!!!

Fue a nivel de usuario.

expiración es el tiempo de expiración de una orden pendiente.

Pero no te conviene.

Sacar una orden "del cuidado de EA" es imposible, porque el cuidado va al mago, y no se puede cambiar.

Tenemos que reescribir el EA con un control de orden diferente

 
MakarFX #:

Esto fue a nivel de usuario

tiempo deexpiración de la orden pendiente.

Pero esto no funciona para ti.

No se puede sacar una orden "del control de EA", porque el control se basa en un asistente, y no se puede cambiar.

Tenemos que reescribir el EA con otro control de órdenes.

Vive mucho.

 
MakarFX #:

Esto fue a nivel de usuario

tiempo deexpiración de la orden pendiente.

Pero esto no funciona para ti.

No se puede sacar una orden "del control de EA", porque el control se basa en un asistente, y no se puede cambiar.

Tienes que reescribir el EA con un control de orden diferente ...

Makar, no te rompas.

 
Анатолий Железняк #:

¡Oh, Dios mío! Yo pedí un nivel de usuario y tú me pides que recorra todo el EA y preguntes en tono de mentor: "¿Cuál es el tuyo?". No quiero entrar en eso. Me gusta jugar, no descubrir las entrañas de los juguetes.

Si Magik no es 0, cierra la posición y vuelve a entrar.

 
MakarFX #:

Esto fue a nivel de usuario

tiempo deexpiración de la orden pendiente.

Pero esto no funciona para ti.

No se puede sacar una orden "del control de EA", porque el control se basa en un asistente, y no se puede cambiar.

Tenemos que reescribir el EA con un control de orden diferente

Puedes dejar la custodia incluso con el mismo asistente, la cuestión es qué tipo de orden necesitas si lo quieres, entonces no puedes hacerlo si es específico de tu lista.

 
for (int i=0;i<OrdersTotal()-2;i++) последних 2 видеть не будет даже с тем же магиком только что ему нужно до путя так и не понятно 
 
Aleksandr Egorov #:
Lo necesita como usuario, sin arreglar el código
 
¿Hay alguna manera de establecer una tecla de acceso directo para que el objeto"cuadro de entrada" se active y se pueda escribir el texto allí? Por ejemplo, el tamaño del lote para una futura transacción.
 
MakarFX #:
Lo necesita como usuario, sin arreglar el código

entonces no es nada bueno ))

 

Hola. ¿Puede darme una pista? MT5

Hago: un indicador que toma capturas de pantalla en un temporizador y las pone en carpetas (período de símbolo).

El algoritmo previsto: se realiza una captura de pantalla en la inicialización. Dado que las operaciones con archivos llevan tiempo, el temporizador desplaza la captura de pantalla realizada en primer lugar y realiza una nueva.

La captura de pantalla realizada durante la inicialización se mueve con éxito por el temporizador.

Problema:
1 La primera captura de pantalla tomada por el temporizador en la carpeta no se muestra inmediatamente. Se muestra SÓLO cuando se cierra el terminal o se reinicia el indicador.
2 capturas de pantalla excepto la primera no se mueven, error 5019 (el archivo no existe), aunque se muestran en la carpeta (excepto la primera hecha por el temporizador).


#property strict
#property indicator_chart_window
#property indicator_plots 0

enum ENUM_FULL_MANUAL { full, //весь график
            manual, //указанный
            };
input int timer=5; //время на шаг в секундах
input ENUM_FULL_MANUAL skr_mode=full; //размер скриншота   
input int width = 640; // ширина 
input int height = 320;// высота 
input string format = ".png";

ENUM_ALIGN_MODE align_mode=ALIGN_RIGHT; // тип выравнивания

string name_folder, name_file;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
Print("OnInit()");

ScreenShot();
         
name_folder=Symbol()+"  "+StringPeriod();
FolderCreate(name_folder);


EventSetTimer(timer);


return(INIT_SUCCEEDED);
}
//===================================================================
void OnDeinit(const int reason)
{
EventKillTimer();
Move() ; 
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
             const int prev_calculated,
             const datetime &time[],
             const double &open[],
             const double &high[],
             const double &low[],
             const double &close[],
             const long &tick_volume[],
             const long &volume[],
             const int &spread[])
{
//---

//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
{
   Print("OnTimer() ");
   Move() ; 
   ScreenShot();
}//+------------------------------------------------------------------+
bool Move(){
   string src_path; 
   string dst_path; 
   StringConcatenate(src_path,"","//",name_file); 
   StringConcatenate(dst_path,name_folder,"//",name_file); 
   ResetLastError();
   if(FileMove(src_path,0,dst_path,0)){
      Print("FileMove OK ");
      return true;
   }   
   else{
      string err_text="FileMove ERR: "+(string)GetLastError();
      if(GetLastError()==5019) err_text+=("  5019 name_file "+name_file);
      Print(err_text);
   }  
   return false;
}

bool ScreenShot(){   
   name_file=TimeToString(TimeLocal(), TIME_DATE|TIME_SECONDS)+format;
   StringReplace(name_file, ":", "-");
   if(skr_mode==full){
      if(ChartScreenShot(0, name_file, (int)ChartGetInteger(0, CHART_WIDTH_IN_PIXELS, 0)
      , (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS, 0), ALIGN_RIGHT)){
         Print("screen name_file ", name_file);
         return true;
      }
      else{
         Print("screen ERR: ", GetLastError());
      }   
   }   
   if(skr_mode==manual){
      if(ChartScreenShot(0, name_file, width, height, align_mode)){
         return true;
      }
   }      
   return false;  
}
string StringPeriod(){
   if(Period()==1) return "M1";
   if(Period()==2) return "M2";
   if(Period()==3) return "M3";
   if(Period()==4) return "M4";
   if(Period()==5) return "M5";
   if(Period()==6) return "M6";
   if(Period()==10) return "M10";
   if(Period()==12) return "M12";
   if(Period()==15) return "M15";
   if(Period()==20) return "M20";
   if(Period()==30) return "M30";
   if(Period()==16385) return "H1";
   if(Period()==16386) return "H2";
   if(Period()==16387) return "H3";
   if(Period()==16388) return "H4";
   if(Period()==16390) return "H6";
   if(Period()==16392) return "H8";
   if(Period()==16396) return "H12";
   if(Period()==16408) return "Daily";
   if(Period()==32769) return "Weekly";
   if(Period()==49153) return "Monthly";
   return "ERROR";
}
Razón de la queja: