[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 - 5. - page 71

 
artmedia70:

Voici un conseil :

NormalizeDouble(Low[i]-Low[i+1],Digits)<=3*Point --- différence des barres adjacentes. Si la condition n'est pas remplie -> Return(False) ; (Retourne faux)

Retourner(Faux) après le passage de la boucle

Nous pouvons le faire d'une manière différente :

Si la condition NormalizeDouble(Low[i]-Low[i+1],Digits)<=3*Point est vraie, augmente le compteur des barres adjacentes (initialement égal à zéro) de 1,

si la condition est fausse, nous retournons la valeur du compteur de barres adjacent.

Plus le nombre retourné par la fonction est grand, plus l'ensemble est fort. Si un zéro est renvoyé, la configuration n'existe pas.



Je ne pense pas que le prix doive être normalisé car nous n'avons besoin de comparer qu'avec un nombre entier. Il est préférable d'utiliser la fonctionMathAbs(double valeur), de sorte que si l'un des prix est supérieur à l'autre, le signe de la sortie est toujours positif.

Voici un autre point. Il s'avère que nous n'avons pas besoin de boucle du tout !

Nous pouvons simplement utiliser une fonction avec un compteur. Nous vérifions continuellement les extrema de deux barres adjacentes, et s'ils sont identiques, le compteur est incrémenté de 1 (initialement il sera 0 bien sûr). Ensuite, sur la nouvelle barre suivante, nous effectuons une vérification similaire. Si les extrema sont égaux, le compteur sera incrémenté de 1, etc. Une boucle n'est pas nécessaire ici au fur et à mesure que nous avançons, n'est-ce pas ?

Après tout, nous ne savons pas combien de barres nous aurons avec la même valeur d'extremum et il est donc inutile de spécifier le paramètre de décalage dans l'historique.

 
Notter:

On parle beaucoup du trading à haute fréquence. On dit que le HFT les bat tous. Quel est son principal avantage sur nous ? Le fait qu'un ping court soit une bonne chose en soi est compréhensible, mais il faut plus qu'une milliseconde pour faire un échange :) Quelle nouvelle qualité apparaît dans le HFT et comment les algorithmes diffèrent-ils en principe ?

Merci.


Tu conduis un Zaporozhets, et ces gars-là conduisent une Ferrari. Pouvez-vous doubler ? (Ce n'est pas une question d'algorithmes)
 
YOUNGA:

Vous conduisez un Zaporozhets et ces gars-là conduisent une Ferrari. Pouvez-vous doubler ? (Ce n'est pas une question d'algorithmes)
Les Zaporozhets ont besoin d'un peu de travail. Alors, il n'y a pas que Ferrari qui puisse être "faite".
 
YOUNGA:

Tu conduis un Zaporozhets, et ces gars-là conduisent une Ferrari. Pouvez-vous les distancer ?

Il existe toutefois une différence fondamentale.

Au moins prendre un risque/rendement. Si le HFT enregistre des bénéfices par points, il ne place évidemment pas de stops, et la fermeture de la position se fait selon d'autres critères. Il se peut que tout tick contre une position soit une sortie). Mais alors, d'où vient le profit ?

 
Encore une fois pour de l'aide.


Comment puis-je déterminer de quel côté la SMA croise les prix ?
 
hoz:


Je ne pense pas que nous ayons besoin de normaliser le prix, car nous avons seulement besoin de comparer à un nombre entier. Il est préférable d'utiliser la fonctionMathAbs(double valeur), de sorte que si l'un des prix est supérieur à l'autre, le signe de la sortie est toujours positif.

Voici un autre point. Il s'avère que nous n'avons pas besoin de boucle du tout !

Nous pouvons simplement utiliser une fonction avec un compteur. Nous vérifions continuellement les extrema de 2 barres adjacentes, et s'ils sont identiques, le compteur est incrémenté de 1 (initialement il sera 0 bien sûr). Ensuite, sur la nouvelle barre suivante, nous effectuons une vérification similaire. Si les extrema sont égaux, le compteur sera incrémenté de 1, etc. Une boucle n'est pas nécessaire ici au fur et à mesure que nous avançons, n'est-ce pas ?

Après tout, nous ne savons pas combien de barres nous aurons avec la même valeur extrême et il est donc inutile de spécifier le paramètre de décalage dans l'historique.

Bien sûr, MathAbs() est nécessaire à cet endroit - je l'ai écrit à l'improviste, assis au volant - on ne peut pas écrire grand chose, d'ailleurs j'ai donné un conseil pour cela. Normaliser les prix, car la comparaison de nombres réels nécessite une normalisation, alors que nous ne comparons pas avec un entier (car 3*Point est int*double- conversion int en double). Je ferais quand même une fonction qui comparerait les barres à chaque tick - j'ai l'habitude de penser immédiatement pour le réel. Si l'EA est désactivé pour une raison quelconque, la variable stockant la valeur du compteur sera réinitialisée lorsque l'EA sera redémarré - ce qui n'est pas bon ... c'est une perte de données. Mais en cas de recherche pythique (ou mieux pour optimiser la vitesse), le redémarrage de l'Expert Advisor dans ce cas n'est pas si mauvais - il va tout recalculer à nouveau. Il est donc préférable de créer une fonction séparée qui compare un nombre donné de barres adjacentes sur chaque nouvelle barre pour l'égalité (enfin, comme vous l'avez) et renvoie le nombre de barres consécutives égales par un critère donné, en commençant par la première et en poursuivant dans l'historique pour le nombre de barres qui ont été passées à la fonction (dix par pièce...).

En général... quelque chose comme ça ...

 
md4RM:
Encore une fois pour de l'aide.


Comment puis-je savoir de quel côté la SMA est traversée par le prix ?

Si (

iMA(Symbole(), Période(), 1, 0, MODE_SMA, PRICE_CLOSE, 2) <= SMA(bla, bla, bla, 2)

и

iMA(Symbole(), Période(), 1, 0, MODE_SMA, PRICE_CLOSE, 1) > SMA(bla, bla, bla, 1)

) alors

{le prix a traversé votre SMA de bas en haut sur la première barre}

 

Merci, j'ai trouvé l'erreur.

 

Bonjour, aidez-moi s'il vous plaît. J'ai téléchargé l'indicateur VininI_HMA et j'ai essayé de l'insérer dans le modèle d'EA, mais l'EA n'ouvre pas de transactions. La compilation s'est bien déroulée.

Condition pour VENDRE (Sigj1==EMPTY_VALUE)&& (Sigj2!=EMPTY_VALUE)&& (Sigj1!=EMPTY_VALUE)&& (Sigj2!=EMPTY_VALUE)

Conditions d'achat (sigj1==EMPTY_VALUE)&& (sigj2!=EMPTY_VALUE)&& (sigj1!=EMPTY_VALUE)&& (sigj2!=EMPTY_VALUE)

double sigz1 = iCustom(NULL,0, "VininI_HMA_sound&Alert",period,method,price,sdvig,0,1) ;
double sigz2 = iCustom(NULL,0, "VininI_HMA_sound&Alert".Alert",period,method,price,sdvig,0,2) ;
double sigz1 = iCustom(NULL,0, "VininI_HMA_sound&Alert",period,method,price,sdvig,1,1) ;
double sigz2 = iCustom(NULL,0, "VininI_HMA_sound&Alert",period,method,price,sdvig,1,2) ;
double sigk1 = iCustom(NULL,0, "VininI_HMA_sound&Alert".Alert",period,method,price,sdvig,2,1) ;
double sigk2 = iCustom(NULL,0, "VininI_HMA_sound&Alert",period,method,price,sdvig,2,2) ;

Dites-moi où j'ai fait une erreur.

 

Veuillez suggérer un plan d'action :))

si (...)

{

si(...)

{

si (...) false ->

}

else {...}

}

============================================

où va l'exécution après FALSE -to else ou même au-delà des parenthèses du premier if ?