[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 359

 
sergeev:
tout le monde
Je veux dire les normaux.
 
drm1:
Je veux dire normal

Qu'est-ce qui est normal ?
 
Zhunko:
Vous l'exprimez d'une drôle de façon... Montrez-moi le code qui fonctionnera avec des ticks, des positions ouvertes/fermées sans fonction de démarrage. Le code d'un Conseiller Expert complet sans la fonction strat ?

En fait, à en juger par votre portfolio, ce n'est pas à moi de vous expliquer quelque chose). Laissez-moi d'abord vous expliquer ma compréhension de la fonction start(), et pourquoi je n'aime pas l'idée d'y organiser un cycle. Je pense que la fonction start() est une procédure, allouée à l'utilisateur (ou plutôt à son programme - Expert) à partir du système d'interruption interne du programme terminal. Et pour boucler à l'intérieur de cette interruption ou pour organiser son propre système d'interruption - eh bien, je ne peux probablement pas le faire. Bien que, les spécialistes de MQ écrivent dans la documentation, s'il vous plaît - boucle while () dans vos mains, boucle comme vous voulez dans start(). Et qui nous empêche de tourner en boucle dans init(), à travers la même boucle vaille que vaille, et personne ne nous secouera de l'extérieur ! Toutes les variables et constantes sont accessibles, toutes les fonctions fonctionnent de la même manière. Voulez-vous obtenir un devis, avec quelle périodicité ? Voici un exemple de code, avec une périodicité de 5 secondes, vous obtiendrez une nouvelle cotation, obtenue à partir du dernier tick et sauvegardée dans le tableau Close [0] :

//-------------------------------------------
int init()
{
bool end ;
while(!end)
{
Sleep (5000) ;
Print ("Quote = ", Close[0]) ;
}
return(0) ;
}
//--------------------------------------------
int start() {return(0);}
//--------------------------------------------
int deinit() {return(0);}
//--------------------------------------------

Dans MT5, d'ailleurs, les développeurs ont déjà donné aux utilisateurs quelques interruptions, ce dont je les remercie humainement ! Je ne peux pas m'empêcher de citer :

Dans MQL5, plusieurs types d'événements peuvent contenir des fonctions de gestion prédéfinies
.

OnTick - réception d'un nouveau tick ;

OnTimer - événement lié à une minuterie ;

OnTrade est un événement commercial ;

OnChartEvent - événements d'entrée du clavier et de la souris, événements de déplacement de l'objet graphique, événement de fin d'édition de texte dans le champ d'entrée de l'objet LabelEdit ;

OnBookEvent - événement de changement d'état de la profondeur du marché.


 
Vinin:

Qu'est-ce qui est normal ?
pour fonctionner, le convertisseur standard ne fonctionne en aucun cas
 
drm1:
pour fonctionner, le convertisseur standard ne fonctionne en aucun cas

Cela fonctionne pour tout le monde.
 
sergeev:

tout le monde travaille.
C'est une bonne chose que tout le monde travaille, donc je suis lent.
 
Grein:

En fait, à en juger par votre portfolio, ce n'est pas à moi de vous expliquer quelque chose). Laissez-moi d'abord vous expliquer ma compréhension de la fonction start(), et pourquoi je n'aime pas l'idée d'y organiser un cycle. Je pense que la fonction start() est une procédure, allouée à l'utilisateur (ou plutôt à son programme - Expert) à partir du système d'interruption interne du programme terminal. Et pour boucler à l'intérieur de cette interruption ou pour organiser son propre système d'interruption - eh bien, je ne peux probablement pas le faire. Bien que, les spécialistes de MQ écrivent dans la documentation, s'il vous plaît - boucle while () dans vos mains, boucle comme vous voulez dans start(). Et qui nous empêche de tourner en boucle dans init(), à travers la même boucle vaille que vaille, et personne ne nous secouera de l'extérieur ! Toutes les variables et constantes sont accessibles, toutes les fonctions fonctionnent de la même manière. Voulez-vous obtenir un devis, avec quelle périodicité ? Voici un exemple de code, avec une périodicité de 5 secondes, vous obtiendrez une nouvelle cotation, obtenue à partir du dernier tick et sauvegardée dans le tableau Close [0] :

//-------------------------------------------
int init()
{
bool end;
while(!end)
{
Sleep (5000);
Print ("Котировка = ", Close[0]);
}
return(0);
}
//--------------------------------------------
int start() {return(0);}
//--------------------------------------------
int deinit() {return(0);}
//--------------------------------------------

Enfin, lisez la suite ici. Seules les fonctions avec période d'attente fonctionnent dans le conseiller expert et le démarrage du script. Il est strictement interdit dans tous les autres lieux.

Votre code ne correspond pas aux normes de MQL4. De plus, il a été écrit quelque part que le temps d'attente dans les fonctions ininit et deinit lors d'un appel système est limité à 2,5 secondes. Ensuite, la fonction est interrompue de force.

 

Experts, un conseil ! Comment mettre cela en pratique dans la vie ? Je travaille avec l'indicateur "Bollinger Bands", j'ai besoin d'activer le seuil après le franchissement de la ligne du milieu.

1. Tout selon la norme, si le prix est < la ligne inférieure, alors Bay

2. Si > la ligne supérieure, alors Vendez

Si le prix franchit la ligne du milieu, le TrailingStop est activé.

Question d'attention ! Comment associer le seuil du trailing stop à la ligne du milieu ?

 
Top2n:

Experts, un conseil ! Comment mettre cela en pratique dans la vie ? Je travaille avec l'indicateur "Bandes de Bollinger", j'ai besoin d'activer le seuil de déclenchement après le franchissement de la ligne du milieu.

1. Tout selon la norme, si le prix est < la ligne inférieure, alors Bay

2. Si > la ligne supérieure, alors Vendez

Si le prix franchit la ligne du milieu, le TrailingStop est activé.

Question d'attention ! Comment associer le seuil du trailing stop à la ligne du milieu ?


La première chose qui m'est venue à l'esprit :
Si la ligne inférieure est à 20 et la ligne supérieure à 40, alors la ligne qui se trouve exactement au milieu entre les deux, à quel niveau sera-t-elle située ?

Je suis sûr que vous répondrez rapidement - au niveau 30. Et maintenant, avec un peu de chance, vous pouvez trouver comment calculer tout cela. Bien que... vous trouverez peut-être une autre méthode... :)

 
Top2n:

Experts, un conseil ! Comment mettre cela en pratique dans la vie ? Je travaille avec l'indicateur "Bandes de Bollinger", j'ai besoin d'activer le seuil de déclenchement après le franchissement de la ligne du milieu.

1. Tout selon la norme, si le prix est < la ligne inférieure, alors Bay

2. Si > la ligne supérieure, alors Vendez

Si le prix franchit la ligne du milieu, le TrailingStop est activé.

Question d'attention ! Comment régler le seuil du trailing stop sur la ligne centrale ?



1. "Tout selon la norme, si le prix a obtenu < la ligne de fond, alors Wow" - ouais, et si elle a obtenu plus élevé, alors acheter dépôt... :-))) Apprenez à lire et à écrire pour commencer - Bay - c'est de l'Aglitsky pour le moment... D'une manière ou d'une autre, je suis sûr que ce n'est pas une erreur d'impression...

2. Vous avez par Bollinger - vous avez un accès direct à ses limites supérieures et inférieures...ou plutôt à leurs valeurs... obtenir ces valeurs.

"Si la ligne inférieure est à 20 et la ligne supérieure à 40, la ligne qui se trouve exactement à mi-chemin entre les deux, à quel niveau se situera-t-elle ?" -.

comme les gens vous l'ont déjà recommandé...

Additionnez ces valeurs et divisez-les par deux - vous obtenez ainsi la ligne médiane de cet indicateur - cette valeur et le seuil de déclenchement du chalut.

P.S. Artem, désolé d'avoir "corrigé" le début de votre réponse - je l'ai trop aimée ... et après mon commentaire sur cette question - j'avais besoin de terminer ce "seuil du trailing stop à la ligne médiane ".