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

 
fenix74:
evillive, j'ai essayé de remplacer comme vous l'avez dit, mais je suppose que même cela nécessite un peu plus de connaissances, la compilation donne "53 error(s), 18 warning(s)", le résultat est joint. evillive, puis-je vous demander de faire ces remplacements, si vous avez le temps.

Il faut juste être plus attentif, ou ne pas être paresseux pour spécifier le type de variable sur chaque ligne, ou mettre une virgule au lieu d'un point-virgule. Et dans les appels d'indicateurs, les variables doivent être définies, pas seulement à partir d'une torche.


Voici un exemple, et ensuite - à vous de voir...

Le deuxième fichier semble être correct, à l'exception d'un point dans un nom de variable. Pas de points dans les noms de variables.

Dossiers :
 
Vinin:
Seules quatre fonctions sont accessibles par le serveur. Ouverture, modification et fermeture (suppression) d'une commande
artmedia70:
Fonctions de négociation. Ils sont les seuls à envoyer une requête spécifique au serveur commercial et à recevoir une réponse de celui-ci.

Merci.

 
Roger:
L'utilisateur peut trier l'historique pour une perception visuelle uniquement, les numéros de position dans l'historique ne peuvent pas être modifiés.


Comment pouvez-vous savoir si une stratégie est rentable ou non rentable sur la base des indicateurs?
 
khorosh:

Et si vous devez démonter la fonction, vous n'auriez pas dû couper l'en-tête de la fonction, qui contient des informations importantes.

Renvoie le type de la dernière position ouverte ou -1 - cela signifie que s'il n'y a pas de positions fermées, alors lorsque la fonction est appelée, sa valeur sera égale à -1.

sy - nom de l'instrument (paire de devises)

mn - numéro magique. Si nous mettons -1, la fonction retournera le type du dernier ordre fermé, quel que soit le numéro magique utilisé.

Vous le savez aussi, à l'exception de la fonction "numéro magique".
Merci de fournir des conseils utiles.
Il n'est pas nécessaire de tronquer la description des variables.

artmedia70:

1. Évitons les sarcasmes, d'accord ? Il a rendu votre apprentissage confortable et facile. Qu'est-ce que le génie a à voir avec ça ?
2. Argumentatif.
3. Vous ne comprenez rien à en juger par vos commentaires dans le code.
4. Ça arrive.

En ce qui concerne le point 2, voici un exemple :

Il y a moins de choses inutiles.

1 - il n'y avait pas de sarcasme ! Le génie réside dans le fait qu'il a rendu mon apprentissage confortable et facile.
2 - autant de personnes qu'il y a d'opinions. :)
3 - c'est toujours compréhensible. Je n'ai pas précisé les objectifs variables à atteindre, ce qui a fait naître cette opinion.

Merci pour la description détaillée de l'action des chaînes de fonctions, je me suis assuré de ma compréhension de la fonction présentée.

Veuillez noter que nous étions maintenant engagés dans une conversation virtuelle sur quatre sujets simultanément. Il est très avantageux d'exposer ses réponses sur Internet point par point, mais certaines personnes le prennent comme une insulte, désolé.

Au fait, adressez-vous à moi en m'appelant "vous", car mon âge ne me permet pas d'être appelé "vous" (une opinion formée en rapport avec le cours de sciences sociales de neuvième année).
khorosh:

1 - Vos exemples ne sont pas corrects. 2 - Lorsque vous appelez une fonction qui a des paramètres, vous devez donner les valeurs de ces paramètres entre parenthèses, séparées par des virgules. Vous devez également savoir que des valeurs ne sont pas attribuées à toutes les fonctions. 3 - Si le type de la fonction est void, alors elle n'a aucune signification et est destinée à effectuer une action ou à calculer des variables. Dans ce dernier cas, vous devez connaître les noms de ces variables afin d'utiliser les résultats de cette fonction.

Excusez-moi, la réponse est décomposée en points.
1 - mes exemples sont incorrects - c'est une conséquence de mon ignorance.
2 - J'ai complètement oublié les crochets. Merci. Ils me faisaient penser à eux.
3 - void ? Est-il possible de l'utiliser à la place du bool lors des calculs par actions (*, /, +, - ) ?


artmedia70:

Le compilateur générera une erreur sur cette ligne, indiquant que la variable n'est pas déclarée.

L'exigence minimale est la suivante :


Oui, oui ! J'avais oublié les parenthèses, mais on me les a rappelées, merci quand même !
 
Profitov:

Comment pouvez-vous dire, à partir de l'historique, que la stratégie est rentable ou déficitaire, en vous basant sur les lectures des indicateurs ?
.

Les indicateurs utilisent les prix de clôture/ouverture et les sommets/minimums des barres pour les calculs.
Les valeurs des prix de clôture/ouverture et des hauts/miniaux des barres sont stockées dans l'historique.
Ensuite, les indicateurs obtiennent les valeurs des prix de clôture/ouverture, des hauts/miniaux des barres à partir de l'historique,
. En conséquence, l'indicateur effectue des calculs à partir de l'historique.
On peut conclure que si la stratégie est basée sur les indications des indicateurs, vous pouvez vérifier si elle est rentable ou non à l'aide des données historiques.

Vinin:

Vous devez d'abord vous familiariser avec le concept de fonction. Ensuite, vous pourrez passer à ce qu'ils font et comment les utiliser.

Familiarisé avec les trois interprétations du mot "fonction".
 
Link_x:


3 - void ? Est-il possible de l'utiliser à la place de bool lors du comptage par actions (*, /, +, - ) ?

Je ne comprends pas la question. La documentation donne un exemple de fonction de type void qui imprime le nom de l'erreur :

void errmesg(string s)
  {
   Print("error: "+s);
  }
 

Et peut-être qu'après la troisième fois, quelqu'un prêtera encore attention à ma demande ?

J'ai écrit une fonction CAM, mais le testeur donne l'erreur 4051, c'est-à-dire un nombre impossible de lots. Quelqu'un a une opinion à ce sujet ?

double FindRightLot (int otype) // функция поиска лота, необходимого для выхода из просадки после 
                               //закрытия сетки ордеров
{
  double Lot=0; double TotalLot=0;
  for (int i = OrdersTotal()-1; i>0; i--)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
       {
         if (otype == OP_BUY)
         {
           Lot = NormalizeDouble (((OrderOpenPrice()-Bid)*Point)*OrderLots()/TP,2); 
           if (Lot>0)
           {
              TotalLot= TotalLot+Lot;
           }
         }
           
       
         else if (otype == OP_SELL)
         {
           Lot = NormalizeDouble (((Ask-OrderOpenPrice())*Point)*OrderLots()/TP,2);
           if (Lot>0)
           {
            TotalLot= TotalLot+Lot;
           }
           
         }
       }
     }
   }
   return (TotalLot);
   
 }
 
Trader7777:

Et peut-être qu'après la troisième fois, quelqu'un prêtera encore attention à ma demande ?

J'ai écrit une fonction CAM, mais le testeur donne l'erreur 4051, c'est-à-dire un nombre impossible de lots. Quelqu'un a une opinion à ce sujet ?


Le prix doit-il être multiplié par des points ?

(OrderOpenPrice()-Bid)*Point)
 
Trader7777:

Et peut-être que la troisième fois, quelqu'un prêtera encore attention à ma demande ?

J'ai écrit la fonction par SAM, mais le testeur donne l'erreur 4051, c'est-à-dire le nombre impossible de lots. Quelqu'un a une opinion à ce sujet ? ??

 double Lot=0; double TotalLot=0;
if (Lot>0)
Notez la valeur de la variable qui fixe le nombre de lots lors de l'ouverture d'une position.
Cette valeur est égale à zéro.
Il est impossible d'ouvrir une position avec un volume nul pour le trading.



vadynik:


Le prix doit-il être multiplié par des points ?


C'est également possible, l'essentiel étant d'écrire le code correctement.
 
vadynik:


Le prix doit-il être multiplié par les points ?


Supposons que j'ai acheté à 1,50 000 et que le prix est monté à 1,49950. Si vous ne multipliez pas par Points, cela donne 0.0005*0.1/100=0.0000005 pas assez


Si l'on multiplie, alors 50*0,1/100= 0,05 est la bonne valeur.