[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 78

 
goldtrader >> :

La condition de la première instruction conditionnelle if ne s'applique qu'à l'instruction qui la suit (la ligne suivante).

Les autres sont exécutés SAUF si. C'est-à-dire que même s'il n'y a pas de commande pour clôturer un ordre, l'un des sons de jeu fonctionnera.

La bonne méthode est la suivante :

Le problème est que les deux sons fonctionnent - PlaySound("timeout.wav") fonctionne, après cela PlaySound("money.wav"), la transaction se ferme normalement, mais avant sa fermeture il y a une erreur de son et cette chose ne fonctionne que pour les transactions courtes, pour les transactions longues tout est normal - PlaySound("money.wav") en cas de fermeture et PlaySound("timeout.wav") en cas d'erreur, même conception pour les transactions longues et courtes. Je vais essayer de mettre des parenthèses comme vous l'avez décrit, je ne sais pas si c'est dedans))


 
Dimoncheg >> :

... >> Je vais essayer les parenthèses comme vous l'avez décrit, je ne sais pas si c'est ça).

Il est difficile d'obtenir un résultat positif avec cette approche.

 
goldtrader >> :

Avec une telle approche, il est difficile d'obtenir un résultat positif.

Je suis profondément convaincu que le résultat ne dépend pas de la manière dont le texte est présenté sur le forum ;)) En tout cas je ne m'inclus pas dans l'intelligentsia, mais c'est des conneries tout à fait hors sujet)).

J'ai fait des crochets pour l'envoi des commandes, même chose, d'abord un son d'erreur puis un son de fermeture. Pour les plus longs, tout va bien comme avant. Donc, tout fonctionne bien sûr, juste récemment inséré une fonction pour voir quel genre d'erreurs, c'est pourquoi ce son est apparu avant le son de fermeture, et avant cela je ne l'ai pas remarqué, bien sûr - tout fonctionne

 

OK, juste pour référence. La commande PlaySound() n'attend pas que le son précédent se termine, mais s'interrompt simplement et lance son propre son. Dans une boucle rapide, les sons intermédiaires peuvent être absorbés.

 
Roger >> :

OK, juste pour référence. La commande PlaySound() n'attend pas que le son précédent se termine, mais s'interrompt simplement et lance son propre son. Dans une boucle rapide, les sons intermédiaires peuvent être absorbés.

Si ce n'était que dans le son, l'erreur "Pas d'erreur" apparaît dans le journal pour toute fermeture de transactions courtes, 3 transactions sont fermées - 3 erreurs, etc., mais après cela tout est fermé et le journal est prescrit fermeture, pour les transactions longues, tout est normal et les sons fonctionnent comme prévu, et l'erreur n'est pas prescrite, je mets un glissement pour 3 secondes et 5 secondes, tous les mêmes, seulement avec le délai approprié

 
Pouvez-vous me donner un indice ? Il y a une variable qui devrait être calculée pour chaque barre individuellement, c'est-à-dire [i+1]=0.9, [i+2]=0.8, [i+3]=1,5........ mais ce que j'ai, c'est que pour toutes les barres de l'historique, la dernière valeur calculée est appliquée......... si la dernière 1, alors [i+1]=1, [i+2]=1, [i+3]=1 et si la dernière 2, [i+1]=2, [i+2]=2, [i+3]=2 respectivement....
 
Dimoncheg писал(а) >>

Si seulement dans le son était la question, l'erreur "Pas d'erreur" apparaît dans le journal à toute fermeture de transactions courtes, 3 transactions sont fermées - 3 erreurs, etc, mais après que tout est fermé et le journal prescrit la fermeture, pour les longues transactions sont bien, et le son fonctionne comme prévu, et l'erreur n'est pas prescrit, inséré un glissement de 3 secondes et 5 secondes, tout le même, mais avec le délai approprié

Tu sais, j'ai eu un truc similaire, j'ai lutté, j'ai mis des délais, aucun progrès. Ensuite, j'ai vérifié si la commande était fermée par

si(OrderCloseTime()!=0)

Tous mes problèmes ont disparu d'un coup. Essayez-le.

 
RocketTrend писал(а) >>
Pouvez-vous me donner un indice, s'il vous plaît. Il y a une variable qui devrait être calculée pour chaque barre individuellement, c'est-à-dire [i+1]=0.9, [i+2]=0.8, [i+3]=1,5........ mais ce que j'ai, c'est que la dernière valeur calculée est appliquée à toutes les barres de l'historique......... si c'est la dernière 1, alors [i+1]=1, [i+2]=1, [i+3]=1 et si c'est la dernière 2, [i+1]=2, [i+2]=2, [i+3]=2 respectivement....

C'est si difficile à dire, affichez ce morceau de code en entier.

 
Reshetov >> :

Si vous avez besoin de déboguer, utilisez Print()

Mais dans la plupart des cas, vous n'en avez pas besoin.


Eh bien, je suis d'un avis différent. Je suis en train d'écrire un conseiller expert, et j'ai beaucoup de mal sans un débogueur approprié. Surtout avec les tableaux de données.

Pour être sûr que l'algorithme fonctionne correctement, je dois analyser les données obtenues lors du calcul des indicateurs. Et il n'y a pas qu'un seul tableau.

N'y a-t-il pas d'autres outils disponibles que Print(), Comment(), Alert() ?

 
Reshetov >> :


Qu'est-ce que c'est que ça ? À quoi sert la fonction OrderSelect() ?


Pour le reste, c'est difficile à comprendre, car le code est présenté sans indentation et on ne peut pas suivre les parenthèses - je ne veux pas me ruiner la vue.

Ok, passons les conneries et ne gâchons pas notre vue.

/---- paramètres d'entrée
extern int PerRSI=8 ;
extern int MagicNamber=77771 ;
extern double Lots=1.0 ;
//+------------------------------------------------------------------+
int start()
{
int
type, // type de commande
cnt, // indice de commande
ticket, // numéro d'identification de la commande
total ; // nombre d'ordres déjà ouverts
double
rsi_0, // Valeur. rsi_0 courant
rsi_1 ; // Valeur. rsi_1 1ère barre

rsi_0=iRSI (NULL, 0, PerRSI, 0, 0) ; // Barre actuelle
rsi_1=iRSI (NULL, 0, and PerRSI,0, 1) ; // Barre actuelle plus 1

if(rsi_0 < rsi_1 && rsi_1 < 30) // si la ligne a franchi 30

ticket=OrderSend (Symbol(), OP_BUY,Lots, Ask, 3, 0, 0, "My RSI", MagicNamber, 0, Green) ;

OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) ;


if(rsi_0 > rsi_1 && rsi_1 > 60) // si la ligne a franchi 70

OrderClose(ticket, OrderLots(), Bid, 3, Violet ) ; // fermer la position

return(0) ; // sortie

}

pourquoi scoop achète et ne ferme pas, aucune erreur lors de l'engagement

Raison: