[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 43

 
r772ra:
Alternativamente, puede establecer cualquier momento después de la llegada de la señal
Mi variante implica un límite (después de la llegada de la señal) para realizar algunas acciones (en este caso para abrir una orden) de 1 minuto. Y entonces: si llegas tarde, llegas tarde. Supongamos que la conexión con el servidor se interrumpe justo después de recibir la señal y se reanuda en una hora. ¿Por qué abrir un pedido una hora más tarde? ;)
 
TarasBY:

En una variable global, escriba el valor del tiempo en el momento de la señal:

y luego cuente su minuto (puede hacerlo):

Esta es una de las soluciones para hacer un seguimiento del tiempo después de que se produzca un evento.


Desafortunadamente no funciona, después de un minuto la línea de soporte y la línea de resistencia deberían ser dibujadas como una acción, pero por alguna razón no están en el gráfico. Por favor, eche un vistazo al código, ¿dónde está el error?


bool  Fact_1 = false;                    // Глобальная перемен для бай.    
bool  Fact_2 = false;                    // Глобальная перемен для бай
bool  Fact_3 = false;                    // Глобальная перемен для бай

double support;
double resist;

 int timeFrame = 5;
 int numBars = 15;
 datetime gdt_TimeSignal;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

  ObjectsDeleteAll();  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----


   //---------------------------------------------------------------------------
if (Fact_3==true)                            //Если событие уже..
          
                                              //..было, то выходим
     return(0);
 
//----

  //---- БЛОК ОТКРЫТИЯ  BUY--------------------------------------------------------------
 
 if (iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,2)<iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0)&&
iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,1)>=iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0))//если МА50 пересекает МА200 снизу вверх по M5
Fact_1 = true;       // Произошло событие 1  
//-
if (Fact_1 == true &&  Low[0]<= iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,0))//если цена опустилась до МА50
 Fact_2 = true; // Произошло событие 2  


//if (Signal) gdt_TimeSignal = TimeCurrent();
if (Fact_2) gdt_TimeSignal = TimeCurrent();


  if (gdt_TimeSignal != 0) if (iBarShift (NULL, 1, gdt_TimeSignal) == 1)
    {
        //---- Открываете ордер
       // OrderSend ();
  //---------------------------------------------------------------------------------    
{
// Определяем линии поддержки\сопротивления
  support = 10000;
  resist = 0;
 
  for(int u = 1;u<=numBars;u++)
  {
   if(support>iLow(Symbol(),timeFrame,u))
     support = iLow(Symbol(),timeFrame,u);
   if(resist<iHigh(Symbol(),timeFrame,u))
     resist = iHigh(Symbol(),timeFrame,u);
  }   
   ObjectSet("lineSupport",OBJPROP_PRICE1,support);
  ObjectSet("lineResist",OBJPROP_PRICE1,resist);
 
 }


 //----
  {
    ObjectCreate("lineSupport",OBJ_HLINE,0,0,0);
    ObjectSet("lineSupport",OBJPROP_COLOR,Blue);
    
    ObjectCreate("lineResist",OBJ_HLINE,0,0,0);
    ObjectSet("lineResist",OBJPROP_COLOR,Red);
    }
//-------------------------------------------------------------
 
        gdt_TimeSignal = 0;
    }



//что сюда добавить что бы линии появившись, оставались на месте?




//----
   return(0);
  }

 
TarasBY:

Aquí se escriben tonterías:

Lea sobre iCustom().


Gracias. Lo he leído. Quizá deba buscar un ejemplo, no entiendo una mierda.
 
Andrey-F:

Por favor, ayúdenme, díganme cómo implementar el código EA en dos o tres líneas:

Cuando llega una señal (por ejemplo, el cruce de dos MA)

1.Expert Advisor determina el tiempo de la señal (en horas, minutos), lo almacena;

2. Cuenta atrás de un minuto.

Entonces el Asesor Experto está listo para realizar una acción (por ejemplo, abrir una orden).

Todos, GRACIAS, todo funciona como debe, solo que no inserté la señal de la manera correcta.
 

No puedo entender la publicación del indicador en Codabase. Como un estado está listo para la publicación es decir, lógicamente, tienen que esperar hasta que el moderador colocará en el acceso general este pavo, pero ha sido un par de días y ningún resultado. ¿Cuál puede ser el problema?

ps. esta es mi primera publicación del código aquí

 
madzx:

Sí, supongo que sí. Ya le he cogido el tranquillo, ¡puedo prescindir fácilmente de la escritura en disco!
Sólo estoy atando las riendas de un terminal estándar a otro
Estoy atando las riendas de un terminal estándar para otro).

Perdóname, pero vamos a tener que hacerlo de todos modos.
porque como dijo Sir Freddie Mercury.
El espectáculo debe continuar.

Así que vamos a aclarar las especificaciones.
Según tengo entendido:

1. En una cuenta tengo un montón de ventanas abiertas (10 piezas) con cualquier conjunto de gráficos de pares de divisas

2. En cada gráfico se encuentra un caballo de batalla - un Asesor Experto, que hace algo.

3. La cuenta debe cumplir las siguientes condiciones:

3.1 El número total de órdenes de mercado abiertas en la cuenta no debe ser superior a 5.
Las órdenes del tipo caballo (pendientes) no deberían contarse como tales (creo que sí, pero no lo has especificado)
3.2 A partir de un conjunto de gráficos de la cuenta, se forma una determinada lista de símbolos,

El tipo de instrumentos financieros negociados y cada uno de los instrumentos no puede tener más de una orden abierta al mismo tiempo.

en un momento dado no puede tener más de una orden abierta.

---------------------------------------------------------

Algo así. Compruebe si todo es correcto.
Entonces, por favor, díganos en qué idioma debe hacerse (como mq4 o mq5)
y la lista de instancias para las que negocia: ¿es fija o diferente cada vez?

Creo que debería ser una pasta corta en el texto de cada EA

(que luego puede presentar como un procedimiento si lo desea) le permitirá

decidir sobre los permisos existentes actualmente para cualquier acción ...

Me gustaría despedirme ahora ya que son las 5 de la mañana :))

madzx




Gracias por su participación. Pero no creo que sea necesario.

El problema se solucionó de la siguiente manera, como sugirió r772ra:

O tal vez así:

if(NumberOfPositions("EURUSD")==0 && NumberOfPositions()<5)
Y aquí hay una función
 
Roman.:

No te alejes en medio de la nada. Puedes hacer transacciones de exp para símbolos mágicos únicos (asigna tu orden mágica a TU exp en los símbolos seleccionados). A continuación, utilizando el operador condicional if - else, se conecta el filtro por símbolos y símbolos mágicos, utilizando esta función de Kim I.V. con diferentes valores de entrada:

Función NumberOfOrders().

. Eso es todo.




Gracias, he encontrado una solución más sencilla.
 
Kobalerro:

Gracias, se ha encontrado una solución más sencilla.

¡BIEN! Gracias por publicar la solución.
 
Kobalerro:

Gracias por su participación. Pero no creo que haya nada más.

El problema se solucionó de la siguiente manera, como sugirió r772ra:

O tal vez así:

Y aquí está la función

¡BIEN! ¡¡¡Siga la tendencia y tenga una buena cacería !!!

madzx
 
Kobalerro:

Gracias por su participación. Pero no creo que haya nada más.

El problema se solucionó de la siguiente manera, como sugirió r772ra:

O tal vez así:

Y aquí la función

Si te gusta esta solución, puedes simplificar aún más el código:

if(NumberOfPositions("EURUSD")==0 && OrdersTotal()<5)

Pero probablemente sea más correcto escribirlo así:

if(NumberOfPositions(Symbol())==0 && OrdersTotal()<5)

Si no es "infantil", entonces hay que usar Magik (tarde o temprano, querrá abrir una orden manual o poner otro EA cerca, también):

if(NumberOfPositions(Symbol(), Magic)==0 && NumberOfPositions("", Magic)<5)

En este caso, todos los EAs deben tener el mismo Magik y no olvidar utilizar filtros en el Magik y el símbolo del gráfico durante otras operaciones con la lista de órdenes:

    for (int li_pos = OrderTotal() - 1; li_pos >= 0; li_pos--)
    {
        if (!OrderSelect (li_pos, SELECT_BY_POS, MODE_TRADES)) continue;
        if (OrderMagicNumber() != Magic) continue;
        if (Symbol() != OrderSymbol()) continue;
        //---- дальнейшие опреации (модификация, удаление и т.д.)
    }

Espero que hayas declarado el magik en variables externas, o como una constante:

#define Magic  555