Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 827

 
Veterros:

Dans la dernière ligne, il y a beaucoup de parenthèses. Essayez peut-être d'enlever ceux qui sont vides.
Il n'y a jamais trop de parenthèses, à condition qu'il y ait autant de parenthèses ouvrantes que de parenthèses fermantes.
 
alexeymosc:

Bonjour, je ne comprends pas pourquoi une erreur s'affiche lorsque l'on déclare un tableau en dehors des fonctions.

Erreur : '[' - valeur d' index invalide

Comment déclarer un tableau bidimensionnel non dynamique avec des variables comme index ?

J'ai essayé de mettre const au lieu de static. J'ai aussi essayé [][]. Toujours une erreur (

Pointez un tutoriel où chercher cette question une fois pour toutes, s'il vous plaît.

Car malgré la séquence d'affectation de valeurs aux variables, celles-ci restent non initialisées jusqu'à l'exécution du programme. Ainsi, tant que vous n'exécutez pas int Oninit(), la variable que vous utilisez n'est pas initialisée. Déplacez cette ligne vers Oninit() et tout devrait fonctionner...
 

J'ai un code simple qui n'ouvre pas les ordres.

Dans mon journal, il est écrit : '1419717' : ordre d'achat 0.01 EURUSD ouverture au marché sl : 1.13720 tp : 1.13842 échoué [Invalid S/L or T/P].

Ici (sur le forum), j'ai reçu un conseil : "Les arrêts et Takei devraient être normalisés !

Je ne comprends pas ce que signifie cette phrase ?

Le compilateur ne génère aucune erreur ou avertissement. Pendant les tests, tout fonctionne. Je ne sais plus où et quoi lire.

Si cela est trop long à expliquer, veuillez m'envoyer le lien où je peux lire comment normaliser le stoploss et le takeprofit.

Merci d'avance.

double Lots=0.01;
double TakeProfit=100;
double StopLoss=10;
int tk=0;

void start()
{
   if (OrdersTotal()==0)
      {
         tk=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,0,0,0,Green);
         if(tk<0) 
         {
            Print("OrderSend завершилась с ошибкой #",GetLastError());
         }
         else         
         {
            Print("Функция OrderSend успешно выполнена");
         }
      }
}
 
AlexeyVik:
Car malgré la séquence d'affectation de valeurs aux variables, celles-ci restent non initialisées jusqu'au démarrage du programme. C'est-à-dire que tant que vous n'exécutez pas int Oninit(), la variable que vous utilisez comme dimension du tableau n'est pas initialisée. Déplacez cette ligne vers Oninit() et tout devrait fonctionner...

AlexeyVik, merci !

C'est ce que je vais faire. Je n'avais pas pensé à Oninit, mais je suppose que c'est vrai.

 

S'il vous plaît, donnez-moi un indice ))))

Il y a une certaine quantité d'objets graphiques sur le graphique.

Une nouvelle barre a fini de se former. Quel est le moyen le plus simple de déterminer s'il a touché un objet quelconque ?

(Je ne veux pas rechercher les prix de tous les objets et comparer si la fourchette de prix de la dernière barre a touché l'un d'entre eux).

En d'autres termes, le prix et la plage de dates comment déterminer s'il existe un objet graphique dans ces coordonnées.

 
favidu:

J'ai un code simple qui n'ouvre pas les ordres.

Dans mon journal, il est écrit : '1419717' : ordre d'achat 0.01 EURUSD ouverture au marché sl : 1.13720 tp : 1.13842 échoué [Invalid S/L or T/P].

Ici (sur le forum), j'ai reçu un conseil : "Les arrêts et Takei devraient être normalisés !

Je ne comprends pas ce que signifie cette phrase ?

Le compilateur ne génère aucune erreur ou avertissement. Pendant les tests, tout fonctionne. Je ne sais plus où et quoi lire.

Si cela est trop long à expliquer, veuillez m'envoyer le lien où je peux lire comment normaliser le stoploss et le takeprofit.

Merci d'avance.

NormalizeDouble() creuser dans le livre de référence. Mais si votre courtier ne vous permet pas d'exposer les stops au moment de l'ouverture d 'un ordre au marché, vous devez les saisir en zéros et les exposer séparément, lors de la deuxième étape. Il y a des exemples dans la kodobase.


tk=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,NormalizeDouble(Bid-StopLoss*Point,_Digits),NormalizeDouble(Ask+TakeProfit*Point,_Digits),0,0,0,Green);
 
evillive:

NormalizeDouble() creuser dans la référence. Mais si le courtier ne vous permet pas de placer des stops au moment de l'ouverture d'un ordre au marché, vous devez les saisir en zéros et les placer séparément, lors de la deuxième étape. Il y a des exemples dans la kodobase.


Merci beaucoup.
 

Les gars, poussez-moi dans la bonne direction...

Par exemple :

#property strict
#property indicator_chart_window
#property indicator_buffers             0

int init() {

        return(0);
}

int start() {
        if (!GlobalVariableCheck(StringConcatenate("ID_", Symbol()))) {
                long id = ChartID();
                Print (id);
                GlobalVariableSet(StringConcatenate("ID_", Symbol()), id);
        }
        return(0);
}

Il ne sauvegarde jamais ce qu'il imprime...

Quelque chose comme ça :

Résultat

CHANDNT ?

 
Eh bien, dès que j'ai posté ça, le serveur est passé à 404 =)
 

On a temporairement écrit séparément les bits de poids fort et les bits de poids faible.

Il semble qu'une variable globale de type double n'a pas sa place à long terme.

Bien qu'il soit dit ici qu'il ne devrait pas y avoir de problème, sauf dans les situations où"si un nombre entier est supérieur à 9223372036836854774784 ou inférieur à -9223372036854774784".

Mais d'accord, l'ID du graphique = 130659893770676840 est inférieur à 9223372036854774784 d'un chiffre entier au moins.


P.S. Si quelqu'un peut expliquer mon erreur ou s'il s'agit d'un pépin, merci d'avance. Je vais continuer à vérifier ici.