[¡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 642

 
gordeef:

Ya tengo cuidado con los retrocesos y las correcciones. Pero en cuanto al agotamiento de la tendencia también me interesa, me he paseado por el foro y he mirado en CodeBase, pero no he encontrado ningún índice sobre este tema. Será interesante leer sus resultados. Tengo otra pregunta, me enviaron un EA que controla mis pérdidas y ganancias, como en la imagen debería funcionar, pero la pregunta es, tiene un beneficio de 15 puntos y veo que el precio puede subir aún más, si aumento el beneficio en una u otra operación, puede romper los cálculos generales y el funcionamiento del EA?
Creo que la respuesta correcta a esta pregunta puede estar en las tripas de mi Asesor Experto... Tal vez lo responda alguno de los compañeros mucho más experimentados... Creo que su respuesta será más válida desde su experiencia - yo sólo soy un principiante... :)
 
artmedia70:

DE ACUERDO. Gracias, Víctor. Hasta ahora funciona correctamente. Hasta ahora, porque no lo he seguido durante mucho tiempo, pero NUNCA me había salido Trend Up. Ahora sí:


Sabía que siempre había un hechicero-mago más poderoso para un hechicero-aspirante... :)

Es todo en broma, por supuesto, pero... Víctor, quiero no sólo copiar ciegamente la solución correcta, y para averiguar y entender donde se esconde el perro, ¿cuál es la esencia del problema y este incomprensible para mí el comportamiento del código?


Problemas de lógica. No más que eso. Intenta dibujar diagramas de bloques. Ayuda
 

Me surgió otra duda: al principio estaba haciendo varias líneas, pero luego me di cuenta de que una de ellas sería superflua y sería más apropiado ponerla entre paréntesis en la forma de porcentaje numérico, así que la quité y la puse al lado de la que sólo había espacio para ella:

Así fue al principio:


Y así es ahora:


Me persiguen los ecos de eventos pasados... Cuando el EA se lanza por primera vez, antes de que llegue un nuevo tick, siempre muestra lo que... Aunque hace tiempo que no está en el código. ¿De dónde vienen los fantasmas?

 
artmedia70:

Me surgió otra duda: al principio estaba haciendo varias líneas, pero luego me di cuenta de que una de ellas sería superflua y sería más apropiado ponerla entre paréntesis en la forma de porcentaje numérico, así que la quité y la puse al lado de la que sólo había espacio para ella:

Así fue al principio:


Y así es ahora:


Me persiguen los ecos de eventos pasados... Cuando el EA se lanza por primera vez, antes de que llegue un nuevo tick, siempre muestra lo que... Aunque hace tiempo que no está en el código. ¿De dónde vienen los fantasmas?





Hay que mirar el código. Desmonta la lógica.
 
Vinin:

Problemas lógicos. Nada más. Intenta dibujar diagramas de bloques. Ayuda a

:):) Gracias... Eh... Ya tengo un "tartán" extendido en mi piso... ¡Mamma mia! No parece haber mucha lógica en las tres líneas. Resulta que cuando compruebas: si la 1ª, entonces hazla, si no haces la 1ª, por supuesto la 2ª viene después. Si la segunda falla, la tercera sigue...

No... Es así: Si es el primero, entonces es así... En caso contrario, si la 2ª, hacemos so-c, en caso contrario, si no la 1ª y no la 2ª, hacemos la 3ª y si no la 1ª, no la 2ª y no la 3ª, entonces buscamos errores de lógica...

Oh... Yo mismo estoy completamente confundido... Bueno, Víctor, tu adición se comporta correctamente, y ahora intentaré entender por qué necesito un operador else que parece estar en ese lugar donde se produce ese "otherwise" de todos modos, después de devanarme los sesos...

Gracias por los consejos.

 
Vinin:

Hay que mirar el código. Para ordenar la lógica.

Apenas tiene lógica: la simple salida de líneas en orden una tras otra...

/--------------------------------------------------------------- 1 --
// Функция вывода на экран графических сообщений.
//--------------------------------------------------------------- 2 --
  int Informations()
  {
   int   Win_ind;                     // Номер окна индикатора
   int   x,y;
   
   trH4     =Trend_PSAR(NULL,240);  // Четырёхчасовой тренд
   trH1     =Trend_PSAR(NULL,60);   // Часовой тренд
   trM30    =Trend_PSAR(NULL,30);   // Получасовой тренд
   trM15    =Trend_PSAR(NULL,15);   // 15-ти минутный тренд

//--------------------------------------------------------------- 3 --
   Win_ind= WindowFind("Info");        // Ищем номер окна индикатора
   if (Win_ind<0)return;               // Если такого окна нет, уходим
//--------------------------------------------------------------- 4 --
   x =10; y =17;
   ObjectCreate("Equ",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("Equ",OBJPROP_XDISTANCE,x);
   ObjectSet("Equ",OBJPROP_YDISTANCE,y);
   ObjectSetText("Equ",    "Свободные средства",9,"Tahoma",Gold);
   
   ObjectCreate("EquVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("EquVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("EquVal",OBJPROP_YDISTANCE,y);
   ObjectSetText("EquVal",DoubleToStr(Equ_NEW,2),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("Prof",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("Prof",OBJPROP_XDISTANCE,x);
   ObjectSet("Prof",OBJPROP_YDISTANCE,y*2);
   ObjectSetText("Prof",   "Уровень фиксации прибыли (      %)",9,"Tahoma",Gold);
   
   ObjectCreate("ProfVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ProfVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("ProfVal",OBJPROP_YDISTANCE,y*2);
   ObjectSetText("ProfVal", DoubleToStr(Equ_OLD+EquPerc,2),9,"Tahoma",Yellow);
//--------------------------------------------------------------------    
   ObjectCreate("Perc",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("Perc",OBJPROP_XDISTANCE,x*18);
   ObjectSet("Perc",OBJPROP_YDISTANCE,y*2);
   ObjectSetText("Perc", DoubleToStr(PercentEquityForClose,1),9,"Tahoma",Yellow);
   
//--------------------------------------------------------------------   
   ObjectCreate("Tral",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("Tral",OBJPROP_XDISTANCE,x);
   ObjectSet("Tral",OBJPROP_YDISTANCE,y*3);
   ObjectSetText("Tral",   "Уровень включения трала",9,"Tahoma",Gold);
   
   ObjectCreate("TralVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("TralVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("TralVal",OBJPROP_YDISTANCE,y*3);
   ObjectSetText("TralVal", DoubleToStr(Equ_OLD-EquPerc,2),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("Wloss",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("Wloss",OBJPROP_XDISTANCE,x);
   ObjectSet("Wloss",OBJPROP_YDISTANCE,y*4);
   ObjectSetText("Wloss",  "Порог выставления безубытка",9,"Tahoma",Gold);
   
   ObjectCreate("WlossVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("WlossVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("WlossVal",OBJPROP_YDISTANCE,y*4);
   ObjectSetText("WlossVal", DoubleToStr(LevelProfit,0),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("WlossPP",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("WlossPP",OBJPROP_XDISTANCE,x);
   ObjectSet("WlossPP",OBJPROP_YDISTANCE,y*5);
   ObjectSetText("WlossPP","Размер безубытка в пунктах",9,"Tahoma",Gold);
   
   ObjectCreate("WlossPPVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("WlossPPVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("WlossPPVal",OBJPROP_YDISTANCE,y*5);
   ObjectSetText("WlossPPVal",DoubleToStr(LevelWLoss,0),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("ATR",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ATR",OBJPROP_XDISTANCE,x);
   ObjectSet("ATR",OBJPROP_YDISTANCE,y*6);
   ObjectSetText("ATR",    "Волатильность рынка",9,"Tahoma",Gold);
   
   ObjectCreate("ATRVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ATRVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("ATRVal",OBJPROP_YDISTANCE,y*6);
   ObjectSetText("ATRVal", DoubleToStr(VolATR,0),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("TP",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("TP",OBJPROP_XDISTANCE,x);
   ObjectSet("TP",OBJPROP_YDISTANCE,y*7);
   ObjectSetText("TP",     "Размер Take Profit",9,"Tahoma",Gold);
   
   ObjectCreate("TPVal",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("TPVal",OBJPROP_XDISTANCE,x*23);
   ObjectSet("TPVal",OBJPROP_YDISTANCE,y*7);
   ObjectSetText("TPVal", DoubleToStr(TPatr,0),9,"Tahoma",Yellow);
//--------------------------------------------------------------------   
   ObjectCreate("trH4",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trH4",OBJPROP_XDISTANCE,x);
   ObjectSet("trH4",OBJPROP_YDISTANCE,y*9);
   
   ObjectCreate("ArrowH4",OBJ_LABEL,Win_ind,0,0,0,0);
   ObjectSet("ArrowH4",OBJPROP_XDISTANCE,x*8);
   ObjectSet("ArrowH4",OBJPROP_YDISTANCE,y*9);

   if (trH4==1)
      {
         ObjectSetText("trH4","Тренд H4",9,"Tahoma",Lime);
         ObjectSetText("ArrowH4",CharToStr(241),10,"Wingdings",Lime);
//         ObjectSetText("ArrowH4",DoubleToStr(trH4,0),9,"Tahoma",Lime);
      }
   else if (trH4==-1)
      {
         ObjectSetText("trH4","Тренд H4",9,"Tahoma",OrangeRed);
         ObjectSetText("ArrowH4",CharToStr(242),10,"Wingdings",OrangeRed);
//         ObjectSetText("ArrowH4",DoubleToStr(trH4,0),9,"Tahoma",OrangeRed);
      }
   else
      {
         ObjectSetText("trH4","Тренд H4",9,"Tahoma",LightGray);
         ObjectSetText("ArrowH4",CharToStr(240),10,"Wingdings",LightGray);
//         ObjectSetText("ArrowH4",DoubleToStr(trH4,0),9,"Tahoma",LightGray);
      }
//--------------------------------------------------------------------   
   ObjectCreate("trH1",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trH1",OBJPROP_XDISTANCE,x*10);
   ObjectSet("trH1",OBJPROP_YDISTANCE,y*9);
   
   ObjectCreate("ArrowH1",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ArrowH1",OBJPROP_XDISTANCE,x*17);
   ObjectSet("ArrowH1",OBJPROP_YDISTANCE,y*9);
   
   if (trH1==1)
      {
         ObjectSetText("trH1","Тренд H1",9,"Tahoma",Lime);
         ObjectSetText("ArrowH1",CharToStr(241),10,"Wingdings",Lime);
//         ObjectSetText("ArrowH1",DoubleToStr(trH1,0),9,"Tahoma",Lime);
      }
   else if (trH1==-1)
      {
         ObjectSetText("trH1","Тренд H1",9,"Tahoma",OrangeRed);
         ObjectSetText("ArrowH1",CharToStr(242),10,"Wingdings",OrangeRed);
//         ObjectSetText("ArrowH1",DoubleToStr(trH1,0),9,"Tahoma",OrangeRed);
      }
   else
      {
         ObjectSetText("trH1","Тренд H1",9,"Tahoma",LightGray);
         ObjectSetText("ArrowH1",CharToStr(240),10,"Wingdings",LightGray);
//         ObjectSetText("ArrowH1",DoubleToStr(trH1,0),9,"Tahoma",LightGray);
      }
//--------------------------------------------------------------------   
   ObjectCreate("trM30",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trM30",OBJPROP_XDISTANCE,x);
   ObjectSet("trM30",OBJPROP_YDISTANCE,y*10);
   
   ObjectCreate("ArrowM30",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ArrowM30",OBJPROP_XDISTANCE,x*8);
   ObjectSet("ArrowM30",OBJPROP_YDISTANCE,y*10);
   
   if (trM30==1)
      {
         ObjectSetText("trM30","Тренд M30",9,"Tahoma",Lime);
         ObjectSetText("ArrowM30",CharToStr(241),10,"Wingdings",Lime);
//         ObjectSetText("ArrowM30",DoubleToStr(trM30,0),9,"Tahoma",Lime);
      }
   else if (trM30==-1)
      {
         ObjectSetText("trM30","Тренд M30",9,"Tahoma",OrangeRed);
         ObjectSetText("ArrowM30",CharToStr(242),10,"Wingdings",OrangeRed);
//         ObjectSetText("ArrowM30",DoubleToStr(trM30,0),9,"Tahoma",OrangeRed);
      }
   else
      {
         ObjectSetText("trM30","Тренд M30",9,"Tahoma",LightGray);
         ObjectSetText("ArrowM30",CharToStr(240),10,"Wingdings",LightGray);
//         ObjectSetText("ArrowM30",DoubleToStr(trM30,0),9,"Tahoma",LightGray);
      }
//--------------------------------------------------------------------   
   ObjectCreate("trM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trM15",OBJPROP_XDISTANCE,x*10);
   ObjectSet("trM15",OBJPROP_YDISTANCE,y*10);
   
   ObjectCreate("ArrowM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ArrowM15",OBJPROP_XDISTANCE,x*17);
   ObjectSet("ArrowM15",OBJPROP_YDISTANCE,y*10);
   
   if (trM15==1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",Lime);
         ObjectSetText("ArrowM15",CharToStr(241),10,"Wingdings",Lime);
//         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",Lime);
      }
   else if (trM15==-1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
         ObjectSetText("ArrowM15",CharToStr(242),10,"Wingdings",OrangeRed);
//         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   else if (trM15==0)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",LightGray);
//         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
/*
   else
      {
         ObjectSetText("trM15","Хрен вам",9,"Tahoma",LightGray);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",LightGray);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",LightGray);
      }
*/
//--------------------------------------------------------------------   
   

//--------------------------------------------------------------------   
   WindowRedraw();                      // Перерисовываем все объекты
   return;
  }
//--------------------------------------------------------------- 9 --
 

Gente, por favor, comparta las plantillas listas, de trabajo (no glitchy) de Asesor de Expertos, por lo que sólo es posible cambiar la estrategia de negociación, con la posibilidad de cerrar la posición abierta a la opuesta si es necesario (inversión, pero para que la compra / venta en la condición no es a través de otro, pero con la posibilidad de prescribir por separado las condiciones:

si la condición es comprar
{
Opn_B=true; // Abrir el criterio de compra.
Cls_S=true; // Cerrar el criterio de venta. Vender
}
si la condición es vender
{
Opn_S=true; // Criterio abierto Vender
Cls_B=true; // Criterio cerrado Comprar Comprar criterio
} ), o TP/SL para cerrar la posición.

Me siento mareado, estoy luchando con esto durante un mes. No puedo mover las estrategias de negociación de Omega a MT, algún tipo de búferes / schmuffers, arreglos rebuscados y bloques de contabilidad, apertura / cierre y contabilidad de errores en mi Asesor Experto.

Gracias de antemano a todos los que han respondido.

 
Craft:

Gente, por favor, compartan las plantillas listas y en funcionamiento de un EA, para que sólo se pueda cambiar la estrategia de negociación, con la capacidad de cerrar una posición abierta en el lado opuesto (reversión), o por TP / SL, si es necesario.

Estoy dándole vueltas a la cabeza con la contabilidad de pedidos, los bloques de apertura/cierre y la contabilidad de errores.

Te voy a dar la respuesta, porque he estado "sudando" por ello durante mucho tiempo - sólo cuando se prueban las estrategias y se cambian rápidamente, se pueden dejar las órdenes fuera del juego, y archivar las órdenes y los errores también. Sólo hay que copiar lo que tiene en el libro de texto y dejarlos en paz. Trabaja sólo con Trade() y Criterion(), si estás siguiendo el tutorial de Sergei Kovalev. Criterion() - para encontrar puntos de entrada para sus estrategias, Trade() - para abrir/cerrar posiciones. Trabajar con ellos y cambiarlos es suficiente para probar las estrategias. Y luego, cuando seas bueno programando, llegarás a tus propias funciones, porque entenderás para qué sirve todo esto y cómo funciona...
 
artmedia70:
Voy a responder, porque yo mismo he estado "luchando" con ello durante mucho tiempo - sólo para probar estrategias y cambiarlas rápidamente, se puede dejar la contabilidad de órdenes fuera de la ecuación, y poner la contabilidad de errores en el estante, también. Sólo hay que copiar lo que tiene en el libro de texto y dejarlos en paz. Trabaja sólo con Trade() y Criterion(), si estás siguiendo el tutorial de Sergei Kovalev. Criterion() - para encontrar puntos de entrada para sus estrategias, Trade() - para abrir/cerrar posiciones. Trabajar con ellos y cambiarlos es suficiente para probar las estrategias. Y luego, al dominar la programación, llegarás a tus propias funciones, porque entenderás para qué sirve todo esto y cómo funciona...

Gracias, lo tengo todo probado, quiero probar a operar a través de MT para tener realmente en cuenta las órdenes y las posiciones abiertas/cerradas con correcciones de saldo si es necesario.
 
Vinin:

Hay que mirar el código. Desmonta la lógica.

El código del indicador más vacío... donde tampoco hay nada...

 
#property indicator_separate_window
#property indicator_minimum 1
#property indicator_maximum 10
 
bool initFinished=false;
// добавляем переменную, которая будет запоминать состояние инициализации.
// false - инициализации еще не было
// true - была
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{

   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
   ObjectsDeleteAll();
   // удаляем все объекты
   
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   if(initFinished==false)
   {
      IndicatorShortName("Info");
 
      int winID=WindowFind("Info");
   
      if(winID<0)
      {
         // если номер подокна равен -1, то возникла ошибка
         Print("Чёт не могу твоего окошечка найти, пошел я отсюдова");
         return(0);
      }  
//------------------------ Тут можно рисовать ------------------------- 
 
// ----------------------- Но не нужно... ----------------

//------------------------------------------------------------------------- 
      WindowRedraw();      
            
      initFinished=true;
     
   }
   
   return(0);
}