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

 
sergeev писал(а) >>

hacer un Experto en lugar de un script y controlar el tiempo de ejecución del código de la función del script en el Experto. Ha llegado el momento: ejecute el código del script.

Entendí por esta frase que sus terminales están cerrados. Le respondo que el script no puede ejecutar el terminal por sí mismo.

Tal y como lo escribes, así se entiende. Si no es esto lo que quieres decir, explícate más claramente.

Si lo necesitaras tanto, no habrías hecho que un proger lo montara hace tiempo... es para ti personalmente.

1. Copie el contenido del script.

2. Crear un nuevo EA utilizando el MetaEditor

3. Inserte el código del script

4. Cómo añadir la función de trabajar por tiempo y dónde insertarla (no soy programador)

Necesito el tiempo de trabajo de la función de 9-00 a 9-01

El código del script que se va a editar: (Gracias de antemano a todos los que ayuden)

#property copyright "Kim Igor V. aka KimIV"
#enlace de la propiedad "https://www.mql5.com/go?link=http://www.kimiv.ru/"
#property show_inputs

#importar "kernel32.dll"
int GetUserDefaultLCID();
int GetLocaleInfoA(
int Locale, // identificador de localización
int LCType, // tipo de información
string lpLCData, // dirección del buffer de información
int cchData // tamaño del buffer
);
#importar

//+------ Parámetros externos del script -------------------------------------------+
extern bool bComisión = False; //Descarga de comisiones
extern bool bSwap = True; // Descargar swaps
extern bool bComment = True; // Descargar comentarios
extern bool bMagic = True; // Descargar MagicNumber

// Constantes LCTYPE
#define LOCALE_SDECIMAL 0x000E // Caracteres utilizados para el separador decimal.

//+----------------------------------------------------------------------------+
//| función de inicio del programa de script |
//+----------------------------------------------------------------------------+
void start() {
int dg, i, k=Total de Pedidos();
string FileName=DoubleToStr(AccountNumber(), 0)+".csv"; st;

FileDelete(FileName);
st="Billete;Hora de apertura;Tipo;Lotes;Artículo;Precio;SL;TP;Hora de cierre;Precio";
si (bComisión) st=st+";Comisión";
if (bSwap) st=st+";Swap";
st=st+";Beneficio"; if (bSwap) st=st+";Beneficio;
if (bMagic) st=st+";Magic";
if (bComment) st=st+";Comment";
WritingLineInFile(FileName, st);
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
si (OrderType()<2) {
dg= MarketInfo(OrderSymbol(), MODE_DIGITS);
st= DoubleToStr(OrderTicket(), 0)+";";
st=st+TimeToStr(OrderOpenTime(), TIME_DATE|TIME_MINUTES)+";";
st=st+GetNameOP(OrderType())+";";
st=st+DoubleToStrLocale(OrderLots(), 2)+";";
st=st+SímboloDeOrden()+";";
st=st+DoubleToStrLocale(OrderOpenPrice(), dg)+";";
st=st+DoubleToStrLocale(OrderStopLoss(), dg)+";";
st=st+DoubleToStrLocale(OrderTakeProfit(), dg)+";";
st=st+TimeToStr(OrderCloseTime(), TIME_DATE|TIME_MINUTES)+";";
st=st+DoubleToStrLocale(OrderClosePrice(), dg)+";";
if (bCommission) st=st+DoubleToStrLocale(OrderCommission(), 2)+";";
if (bSwap) st=st+DoubleToStrLocale(OrderSwap(), 2)+";";
st=st+DoubleToStrLocale(OrderProfit(), 2)+";";
if (bMagic) st=st+DoubleToStr(OrderMagicNumber(), 0)+";";
if (bComment) st=st+OrderComment()+";";
WritingLineInFile(FileName, st);
}
Comentario("Leer: ",i+1," de ",k);
}
}
Comentario("Archivo escrito: ",NombreDeArchivo);
}

//+----------------------------------------------------------------------------+
//| Convierte un valor numérico en una cadena con el sistema ||
//| separador entre la parte entera y la parte fraccionaria. ||
//| Parámetros: |
//| v - número de tipo doble |
//| d - número de dígitos después del punto decimal ||
//+----------------------------------------------------------------------------+
string DoubleToStrLocale(double v, int d) {
si (d<0) d=0;
si (d>8) d=8;

string se=GetUserLocale(LOCALE_SDECIMAL), st=DoubleToStr(v, d);
if (se!=".") st=StrTran(st, ".", se);

return(st);
}

//+----------------------------------------------------------------------------+
//| Devuelve el nombre de la operación comercial |
//| Parámetros: |
//| op - identificador de la operación comercial |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
switch (op) {
case OP_BUY : return("Comprar");
case OP_SELL : return("Sell");
case OP_BUYLIMIT : return("Límite de compra");
case OP_SELLLIMIT : return("Límite de venta");
case OP_BUYSTOP : return("Buy Stop");
case OP_SELLSTOP : return("Sell Stop");
por defecto : return("Operación desconocida");
}
}

//+----------------------------------------------------------------------------+
//| Devolución de la configuración regional del usuario.
//| Parámetros: |
//| LCType - tipo de configuración regional (LCTYPE Constant) |
//+----------------------------------------------------------------------------+
string GetUserLocale(int LCType) {
int loc=GetUserDefaultLCID();
cadena str=" ";

GetLocaleInfoA(loc, LCType, str, 64);

return(str);
}

//+----------------------------------------------------------------------------+
//| sustituir la subcadena |
//| Parámetros: |
//| str - cadena de texto, en la que se realiza la sustitución ||
//| strfrom - subcadena a sustituir |
//| strto - sustituyendo la subcadena |
//+----------------------------------------------------------------------------+
string StrTran(string str, string strfrom, string strto) {
n;
string outstr="", tempstr;

for (n=0; n<StringLen(str); n++) {
tempstr=Substr(str, n, StringLen(strfrom));
if (tempstr==strfrom) {
outstr=outstr+strto;
n=n+StringLen(strfrom)-1;
} else outstr=outstr+Substr(str, n, 1);
}
return(outstr);
}

//+----------------------------------------------------------------------------+
//| Escribir la cadena en el archivo |
//| Parámetros: |
//| FileName - nombre del archivo ||
//| texto - cadena ||
//+----------------------------------------------------------------------------+
void WritingLineInFile(cadena FileName, cadena text) {
int file_handle=FileOpen(FileName, FILE_READ|FILE_WRITE, " ");

if (file_handle>0) {
FileSeek(file_handle, 0, SEEK_END);
FileWrite(file_handle, text);
FileClose(file_handle);
}
}
//+----------------------------------------------------------------------------+

 
Hola, ¿podríais decirme en qué carpeta poner las fuentes en MT4?
 
%windir% \N - fuentes
 

para el baltik


string NeedTime="9:00";
datetime time0=0;

//----------------------------------------------------------------------------
void start() 
{

 if ( time0>=StrToTime( NeedTime)) return; // если сегодня уже выполняли код
 if (TimeCurrent()<=StrToTime( NeedTime)) return; // если требуемое время ещё не наступио
 time0=TimeCurrent(); // иначе запоминаем время

// и делаем то что надо

// бла бла бла остальной код

Este hilo es para gente que está aprendiendo a programar, no para gente que te pide que escribas para ellos.

 
sergeev >>:
%windir% \ fonts

¿Puedes mantenerlo simple? No lo entiendo... ¿qué tipo de carpeta es? o ¿qué es?

 
chepikds >>:

можно как-то попроще, я ничего не понял... это что за папка? или что это вообще такое?


En realidad, la pregunta "qué carpeta poner las fuentes en MT4" tampoco está muy clara. Por favor, explíquelo en ruso. :)

Las fuentes no se almacenan en el terminal. Las fuentes son manejadas por el sistema operativo.

 
sergeev >>:

вообще-то вопрос "в какую папку вставить шрифты в МТ4" тоже не очень понятен.

в терминале никакие шрифты не хранятся. шрифтами занимается операционная система.

Bien, intentaré ponerlo en el sistema operativo...

 
Gracias sergeev , estáfuncionando.
 
sergeev писал(а) >>

para el baltik

Este hilo es para gente que está aprendiendo a programar, no para gente que te pide que escribas para ellos.

Gracias

Aprenderé :)

 

hola. he escrito un simple EA, utilizando los ejemplos del tutorial. el EA debe señalar cuando el precio se mueve fuera del rango, que consiste en dos MAs. es decir, si una barra se abrió en el rango y comenzó a subir y su precio actual se movió fuera de ella, a continuación, que emite un pitido. lo mismo va para abajo. pero el problema es que no puedo averiguar si hago esto

if (Bid > MA1 || Bid < MA2) // Comprobación del paso del rango
{
Alert("El precio está fuera del rango.");// Mensaje
}

Si el precio está por encima del rango, entonces el Asesor Experto me alertará, pero si hago esto

if (Bid > MA1 && Fact_Up==true) // Comprobar el paso al alza
{
Fact_Dn=true; // Informar del precio por encima de MA1
Fact_Up=false; // No informar del precio por debajo de MA1
Alert("El precio está por encima del rango.");// Mensaje
}
//--------------------------------------------------------------------
if (Bid < MA2 && Fact_Dn==true) // Check down pass
{
Fact_Up=true; // Informar del precio por debajo de MA2
Fact_Dn=false; // No informar del precio por encima de MA2
Alert("El precio está por debajo del rango.");// Mensaje
}

Si se muestra este mensaje, entonces no está nada claro, cuando da una señal - a veces da una señal, a veces no.

No consigo entender qué es el "Fact_Up==true" y por qué es necesario.

Razón de la queja: