Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 356

 
Nauris Zukas:

Merci, mais je devrais alors également mettre les données à l'échelle (si je vous comprends bien). Il semble que la mise à l'échelle des données soit la seule solution.

Pourquoi changer d'échelle ? Utilisez simplement 2 tampons, mettez les valeurs positives dans l'un et les valeurs négatives dans l'autre. Si le calcul ne produit que des valeurs positives, vous pouvez les multiplier par -1. Mais si le calcul produit à la fois des valeurs positives et négatives, alors ma suggestion ne convient pas.

Vous pourriez alors créer des histogrammes de différentes largeurs. D'abord, le tampon qui est affiché avec un histogramme large est rempli de valeur, puis celui qui est affiché avec un histogramme fin est rempli de valeur.

Cela produira un histogramme. Quatre tampons sont utilisés ici.


 
Alexey Viktorov:

Pourquoi changer d'échelle ? Utilisez simplement 2 tampons, mettez les valeurs positives dans l'un et les valeurs négatives dans l'autre. Si le calcul ne produit que des valeurs positives, vous pouvez les multiplier par -1. Mais si le calcul produit à la fois des valeurs positives et négatives, alors ma suggestion ne convient pas.

On peut alors faire des histogrammes de différentes largeurs. Tout d'abord, le tampon affiché dans l'histogramme large doit être rempli de valeurs, puis le tampon affiché dans l'histogramme fin doit être rempli de valeurs.

Cela produira un histogramme. Quatre tampons sont utilisés ici.


Merci, mais cela ne conviendra pas à cette variante car les tampons avec les lignes seront par exemple dans la plage de 1.19653 à 1.19674 et l'histogramme sera de 0 à 250. Tics et propagation dans une fenêtre, c'est pourquoi j'ai voulu faire un deuxième axe Y.

 
Nauris Zukas:

Merci, mais cela ne fonctionnera pas, car le tampon avec les lignes sera par exemple dans la gamme de 1.19653 à 1.19674 et l'histogramme sera de 0 à 250. Tics et propagation dans une fenêtre, c'est pourquoi j'ai voulu faire un deuxième axe Y.

Je suis d'accord, ça n'ira pas. Mais ! !! Que va faire le détartrage ? Peut-être diviser les valeurs de l'histogramme par 100 ? Ou multiplier par 0,01...

 
Alexey Viktorov:

Je suis d'accord, ça n'ira pas. Mais ! !! Que ferait le détartrage ? Que diriez-vous de diviser les valeurs de l'histogramme par 100 ? Ou multiplier par 0,01...

Jusqu'à présent, le concept suivant : nous prenons la valeur max/min des tampons linéaires et faisons le spread maximum sous ces valeurs, les autres spreads sont mis à l'échelle sous le maximum.

 
Artyom Trishkin:

Le courtier n'autorise donc pas l'autotrading pour votre compte, puisque tout est activé et que l'EA n'ouvre pas de positions ou ne passe pas d'ordres.

Que montre le journal lorsque l'EA essaie d'envoyer une demande de transaction au serveur ?

Les ordres sont placés mais IsTradeAllowed() est 0. Comment est-ce possible ?

 
Andrei:

Voulez-vous dire permettre le trading automatique ? Ceci est également permis...

Est-il utile d'appeler le service d'assistance du courtier ?

 
Andrei:

Les ordres sont placés mais IsTradeAllowed() est 0. Comment cela est-il possible ?


le compte est compétitif ?

Il y a au moins quatre paramètres à vérifier :

ACCOUNT_TRADE_EXPERT
ACCOUNT_TRADE_ALLOWED
TERMINAL_TRADE_ALLOWED
IsTradeAllowed(_Symbol,TimeCurrent())
 

Pouvez-vous me dire comment écrire un code permettant de comparer le tick actuel avec le tick précédent pour l'instrument commercial sélectionné ?

J'ai besoin de comparer : si Tick (actuel) > Tick (précédent), alors procéder à l'exécution de ces ticks, et vice versa, si Tick (actuel) < Tick (précédent), alors procéder au calcul des ticks2.

Ainsi, je veux calculer combien de ticks dans chaque barre, sur le graphique et la période sélectionnés, font augmenter le prix et combien le font diminuer.

Veuillez me conseiller ! Je suis en train d'écrire mon premier indicateur de formation, et le premier programme de ma vie :(

Est-ce que je l'ai fait correctement ?

int Tick ;

int Tick2 ;

int start()

si((Bid - Bid[1]) > 0)

{

Tick++ ;

retour ;

}

sinon

{

Tick2++ ;

retour ;

}

 
YarTrade:

Pourriez-vous me dire comment écrire un code pour comparer le tick actuel et le tick précédent pour un instrument de trading sélectionné ?

J'ai besoin de comparer : si Tick (actuel) > Tick (précédent), alors passer à l'exécution du comptage de ces ticks, et vice versa, si Tick (actuel) < Tick (précédent), alors passer au calcul des ticks2.

Ainsi, je veux calculer combien de ticks dans chaque barre, sur le graphique et la période sélectionnés, font augmenter le prix et combien le font diminuer.

Veuillez me conseiller ! Je suis en train d'écrire mon premier indicateur de formation, et aussi mon premier programme dans ma vie :(

Est-ce que je fais bien les choses ?

Essayez d'écrire la date, l'heure, l'enchère et les résultats de vos calculs sur chaque coche. Ensuite, téléchargez-la sur Excel et vérifiez-la. Cela n'a guère de sens de réconcilier toutes les dizaines de lignes du programme !

Mais regardez, vous avez le retour dans chaque branche de l'opérateur conditionnel, c'est-à-dire qu'il est toujours exécuté. Donc on le retire de l'opérateur conditionnel :

int Tick=0, Tick2=0;       // Для вставки программы используйте кнопку SRC
double Bid1;

void OnInit()
{
  Bid1=Bid;
}

void start()   // Вместо start более модно писать OnTick
{
    if(Bid > Bid1) Tick++;                             
    else           Tick2++;
    Bid1=Bid;                          
}

Enchère [1] - c'est comme ça ?

 
STARIJ:
// Вместо start более модно писать OnTick

:)

Raison: