Erreurs, bugs, questions - page 1521
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
Une cause amusante de l'erreur interne du compilateur (fonction utilisée dans l'indicateur) :
...Le remède est évident, mais je suis d'accord - c'est un problème très drôle. :)))
Je vous ai écrit un message privé.
Dmitri Custurov:
Здравствуйте. Не получается написать код, который открывал бы позицию через n-количество баров после открытия предыдущей позиции. Пробовал использовать Time[i], iBarShift, iTime. Все безуспешно. В программировании новичок. Поиск ничего не дал.
Voici le code :
si((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)&&(Signal==1)))Timer=Time[0];}
TimerNull=iBarShift(NULL,0,Timer,false) ;
si ((TimerNull>=n)&&(z==1))
{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red) ;
z=2;}
J'ai aussi essayé de cette façon :
Timer=Time[0];}
TimerNull=Time[0] ;
if ((TimerNull>=(Timer+2700))&&(z==1)) //à titre d'exemple ici, au lieu de n, j'ai mis 2700 secondes, ce qui dans les tests signifiait 3 bougies de 15 minutes) {int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red) ;
z=2;}
Et aussi comme ça :
Timer=Time[0];}
TimerNull=Time[0] ;
si ((CurrentTime()>=(Timer+2700))&&(z==1))
{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red) ; //Dans ce cas, lorsque j'ai retiré 2700, la deuxième transaction a été ouverte juste après la première dans la même barre, c'est logique. Et même lorsque j'ai mis n'importe quelle valeur jusqu'à 600 au lieu de 2700, la deuxième affaire a été ouverte dans la même barre. Avec une valeur supérieure à 600, la deuxième transaction ne s'est jamais ouverte. Je ne comprends pas quel est le problème. Je vous serais très reconnaissant de votre aide.
Les paramètres Timer et TimerNull sont au format date.
dans votre exemple, il n'y a pas d'énumération de positions, par exemple.
si ((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)&&(Signal==1)))
il sélectionne donc toujours la position 0.
Tout a un sens. J'ai fait une indulgence pour la suppression normale.
Quand tu fermeras le terminal, ce sera dur. Pas plus de 3 secondes.
Et je ne suis pas sûr que nous allons écrire cela dans la documentation, 1. pour ne pas se laisser aller à écrire des indicateurs aussi imprudents (avez-vous écrit cela pour vérifier ?) 2. Comme on l'a desserré, on le resserre.
Alors resserrez-le déjà, ou corrigez la référence. Se faire plaisir sans se faire plaisir n'est pas une conversation sérieuse. Ce que les programmeurs attendent de vous, ce n'est pas d'être "dorlotés", mais des logiciels clairs et bien documentés.
Bien sûr, ce code n'a pas d'autre but qu'une démonstration, que vous avez vous-même demandée. Et c'est tout à fait inoffensif, inoffensif de l'obtenir, si vous supprimez Sleep et remplacez Comment par Print. Il n'y a aucune protection contre le spamming de gigaoctets d'impression dans le journal, que ce soit dans Quartet ou Quartet 5.
Voici le code :
si ((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)&&(Signal==1)))Timer=Time[0];}
TimerNull=iBarShift(NULL,0,Timer,false) ;
si ((TimerNull>=n)&&(z==1))
{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red) ;
z=2;}
J'ai aussi essayé de cette façon :
Timer=Time[0];}
TimerNull=Time[0] ;
if ((TimerNull>=(Timer+2700))&&(z==1)) //à titre d'exemple ici, j'ai mis 2700 secondes au lieu de n, ce qui dans les tests signifiait 3 bougies de 15 minutes) {int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red) ;
z=2;}
Et aussi comme ça :
Timer=Time[0];}
TimerNull=Time[0] ;
si ((CurrentTime()>=(Timer+2700))&&(z==1))
{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red) ; //Dans ce cas, lorsque j'ai retiré 2700, la deuxième transaction a été ouverte juste après la première dans la même barre, c'est logique. Et même lorsque j'ai mis n'importe quelle valeur jusqu'à 600 au lieu de 2700, la deuxième affaire a été ouverte dans la même barre. Avec une valeur supérieure à 600, la deuxième transaction ne s'est jamais ouverte. Je ne comprends pas quel est le problème. Je vous serais très reconnaissant de votre aide.
Les paramètres Timer et TimerNull sont au format date.
C'est l'une des implémentations possibles. Cet EA doit ouvrir un ordre après le nombre de barres spécifié. Et apprenez à insérer correctement le code EA, le bouton SRC sur la barre de message.
111
Cette question s'adresse probablement aux développeurs de sites Web ou aux administrateurs de services indépendants.
---
Auparavant : 568 travaux réalisés, 75% personnels
Ajouté 13 travaux (tous personnels) et devenu : complété 581, 75% personnel
---
D'où la question : déchiffrez s'il vous plaît, que signifie 75% ?
Je vous ai envoyé un message privé.