[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 325
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
C'est-à-dire queVol_Arr[] devrait être initialisé comme un tableau global si je comprends bien.
La question est bien sûr une question nulle, MAIS.
1. Pourquoi les volumes s'affichent-ils correctement dans l'indicateur ?
2. Lors du calcul, j'accède àAOBuffer3[] et non àVol_Arr[].
Merci !
Lorsque vous déclarez un tableau (et non un tampon), vous devez spécifier explicitement sa taille..... au moins.
C'est-à-dire queVol_Arr[] devrait être initialisé comme un tableau global si je comprends bien.
La question est bien sûr une question nulle, MAIS.
1. Pourquoi les volumes s'affichent-ils correctement dans l'indicateur ?
2. Lors du calcul, j'accède àAOBuffer3[] et non àVol_Arr[].
Merci !
Vous n'allouez pas de mémoire pour ce tableau(Vol_Arr[]), que ce soit de manière statique ou dynamique.
2. D'après ce que je vois dans le code, la différence entre les volumes MA et non MA est calculée dans le tableauAOBuffer3[].
Les volumes sont comptés dansExtMapBuffer1.
Vol_Arr[] peut être initialisé comme un tableau global ou avec un modificateur statique - vous pouvez choisir le vôtre, mais la mémoire doit être allouée dans tous les cas ou vous pouvez le lier au tampon de l'indicateur, ainsi qu'aux deux tableaux précédents - bien sûr, il existe de nombreuses variantes.
1) Les deux tableaux que vous utilisez sont reliés à des tampons indicateurs, c'est-à-dire que la mémoire leur est allouée (bien qu'implicitement).
......
Vladislav, j'ai revu le code. Une partie du code avecVol_Arr[]est resté de l'ancienne version de l'indicateur, je l'ai supprimé.
Je pense que l'erreur se trouve toujours dans cette partie du code, mais je ne comprends pas où ! J'ai commenté cette partie du code de manière plus détaillée.
Vladislav, j'ai revu le code. Une partie du code avecVol_Arr[]est resté de l'ancienne version de l'indicateur, je l'ai supprimé.
Je pense que l'erreur se trouve toujours dans cette partie du code, mais je ne comprends pas où ! J'ai commenté cette partie du code de manière plus détaillée.
C'est ici :
Merci encore !
C'est ici :
En un coup d'œil :
Le fragment mis en évidence est en dehors de la boucle et il utilise le compteur de boucle i - quelque chose ne va pas, soit avec la logique, soit avec l'implémentation.
Pourquoi avez-vous besoin des chiffres sous forme de fichiers CSV ?
Nécessaire pour tester et déboguer les algorithmes de reconnaissance.
Écrivez-les vous-même pour les comprendre plutôt que de prendre ceux de quelqu'un d'autre.
Écrire quoi exactement ? Vous voulez dire, marquer les formes sur le graphique vous-même et exporter les morceaux d'histoire appropriés ? Cette solution est la première de la file d'attente jusqu'à présent, mais j'espère toujours que quelqu'un l'a déjà réalisée. Après tout, ce n'est qu'une corvée.
L'abondance ne signifie pas le mieux !
Permettez-moi de ne pas être d'accord. Plus la suite de tests est importante, plus le résultat du programme sera statistiquement fiable.
p.s. La question est toujours valable.(Voir la question dans ce billet)
Salut à tous ! !!
Pourriez-vous me dire quel code est nécessaire pour faire un long close au maximum de la MA actuelle.
Vous trouverez ci-dessous les critères de négociation actuels, en soulignant en rouge ce qui n'est pas clair.
Je ne sais pas non plus comment indiquer au programme de quitter une position,
après avoir augmenté la différence entre MA1 et MA2 ?
//--------------------------------------------------------------- 5 --
// Critères de transaction
MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_EMA,PRICE_HIGH,1) ; // MA_1
MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_EMA,PRICE_LOW,1) ; // MA_2
if ( iHigh (Symbol(),Period(),0) >= MA_1_t) //
{
Opn_S=true ;
}
if ( iLow (Symbol(),Period(),0) <= MA_2_t) //
{
Opn_B=true ; // Ouvrir le critère d'achat
}
if(quel code est nécessaire pour faire une fermeture longue à l'iMA maximum d'aujourd'hui ?? )
{
Cls_B=true ;
}
//--------------------------------------------------------------- 6 --
Juste un coup d'œil rapide :
Le fragment mis en évidence est en dehors de la boucle et il utilise le compteur de la boucle i - quelque chose ne va pas, soit avec la logique, soit avec l'implémentation.
Merci Vladislav ! Quelque chose a commencé à fonctionner. Mais pour une raison quelconque, seulement comme ça ! :(
Une autre question : pourquoi les étiquettes de texte ne sont-elles pas affichées dans la fenêtre de l'indicateur ?
Je ne suis pas un fan des indicateurs, mais j'ai décidé de vérifier une chose. Le conseiller expert doit acheter au prix de l'indicateur RSI supérieur et vendre au prix de l'indicateur inférieur, respectivement. Seulement si le prix est déjà au-dessus de la limite supérieure de l'indicateur RSI, alors l'achat devrait être au-dessus de cette limite et en dessous de la valeur de cette limite + une certaine valeur de retrait de la limite vers le haut (dans le code j'ai spécifié juste un nombre 0.1), pour les ventes, au contraire.
Je l'ai fait comme ça :
Paramètres externes :
Code de la fonction recevant le signal et la valeur RSI elle-même :(0.1 ici est la tolérance de marge pour la gamme d'achat ou de vente)
Parfois, l'EA ouvre des ordres à partir du niveau même, parfois beaucoup plus haut (pour l'achat) et parfois beaucoup plus bas (pour la vente). Pourquoi ? L'algorithme est élémentaire.