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

 
danya-asg:

He comprendido mi error, pero no he entendido cómo resolverlo. La tarea se inicia normalmente cada segundo, pero el tiempo desde el inicio de la vela actual no se cuenta correctamente.

La función Seconds() da salida a los segundos a partir de los datos del último tick conocido, pero necesito contar de alguna manera el número real de segundos desde la apertura de la vela de minutos en el momento en que se llama a la función, incluso si no hubo ningún tick en los últimos segundos.

TimeSeconds (TimeLocal()) o ( TimeLocal() - Time[0]) tampoco funcionará, porque la hora local puede diferir del servidor en varios segundos. ¿Cómo resolver el problema?


TienesOnTimer() ejecutándose cada segundo,

void OnTimer()
{
OnTick(); //-- старт каждую секунду
}
 
Alekseu Fedotov:


TienesOnTimer() ejecutándose cada segundo,


Pero para que el programa funcione correctamente necesito que muestre la hora del servidor cada segundo, y aquí depende de si el siguiente tick ha llegado o no. Si no lo hace, entonces ontimer se inicia pero muestra el tiempo de retraso, ese es el problema.
 

Lo único que se me ha ocurrido hasta ahora, pero está un poco torcido:

int sek
void OnTick()
{
if(Seconds() > sek)
sek = Seconds ();
Clicker (); //-- старт каждый тик
}
void OnTimer()
{
sek = TimeSeconds(TimeLocal());
Clicker (); //-- старт каждую секунду
}

Y para ello, he tenido que configurar el ordenador para que sincronice la hora cada 10 minutos.

 
danya-asg:

Lo único que se me ha ocurrido hasta ahora, pero está un poco torcido:

Y para ello, tuve que configurar el ordenador para que sincronizara la hora cada 10 minutos.


Tienes que hacer un temporizador de milisegundos de 100-200ms, y trabajar completamente dentro de él.
Los segundos son demasiado largos, y se deslizan con frecuencia.

EventSetMillisecondTimer(200);
GetTickCount();
 

El problema es hacer un búho en un indicador, y el stop arrastrarlo 2 velas después de la entrada, si la operación va en contra de la tendencia actual, entonces cerrar la operación y abrir una reversión, invirtiendo el stop de la misma manera. No tengo ni idea de cómo hacer una constante de 20 y 80 como punto de entrada y salida.

Archivos adjuntos:
f9h46khtl1.png  29 kb
 
novikov433:

El problema es hacer un búho en un indicador, y el stop arrastrarlo 2 velas después de la entrada, si la operación va en contra de la tendencia actual, entonces cerrar la operación y abrir una reversión, invirtiendo el stop de la misma manera. No tengo ni idea de cómo hacer una constante de 20 y 80 como punto de entrada y salida.

Perdóname, idiota borracho... Pero te diré una cosa: si estás tan seguro de que "este TS no va a fallar" ¿qué te impide ganar 20 dólares manualmente y pedir este EA a los autónomos? Te aseguro que la mayoría de la gente decente de allí no distribuirá este ST, y mucho menos asesorará en ningún sitio...
 
Alexey Viktorov:
Perdóname, idiota borracho ... Pero te diré lo siguiente: si estás tan seguro de que "este TS no va a fallar", ¿qué te impide ganar 20 dólares manualmente y pedir este EA en freelancer? Te puedo asegurar que la mayoría de la gente decente allí y no va a distribuir este TS, mucho menos asesor en cualquier lugar ...

Quiero aprender a hacer un EA. ¿Quizás el mercado cambie y tenga que pagar más, por ejemplo, para cambiar un poco el algoritmo?

No sé si realmente puedo hacerlo con algún constructor de búhos, pero prefiero entender las funciones básicas como hacer un stop en un lugar determinado o pedir una orden para operar en determinados días.

No sé por qué debo hacer 1,2,3 etc. incluso en el constructor y por qué debo conectar todo por flechas en tal orden. Quien en general estudia mql 4 y no crea cursos como los guerreros de Internet que no tienen nada que explicar por qué sucede así, en palabras, no harás nada nuevo por ti mismo y tendrás que copiar su código .... Es decir, saben qué orden es responsable de qué, y no se limitan a señalar al azar ..... Bueno, que los profesionales hagan pirámide, lote dinámico, parada inteligente; mi tarea es diferente - para descargar los filtros necesarios y comprender la esencia de la formación de la tendencia. Gracias por su ayuda.

 
novikov433:

Quiero aprender a hacer un EA. ¿Quizás el mercado cambie y tenga que pagar más, por ejemplo, para cambiar un poco el algoritmo?

En cuanto a la posibilidad de hacer una TS con algún constructor de búhos, debería ser realista para entender las funciones básicas como hacer una parada en un lugar determinado u ordenar la negociación en determinados días.

Es realista escribir TOR para ATC, y en el TOR especificar que se comentarían todas las líneas - usted pagará un poco más, pero verá cómo y qué funciona, y luego, poco a poco se hará cambios en el código de trabajo y ver los cambios - y así comienza la auto-formación.
 
novikov433: ... quieren... entender cómo hacer un EA ... quiero entender como hacer un EA ... quiero entender como hacer un EA ... pero este EA no debe ser realmente perdedor porque las ordenes con perdidas se mueven al Breakeven y solo necesito esperar a que la tendencia se mueva ... así que ya estoy trabajando en ello ...
Estimado novikov433 Como ya sabes las características simbólicas del robot de trading, tienes que tener cuidado al escribir tu robot de trading, ¡y tienes que tener cuidado al escribir tu robot de trading! Puede utilizar un ejemplo sencillo. Le doy a mi mujer una orden (encargo): comprar un cubo de patatas por la mañana temprano en el mercado, y a las 10 (análisis fundamental) el precio sube - vender. Pero a veces llega un camión de patatas a las 10:30 (noticias). Y el precio (en las noticias) baja instantáneamente y dura hasta el final del día, o incluso durante toda la semana. Pongo un Stop Loss - si el precio baja 10 rublos, vendo tan pronto como pueda (al precio de mercado). Cómo cambiar el orden, para evitar pérdidas. Si esta variante es interesante, escriba su correo electrónico en un mensaje personal.
 
Hola. Por favor, ayúdenme a solucionar un error al probar en el probador. Durante las pruebas, en todos los ticks, mi Asesor Experto abre la 1ª operación de sellstop, la condición no ha sido superada y la borra. El segundo sellstop se abre y se cierra aunque la condición no se haya disparado. Luego en el registro aparece un intento de cerrar buy2, ticket desconocido para la función orderclose. Pego el código ya que estoy trabajando y puede aparecer alguna imprecisión. El bloqueo de pedidos es habitual
Symb=Symbol();                               
   Total=0;                                     
   for(int i=1; i<=OrdersTotal(); i++)          
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) 
        {                                       
         if (OrderSymbol()!=Symb)continue;      
         if (OrderType()>1) continue;
         if (OrderType<=1)                     
            {
             Total++;                               
             if (Total>1)                           
               {
                Alert("Несколько рыночных ордеров. Эксперт не работает.");
                return;                             
               }
             Ticket=OrderTicket();                  
             Tip   =OrderType();                    
             Price =OrderOpenPrice();               
             SL    =OrderStopLoss();                
             TP    =OrderTakeProfit();              
             Lot   =OrderLots();                    
            }
        }

el bloque de cierre tampoco parece plantear muchas dudas, las condiciones se han demostrado simplificadas:

while(true)                                  
     {
      if (Tip==0 && Cls_B==true)                
        {                                       
         Alert("Попытка закрыть Buy ",Ticket);
         RefreshRates();                        
         Ans=OrderClose(Ticket,Lot,Bid,2);      
         if (Ans==true)                         
           {
            Alert ("Закрыт ордер Buy ",Ticket);
            break;                              
           }
         return;                                
        }
 
      if (Tip==1 && Cls_S==true)                
        {                                       
         Alert("Попытка закрыть Sell ",Ticket);
         RefreshRates();                        
         Ans=OrderClose(Ticket,Lot,Ask,2);      
         if (Ans==true)                         
           {
            Alert ("Закрыт ордер Sell ",Ticket);
            break;                              // Выход из цикла закр
           }
         return;                                // Выход из start()
        }
      break;                                    // Выход из while
     }

sería muy apreciado.