[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 512

 
LazarevDenis:
¿Puede usted por favor aconsejar si es posible escribir algún texto en mql4 en un archivo, por ejemplo *.txt, y luego recuperar estos datos para el comercio. La idea es que el EA aprendería a operar por sí mismo, cuando el precio cambia por >100*Punto por un par de barras, el EA memorizaría estos valores y luego trataría de usarlos (valor del indicador +/- n% para abrir una orden). Esto también podría ser implementado en el EA, pero después de cerrar MetaTrader todos los valores de las variables parecen ser puestos a cero
Se pueden utilizarvariables globales.
 
¿podría alguien probar mi EA y decirme sus puntos fuertes y débiles?
Archivos adjuntos:
 

ayúdame a escribir una función que realice una determinada acción, si las últimas 10 posiciones se cerraron en menos

Gracias de antemano
 
Kreol:
Sí, sí, te tengo ... Pero antes de renunciar a mi dinero duramente ganado, quiero asegurarme de que el script que necesito no es de dominio público
Los guiones de la base de datos son tan grandes como el perro come perro. Se está equivocando de pregunta. El guión universal, aunque te lo hagan, será incómodo, y lo desecharás.
Los scripts suelen estar diseñados para realizar una acción simple y uniforme. Lo mejor es utilizar un conjunto de scripts, cada uno de los cuales está vinculado a una tecla de acceso directo diferente.
Por ejemplo:

Guión
Clave
Escritura de compra abiertaCtrl+B
Script para abrir la ventaCtrl+S
Reversión del guiónCtrl+R
Cerrar guión
Ctrl+C

Y así sucesivamente.
Puede encontrar los correspondientes scripts listos en la base de datos haciendo una búsqueda, peticiones en google como reverse script site:mql4.com

 
nuan:

ayúdame a escribir una función que realice una determinada acción si, por ejemplo, las últimas 10 posiciones se cerraron en menos

Gracias de antemano

No es difícil calcular el número de últimas órdenes cerradas con pérdidas en el bucle. Pero, ¿cómo podemos escribir un código que realice una acción poco clara?
 
Necesita un código que cuente
 
¡Hola! Aquí hay una pregunta... ¿Es la abundancia de condiciones de entrada y funciones auxiliares, así como de variables externas como extern double, lo que puede ralentizar el Asesor Experto? Es un misterio en el probador... El primer robot con todo oculto en el código tiene más drawdowns que el robot donde todo es extern double... Aunque ambos tienen los mismos parámetros variables. (también son iguales)
 
Shniperson:
¡Hola! Aquí hay una pregunta... ¿Es por la abundancia de condiciones de entrada y funciones auxiliares, así como de variables externas como el doble externo que el EA puede volverse lento? Es un misterio en el probador... El primer robot con todo oculto en el código tiene más drawdowns que el robot donde todo es extern double... Aunque ambos tienen los mismos parámetros variables. (y también son iguales).


Compruebe de nuevo los valores de las variables - tal vez sean diferentes y al compilar el primero, funcionen de forma diferente.

Aparte de eso, compárelos con este programa en la búsqueda - descarga - WinMergeU.exe.

 

Lo he descargado de https://www.mql5.com/ru/code/9274

He descargado de aquí un script para establecer automáticamente una toma y una pérdida preestablecidas, pero empiezan a flotar siguiendo el precio, ¿me podéis decir cuál es el problema y cómo configurarlo para que sean estáticas?

 
nuan:
Necesitamos un código que calcule


Esto no es difícil. Escribe un subprograma:

// этот код будет работать корректно только если в истории отсутствуют отложенные ордера.
int SchLossOrders(){
  string SMB=Symbol();
  int Sch=0;
  int i;
  for (i=OrdersHistoryTotal()-1;i>=0;i--){
    if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { Print("Ошибка ",GetLastError()," при выборе ордера");}
    else {
      if(OrderProfit()<0 && (OrderType()==OP_BUY || OrderType()==OP_SELL)){
        Sch++;
      }
      else{
        return(Sch);
      }
    }
  }
 return(Sch);     
}

Al principio de la EA escribimos:

if(SchLossOrders()>=10){
  // 10 последних сделок были убыточными - выполняем какое-то действие
}