Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 313

 
 
Burger:
Necesito una crítica sobre la línea de ayuda de EA https://docs.google.com/document/d/1Bkqu7NzSj8mrNsa5iO8lB6UmKNCJ4YiaY-wKXzbF3Wo/pub


Me gusta criticar, pero hay mucho - sólo he hojeado el primer párrafo

El archivo no se sujeta bien (( Ahora lo subiré a un sitio para compartir archivos.

 
VladislavVG:

Si esto siempre el más cercano entonces puede ser bastante sencillo y, por supuesto, no se necesitan magos. Pero no hemos oído nada al respecto de la PGM5, y en el caso general puede que no sea la orden más cercana, sino una orden más alejada del precio actual, y entre medias se pueden colocar órdenes por otros motivos: no sabemos nada del algoritmo de toma de decisiones. Sólo hablamos de órdenes relacionadas.
Por alguna razón tengo en mi mente que el más cercano debe ser eliminado. Los demás están más lejos y se abren en condiciones diferentes. Y como la orden pendiente más cercana es la opuesta a la del mercado, tenemos todos los datos para encontrarla correctamente.
 
PGM5:
Gracias por su apoyo. ¿Puede decirme dónde buscar la respuesta a esta pregunta? Sí, una cosa más: las órdenes deben establecerse cuando se dispara una orden y cuando se dispara el takeprofit y la más cercana debe borrarse antes. Gracias de antemano.

Ya estás empezando a escribir la RPT. ¿Has empezado a hacer algo? ¿O estás esperando a los peces? En este hilo ayudan a los que quieren aprender a programar en mql4 gratis, no a los que quieren conseguir una solución gratuita ya hecha.
 
43
alexey1979621 29.11.2013 11:52 #

¡Saludos a todos! Pido ayuda para resolver un problema interesante. Hay un EA, cuya característica es que después de obtener un beneficio las siguientes operaciones del 1 al 4 se cierran con stop loss, y luego vuelven a obtener beneficios. El Asesor Experto abre operaciones basadas en la señal del indicador. Para excluir las operaciones rentables que siguen después de la ganancia, uno debe omitir las señales generadas por el indicador, es decir, no cerrar las operaciones (1,2,3,4) después de obtener una ganancia. Para ello se dispone de la función Sig. Sin embargo, creo que escribí mal esta función ya que el EA no abre órdenes con ella en absoluto y todo funciona muy claro sin ella. Quizá también haya un error en la condición. En general, .... No sé qué demonios es, no he podido arreglar este bloqueo durante dos semanas. ¿Podrían aconsejarme, señores inteligentes, dónde está el error?

Sí, señal es el número de señales después de un beneficio y pynkt es el tamaño del beneficio en pips.

Le agradecería cualquier ayuda.

void CheckForOpen()
{
   int ticket, STOPLEVEL;
   double Price, SL, TP; 
   STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);


   double MA1Low = NormalizeDouble (iMA(NULL,0,MA_Period_2,MA_Shift_2,MA_Method_2,0,1), Digits); 
   double MA2High = NormalizeDouble (iMA(NULL,0,MA_Period_2,MA_Shift_2,MA_Method_2,1,1), Digits);
   
 
  
   if(Volume[0]>1) return;

    // продажа
   if (Open[1]>Close[1] && Open[1] > MA1Low && Close[1] < MA1Low)
   
{
      if(Pro(1,100))

   {
       ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,"Pattern_1",1000,0,Red);
      return;
    }
   
  }  
//---- buy conditions
   // покупка
  if (Open[1]<Close[1] && Open[1] < MA2High && Close[1] > MA2High)
 
 { 
   if(Pro(1,100))
   {
      ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP,"Pattern_1",1000,0,Blue);
      return;
   }       
   }
}
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Sig(int signal,int pynkt)
 {
  static int cnt = 0;
  static datetime tm;
  if(Time[0] == tm) return(false);
  tm = Time[0];
  if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY) == true)
   {
    cnt = cnt + 1;
    if(OrderType() == OP_BUY && OrderClosePrice() - OrderOpenPrice() < pynkt*Point) cnt = 0;
    if(OrderType() == OP_SELL && OrderOpenPrice() - OrderClosePrice() < pynkt*Point) cnt = 0;
    if(cnt >= signal) return(true);
   }
  return(false);
 }
//+------------------------------------------------------------------+
 
artmedia70:
Estás empezando a escribir los TdR. ¿Has empezado a hacer algo por ti mismo? ¿O estás esperando al pez? En este hilo ayudan a los que quieren aprender a programar en mql4 gratis, no a los que quieren conseguir una solución gratuita ya hecha.



Hola. Soy un principiante en programación. Sólo he utilizado el foro y un tutorial para aprender. Al principio lo entendí todo, pero cuando llegué a las funciones generales, empecé a malinterpretar algo, por cierto, durante la correspondencia, había aprendido algo... He cogido el script de ahí, el script de ahí y he subrayado algunas cosas del foro. Lo he probado en la demo: muestra beneficios, pero los guiones son simples: las órdenes no siempre se colocan y una sola orden perdida provoca un fallo del sistema. Lo he probado en la cuenta real: se colocan todas las órdenes (pero esta vez no había huecos), da beneficios, pero se abren muchas posiciones innecesarias. Me di cuenta de que los simples scripts y funciones no pueden resolver este problema y pedí ayuda. El Asesor Experto es rentable, pero necesita algo de "ayuda" con sus manos. Estoy pensando en automatizar esta "ayuda" con el tiempo.
 
archivo del asesorhttp://drive.google.com/file/d/0B0Zxi_UuVVTZejc3Tmg1Zk5ablU/edit?usp=sharing
 
alexey1979621:
43
alexey1979621 29.11.2013 11:52 #

¡Saludos a todos! Pido ayuda para resolver un problema interesante. Hay un EA, cuya característica es que después de obtener un beneficio las siguientes operaciones de 1 a 4 se cierran con stop loss, y luego con beneficio de nuevo. El Asesor Experto abre operaciones basadas en la señal del indicador. Para excluir las operaciones rentables que siguen después de la ganancia, uno debe omitir las señales generadas por el indicador, es decir, no cerrar las operaciones (1,2,3,4) después de obtener una ganancia. Para ello se dispone de la función Sig. Sin embargo, creo que escribí mal esta función ya que el EA no abre órdenes con ella en absoluto y todo funciona muy claro sin ella. Quizá también haya un error en la condición. En general, .... No sé qué demonios es, no he podido arreglar este bloqueo durante dos semanas. ¿Podrían aconsejarme, señores inteligentes, dónde está el error?

Sí, señal es el número de señales después de un beneficio y pynkt es el tamaño del beneficio en pips.

Le agradecería cualquier ayuda.


La función Sig() prohíbe la apertura de operaciones si no existe un historial de órdenes (devuelve false)
 
Vinin:

La función Sig() prohíbe la apertura de operaciones si no existe un historial de órdenes (devuelve false)
Asumí que el historial en el probador es simulado (así que me equivoqué). Parece que deberíamos realizar una función de búsqueda de la última orden por un simulador, un deslizador y descartar las órdenes pendientes. Mi cerebro lo entiende (si estoy pensando en la dirección correcta), pero no puedo usar mis propias manos para ejecutar el código. ¿Puedes darme una pista? Gracias por la ayuda.
 
alexey1979621:
Supuse que el historial en el probador era simulado (por lo que me equivoqué). Resulta que hay que hacer una función de búsqueda de la última orden, por simul, medj, y descartar las pendientes. Mi cerebro lo entiende (si estoy pensando en la dirección correcta), pero no puedo usar mis propias manos para ejecutar el código. ¿Puedes darme una pista? Gracias por su ayuda.
¡Todos tus consejos!
Documentación Tutorial

Y funciones:

GetIndexLastPos - Devuelve el índice de la última posiciónabierta o -1
GetLotLastPos - Devuelve el tamaño del lote de la última posición abierta o -1

¡Y muchos otros muy útiles!

Razón de la queja: