[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 830

 
gince:
Ceci est extrait de Moving Average.mq4
Vous avez dû modifier le code vous-même, et maintenant vous vous fiez à ce genre de choses).
 
Techno:
Il n'y avait pas de telles chaînes )) Vous avez dû modifier vous-même le code de l'EA il y a quelque temps, et maintenant vous êtes guidé par ces entrées vous-même ;)


Désolé, je me suis peut-être trompé. J'ai basé mon code sur Moving Average.mq4 et j'ai fait des changements dessus.

Je ne suis pas russe et il m'est parfois difficile de décrire ce que je veux.

 
gince:


Je ne suis pas russe et j'ai parfois du mal à décrire ce que je veux.

Mais tant que vous ne décrivez pas ce que vous voulez, il est difficile de vous aider.
 
abolk:
Mais tant que vous ne décrivez pas ce que vous voulez, il est difficile de vous aider.


Vous avez deux signaux

double tr0=iCustom(NULL,0, "trd",0,0);//peut être 0 ou 1. Si 1, alors acheter
double tr1=iCustom(NULL,0, "trd",1,0);//peut être 0 ou 1. Si 1 nous vendons

Je vais parler de la vente

Lorsque tr1 est égal à 1 après le prochain tick, alors la vérification commence au moment t pour voir si l'unité tiendra depuis t pour la période de temps tim . Le contrôle est effectué à des intervalles de temps delta. A titre d'exemple nous prenons t=........ //10.00 heure, tim = 600 sec, delta = 60 sec. Ainsi, à 10.00, il y a tr1=1 (avant il était 0). Mais nous ne le vendrons pas. La vente sera confirmée si le signal atteint 600 sec, soit 10.10. Le contrôle n'est pas effectué en permanence, mais dans des intervalles de temps delta=60 sec (10.00, 10.01, 10.02, ....... , 10.09, 10.10). Et si à chaque vérification tr1=1, alors nous donnons un signal de vente.

Il y a aussi un inconvénient : un zéro peut apparaître entre chaque contrôle et le signal peut être faux. Les contrôles peuvent être simplifiés, mais l'ordinateur est très occupé. Vous devriez trouver le juste milieu dans ce cas et voir ce qui se passe. Tout ceci est destiné à l'expérimentation.


 
gince:


Il existe deux signaux

double tr0=iCustom(NULL,0, "trd",0,0);//peut être 0 ou 1 . Si 1 nous achetons
double tr1=iCustom(NULL,0, "trd",1,0);//peut être 0 ou 1. Si 1 nous vendons


Il n'est pas clair, peut-on recevoir deux signaux différents (contradictoires) en même temps ?

 
abolk:

Ce n'est pas clair, peut-on recevoir deux signaux différents (contradictoires) en même temps ?


Non, ce n'est pas le cas. Ils sont pris dans des tampons différents et un seul d'entre eux peut en obtenir un. Combinaisons possibles

tr0 0 1 0

tr1 0 0 1

1 et 1 est une combinaison impossible

 
void init()
{
  isSign=false;
}

void start() // запускается с каждым тиком
{
   if(!isSign) // если сигнала нет
   {
      sign0=???; // формула определения sign
      if(sign0==1) // если сигнал поступил
      {
         t0=TimeCurrent(); //фиксируем время
         isSign=true; // переключатель - сигнал поступил
      }
   }
   if(isSign) // если сигнал есть
   {
      t=TimeCurrent(); // новое время
      if(t<=t0+delta) // если временной промежуток не закончился
      {
         sign1=???; //формула определения нового сигнала
         if(sign1!=sign0) // если новый сигнал изменился (не продержался)
         {
            isSign=false; // переключатель - сигнала нет
         }
      }
      if(t>t0+delta) // если промежуток закончился
      {
         if(isSign) // если сигнал удержался
         {
            //действия по сигналу
         }
      }
   }
}

Vérification à chaque tic, et non à intervalles discrets

Désolé si j'ai fait une erreur.

 
gince:


Non, ça ne peut pas. Ils sont pris dans des tampons différents et un seul d'entre eux peut donner 1. Combinaisons possibles

tr0 0 1 0

tr1 0 0 1

1 et 1 est une combinaison impossible

signal == 1.

activer la minuterie d'annulation.

Si le signal == 1, ne pas régler la minuterie de dérogation.

si le signal == -1, alors remettez à zéro le timer d'achat et mettez le timer d'achat à vendre.

si le signal == -1. ne pas toucher à la minuterie de vente.

si le signal est à 0, remettez les deux timers à zéro.

Si le compte à rebours est de 5 minutes, alors on peut y aller.

 
neama:


Le signal sig_bye== 1. Si 0, la minuterie ne démarre pas.
Régler la minuterie de la baie.
Si le signal ==1, laisser le temporisateur de la baie inactif.
Si le signal sig_bai== 0. alors réinitialiser le temporisateur de baie.

La minuterie décompte 5 minutes à des intervalles de, disons, une minute deux fois, donc nous travaillerons en bai.

Lorsque le signal sig_beam s'éteint== 1. Si 0, la minuterie ne démarre pas.
allumer la minuterie sel.
Si le signal Sat_en_esel==1, laissez la minuterie de sommeil inactive.
Si un signal Sig_sel==0 est arrivé, réinitialiser le retardateur.
le minuteur décompte pendant 5 minutes à intervalles d'une minute, disons deux fois par minute, puis se remet à zéro.



 
abolk:

Vérifier à chaque tique, et non à intervalles discrets

Désolé si j'ai fait une erreur.


Toutes les tiques sont inacceptables.