Erreurs, bugs, questions - page 1548

 
o_O:

Ok, regardez de l'autre côté alors.

Vous pouvez mettre artificiellement en parallèle - en plaçant le deuxième indicateur sur le graphique.

Et en accédant à la GlobalVariableSetOnCondition à partir des deux.

Je ne comprends pas.
 
comp:
Je ne comprends pas.

Le deuxième indicateur est un signal qui envoie des événements de ChartEvent à l'indicateur principal comme un personnalisé + change l'état de la variable globale par exemple par le temps en ms.

Dans l'indicateur principal, vous attrapez cet événement et commencez le calcul, + regardez la variable globale pour vous assurer qu'elle a le même temps ms que celui avec lequel vous avez commencé le calcul.

Si l'heure qui y figure a changé, cela signifie qu'un nouvel événement est arrivé - et vous brisez votre calcul actuel.

comme ça.

---

Ou vous pouvez simplement changer le ms dans le gp à chaque événement graphique, et le contrôler uniquement dans l'indicateur principal.

en général - le deuxième indicateur va paralléliser

 

Bonjour, un peu d'aide pour un débutant. Je n'arrive pas à gérer l'événement OnBookEvent.

Si vous appelez cet événement depuis onTick(), alors tout fonctionne. Si onTick() est vide, alors rien ne fonctionne. Je ne comprends rien, OnBookEvent est appelé lorsqu'il y a un changement dans le verre, c'est-à-dire qu'il s'agit d'un gestionnaire d'événement séparé, essentiellement de la même manière que onTick() est appelé lorsqu'un tick se produit. Pourquoi ça ne marche pas ?

Voici comment cela fonctionne. Comment ça marche, il imprime "N'importe quoi" quand un tick se produit, pas quand il y a un changement dans la tasse. Par exemple, le volume des offres a changé, à un certain prix, le gestionnaire OnBookEvent pour le changement de la coupe devrait être appelé, mais cela ne se produit pas. Si onTick() est laissé vide, il n'y aura même pas d'impression.

int OnInit()

{

if ! MarketBookAdd("RTS-6.16" )

{

Print("Erreur ",GetLastError() ) ;

}

sinon

{

Print("Done") ;

}

void OnDeinit(const int reason)

{

MarketBookRelease("RTS-6.16") ;

}

void OnTick()

{

OnBookEvent(_Symbol) ;

}

void OnBookEvent(const string &symbol)

{

MqlBookInfo book[] ;

MarketBookGet("RTS-6.16", book) ;

si(ArraySize(book) == 0)

{

printf("Failed load market book price. Reason : " + (string)GetLastError()) ;

retour ;

}

Print("N'importe quoi") ;

}

 
Je viens de l'essayer sur d'autres instruments et tout fonctionne !!!! Comment est-ce possible ? Il ne fonctionne que sur rts !!!
 
le problème est résolu, il fonctionne tout seul !
 

Erreur dans l'aide https://www.mql5.com/ru/docs/constants/structures/mqltraderequest

SL & TP Modification

Un ordre de transaction pour modifier les niveaux StopLoss et/ou TakeProfit. 4 champs sont requis :

-action

-symbole

-sl

-tp

-position

Ajout duposte mais le nombre de champs à remplir est toujours de 4.
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:

Erreur dans l'aide https://www.mql5.com/ru/docs/constants/structures/mqltraderequest

Ajout de laposition du champ mais le nombre de champs à remplir est toujours de 4.
Alexey, cela n'a aucun sens d'écrire ici, vous devez envoyer une demande au servicedesk. En même temps, il y aura + à l'évaluation )
 
Alexey Volchanskiy:
Alexey, il ne sert à rien d'écrire ici, vous devez envoyer une demande à Servisdek. En même temps, il sera + à l'évaluation )
Je suis trop vieux pour courir après la cote : )))) Ils ne le répareront pas et n'ont pas besoin de le faire.
 
o_O:

vous mettez le deuxième indicateur un signal qui vous envoie à l'indicateur principal comme un événement personnalisé de ChartEvent + changer l'état de la variable globale par exemple par le temps en ms

Dans l'indicateur principal, vous attrapez cet événement et commencez le calcul, + regardez la variable globale pour vous assurer qu'elle a le même temps ms que celui avec lequel vous avez commencé le calcul.

Si le temps qui y figure a changé, alors un nouvel événement est arrivé - et vous rompez votre calcul actuel.

comme ça.

---

Ou vous pouvez utiliser le signal pour changer le ms en gp à chaque événement graphique, et le contrôler uniquement dans l'indicateur principal.

en général - le deuxième indicateur va paralléliser

Je l'ai, merci. Malheureusement, cette solution ne fonctionne que dans un Expert Advisor (dans lequel le calcul doit être interrompu). Cela ne fonctionnera pas dans l'indicateur, car l'appel de l'indicateur sur le graphique ne crée pas une file d'attente de graphiques parallèles, il ne joint même pas un graphique spécifique, mais TOUS les graphiques de ce symbole.

Comment mettre l'indicateur comme ressource MQ5 au lieu de ressource EX5 ?

 
comp:

Compris, merci. Malheureusement, cette solution ne fonctionnera que dans Expert Advisor (dans lequel le calcul doit être interrompu). Cela ne fonctionnera pas dans l'indicateur, parce que l'appel de l'indicateur sur le graphique ne crée pas une file d'attente graphique parallèle, il entre dans la même file d'attente d'événements, pas même pour un graphique spécifique, mais pour TOUS les graphiques de ce symbole.

Comment faire passer l'indicateur comme ressource MQ5 au lieu de ressource EX5 ?

Tu ne peux pas. De plus, vous ne pouvez pas essayer de modifier le code (texte du programme) à partir d'un autre programme.
Raison: