Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 899

 
Camarades programmeurs, une très grande demande pour aider à écrire un morceau de code pour le robot ! Le robot négocie sur deux muwings. Lorsqu'ils se croisent, il ouvre une position et la ferme au croisement opposé. Mais il doit ouvrir une autre position au croisement opposé. Ainsi, lorsqu'il ferme "Achat", le robot doit immédiatement ouvrir "Vente" et vice versa !
Dossiers :
 
lufer:
Merci, mais cela ne fonctionne pas avec Mas[N] ; dans OnInit(), j'ai déjà essayé.
Eh bien, je suis désolé, je n'étais pas très sobre hier. Ou pas très sobre.
 
AlexeyVik:
Eh bien, je suis désolé, je n'étais pas très sobre la nuit dernière. Ou pas très sobre.
)), cela arrive.
 

Supposons que je veuille que le tableau soit rempli de données provenant d'un indicateur (par exemple ATR) pour chaque barre à partir de la première barre formée (#1) ? C'est-à-dire que le tableau est déclaré et que la fonction de démarrage l'initialise déjà. Comment le faire correctement ?

comme ça ?

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

{

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

}

Ou il peut être fait via :

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

{

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

}

ou quelque chose d'autre entièrement ?, jusqu'à présent je n'ai pas réussi de quelque manière que ce soit(, quelque chose de mal, s'il vous plaît conseiller, merci à l'avance.

 
lufer:

Supposons que je veuille que le tableau soit rempli de données provenant d'un indicateur (par exemple ATR) pour chaque barre à partir de la première barre formée (#1) ? C'est-à-dire que le tableau est déclaré et que la fonction de démarrage l'initialise déjà. Comment le faire correctement ?

comme ça ?

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

{

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

}


Le premier cas est suffisant. Mais si vous avez besoin de valeurs à partir de la première mesure, il serait judicieux de compter la boucle à partir de 1 également.
 
evillive:
La première option est suffisante. Mais si nous avons besoin de valeurs à partir de la première barre, il serait plus raisonnable de compter le cycle à partir de 1.
J'ai essayé avec 1 et 0, mais il y a toujours quelque chose qui ne va pas, les valeurs ne sont pas écrites, quand je demande d'en sortir certaines, cela ne donne que des zéros.
 
lufer:
J'ai essayé avec 1 et 0, mais ça ne marche toujours pas, aucune valeur n'est écrite, et quand je demande d'en sortir certaines, ça ne sort que des zéros.
Veuillez me montrer le code de sortie.
 
evillive:
Montrez le code pour demander la sortie.

Je vais vous montrer tout le code juste au cas où :

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

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
  }
//+------------------------------------------------------------------+

 

Utilisez SRC pour insérer le code

 
lufer:

Je vais vous montrer tout le code juste au cas où :


faire un tableau de type double
 
evillive:
faire un tableau de type double
Cela ne résout pas le problème, il semble maintenant que quelque chose ne va pas dansOnTick() - lorsque je charge l'EA dans la fenêtre du terminal, rien ne se passe, et lorsque j'essaie de le supprimer, le terminal se bloque pendant un très long moment, puis le supprime après un certain temps. J'ai essayé d'attribuer manuellement des valeurs à certains éléments, tout est OK. Quelque chose à propos de la boucle d'initialisation du tableau semble être faux.
Raison: