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

 
Camaradas programadores, ¡una petición muy grande para ayudar a escribir un código para el robot! El robot comercia con dos muwings. Cuando se cruzan, abre una posición y la cierra en el cruce opuesto. Pero necesita abrir otra posición en el cruce opuesto. Por lo tanto, cuando se cierra "Comprar", el robot debe abrir inmediatamente "Vender" y viceversa.
Archivos adjuntos:
 
lufer:
Gracias, pero no funciona con Mas[N]; en OnInit(), ya lo he probado.
Bueno, lo siento, no estuve muy sobrio ayer. O no muy sobrio.
 
AlexeyVik:
Bueno, lo siento, no estaba muy sobrio anoche. O no muy sobrio.
)), sucede.
 

Supongamos que quiero que la matriz se llene con datos tomados de un indicador (por ejemplo ATR) de cada barra comenzando por la primera barra formada (#1). Es decir, el array está declarado y la función de inicio ya lo inicializa. ¿Cómo hacerlo correctamente?

¿así?

for(int i=0; i<N; i=i++)

{

Mas[i]=iATR(NULL,0,1,i+1);

}

O se puede hacer a través de:

for(int i=0; i<N; i=i++)

{

ArrayFill(Mas,i,1,iATR(NULL,0,1,i+1))

}

o algo totalmente distinto?, hasta ahora no he conseguido nada(, algo falla, por favor aconsejen, gracias de antemano.

 
lufer:

Supongamos que quiero que la matriz se llene con datos tomados de un indicador (por ejemplo ATR) de cada barra empezando por la primera barra formada (#1). Es decir, el array está declarado y la función de inicio ya lo inicializa. ¿Cómo hacerlo correctamente?

¿así?

for(int i=0; i<N; i=i++)

{

Mas[i]=iATR(NULL,0,1,i+1);

}


El primer caso es suficiente. Pero si necesita valores a partir de la primera barra, sería conveniente contar el bucle también desde 1.
 
evillive:
La primera opción es suficiente. Pero si necesitamos valores a partir de la primera barra, sería más razonable contar el ciclo desde 1.
He probado tanto con 1 como con 0, pero algo no va bien, los valores no se escriben, cuando pido que salgan algunos - sólo da ceros
 
lufer:
Lo he probado con 1 y 0, pero algo va mal, no se escriben valores, cuando pido que salgan algunos, sólo salen ceros
Por favor, muéstreme el código de salida.
 
evillive:
Mostrar el código para pedir la salida.

Te mostraré todo el código por si acaso:

//+------------------------------------------------------------------+

extern int    N        =100;                       // Количество баров

       int    Mas[];                             // Объявление массива

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+

int OnInit()
  { 
     ArrayResize(Mas,N,0);                // Установка размера массива      
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+

void OnDeinit(const int reason)
  {

  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+

void OnTick()
  {                                       
   for(int i=0; i<N; i=i++)                     // Цикл записи данных
     {                      

          Mas[i]=iATR(NULL,0,1,i+1);           // Вычисление значений          
     }
       Alert(Mas[0],"," ,Mas[50],"," ,Mas[99]);      // Вывод на экран
   return;                                           // Выход из start
  }
//+------------------------------------------------------------------+

 

Utilizar el SRC para insertar el código

 
lufer:

Te mostraré todo el código por si acaso:


hacer un array de tipo double
 
evillive:
hacer un array de tipo double
Esto no resuelve el problema, ahora parece que algo está mal enOnTick() - cuando cargo el EA en la ventana de la terminal no pasa nada, y cuando intento borrarlo, la terminal se detiene durante mucho tiempo y luego lo borra después de un rato. He intentado asignar manualmente valores a algunos elementos, todo está bien. Algo en el ciclo de inicialización del array parece estar mal.
Razón de la queja: