[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 - 2. - page 454

 
smart:


Comment puis-je savoir quels indicateurs figurent dans le modèle ? J'ai installé un ancien modèle, mais tous les indicateurs ne sont pas affichés. J'ai oublié les noms des indicateurs inclus dans le modèle. Merci !


Ouvrez le dossier \templates\, trouvez votre modèle, ouvrez-le dans le bloc-notes, cherchez la balise <windows> et voyez quels indicateurs sont emballés avec quels paramètres.
 
tol64:

demlin20.06.2011 22:02

Bonjour à tous !

J'ai une question, je n'arrive pas à faire en sorte que le programme détermine le profit de l'ordre en pips. Que quelqu'un m'aide.

Essayez toutes les commandes en boucle.

For(i = 0 ; i < OrderHistoryTotal() ; i++)

Vous sélectionnez celui que vous voulez selon certains critères en utilisant OrderSelect(). Ensuite, vous demandez la fonction OrderProfit(). Il s'agit du bénéfice net en argent. La valeur du point est approximativement la suivante :

(OrderProfit()/10)/OrderLots()+(OrderSwap()/10)/OrderLots() ;

Vérifiez juste au cas où)))

Merci, je vais l'essayer
 

Écrire et lire les informations du commentaire de commande. OrdreComment().

Lorsque j'ouvre un ordre, j'enregistre le solde et le niveau de Stop Loss dans le commentaire. Lorsque la commande est ouverte, je regarde le journal. Tout est précis.




Le solde est de 10000.00. Stop Loss 1.67740. Le nombre total de caractères est de 15.
Ensuite, à l'aide des fonctions de chaîne de caractères, je sélectionne les caractères requis et les écris dans le fichier csv. Mais j'ai été confronté à un tel problème. Si un stop loss est déclenché, ces caractères [sl] sont ajoutés à la fin du commentaire.


Et j'ai 19 chiffres, pas 15. Le fait est que je vérifie le nombre de chiffres du solde actuel et le nombre de chiffres du prix avant de faire un commentaire. Je fixe ces valeurs à des variables qui déterminent ensuite combien et quels chiffres je dois obtenir. Mais cette [sl] me donne du fil à retordre. Après tout, si le prix comporte 7 chiffres, le fichier contiendra 740, et non 1,67740. Je n'arrive pas à trouver comment résoudre ce problème). Aidez-moi, s'il vous plaît.
 
La chose la plus simple à faire est d'écrire tout de suite la bonne chose dans le commentaire. C'est-à-dire qu'il faut mettre des délimiteurs entre les données. Dans ce cas, la longueur de la chaîne de caractères n'a pas d'importance, il suffit d'extraire la sous-chaîne entre les délimiteurs.
 
granit77:
Le plus simple est de l'écrire correctement dans le commentaire en une seule fois. C'est-à-dire mettre des délimiteurs entre les données. La longueur de la chaîne n'a pas d'importance, il suffit de tirer la sous-chaîne entre les délimiteurs.


Plus tôt, on m'a proposé cette simple variante :

string comment = OrderComment() ; comment = StringSubstr(comment, 0, 15) ; // coupé à droite

C'était une variante simple, mais j'ai eu quelques difficultés avec elle aussi, mais j'ai réussi à résoudre le problème. )

Pourquoi, si vous écrivez tout correctement en une seule fois, les caractères [sl] ne seront-ils pas ajoutés ? Puis-je avoir un petit exemple avec l'extraction de sous-chaînes à partir du commentaire de la commande, si cela ne vous dérange pas ?

 
tol64:


On m'a proposé cette simple option plus tôt :

L'option est simple, mais j'ai eu des difficultés avec elle aussi, mais j'ai décidé. )

Pourquoi, si vous écrivez tout correctement en une seule fois, les caractères [sl] ne seront-ils pas ajoutés ? Puis-je avoir un petit exemple avec l'extraction d'une sous-chaîne du commentaire de la commande, si vous le voulez bien ?

Qu'ils soient ajoutés. Vous voulez récupérer vos données, et vous ne vous souciez pas de ce qu'elles ajoutent ou de la longueur de la chaîne.

   string _comment="10000.00"+"$"+"1.67740"+"#";//строка комментария. "$","#" - разделители (символы,какие понравятся) 
   int lenstring=StringLen(_comment);           //длина строки _comment
   int delim1,delim2;                           //позиции разделителей в строке _comment
   string balans,stoploss;                      //извлекаемые подстроки
   delim1=StringFind( _comment, "$", 0);        //определяем позиции разделителей в строке _comment
   delim2=StringFind( _comment, "#", 0);        //определяем позиции разделителей в строке _comment 
   balans   =  StringSubstr( _comment,0, delim1);                //извлекли строку баланс
   stoploss =  StringSubstr( _comment,delim1+1, delim2-delim1-1);//извлекли строку стоплосс 
   Comment("|",balans,"|",stoploss,"|");//проверка 
 
Bonne journée à tous. J'ai rencontré une situation amusante où deux ordinateurs différents peuvent se connecter au même compte et même effectuer des transactions simultanément sur ce compte. Qui peut me dire s'il est possible de contrôler un ordinateur à distance, par exemple de modifier des variables ext ou au moins de suspendre une EA ? Je remercie d'avance, car j'ai été confronté à une situation étrange où je ne peux pas prendre le contrôle du terminal, qui fonctionne à la maison (moi-même au travail par exemple).
 
granit77:
Qu'ils soient ajoutés. Vous voulez récupérer vos données, et vous ne vous souciez pas de ce qui est ajouté ou de la longueur de la chaîne.


)) Merci. Excellent exemple ! Vous avez tout en un mot. C'est exactement le genre d'exemple qui fait parfois cruellement défaut.
[Supprimé]  
snail09:

Ouais, c'est définitivement bouillant. Tout le monde ne fait que répondre à votre... questions. Peut-être que vous êtes si mal informé?

Si quelqu'un me disait comment tracer le croisement de la ligne de tendance par le prix (une ligne droite), cela me suffirait-il, même un soupçon ? Merci immédiatement, car je n'attends pas de réponse dans un avenir proche. Vous, Star, êtes un inondateur, que les modérateurs me pardonnent...


Je ne suis pas un magicien, c'est la première fois que je viens ici. 8))))
[Supprimé]  
peshihod:

Vous manquez de pratique. Vous ne pouvez pas exécuter votre programme, il ne fonctionne pas. Un cercle vicieux : pas d'option réalisable-> pas de compétence-> pas d'option réalisable.

Il faut y penser.... :-/


Pour continuer le sujet.

Pour apprendre, il faut s'entraîner.

Effectuez les opérations suivantes dans le terminal de trading :
1. Un compte de démonstration doit être ouvert.
Entrez les détails du compte dans le terminal de trading : Fichier->Login->...
2. utiliser un graphique ouvert ou en ouvrir un nouveau : Fichier->Nouveau graphique->...
Définir le maximum dans : Service->Settings->Charts->Max.bar_history->250000
4.Définir la période d' une minute : Charts->Period->M1_One_minute
5.Faire la mise à jour : Charts->Update
6.Ouvrir Strategy Tester : View->Strategy Tester
Toutes les autres fenêtres se ferment (minimisent), laissez une fenêtre avec un graphique et une fenêtre avec le testeur.
------------------
Ensuite, dans les paramètres du testeur de stratégie :
7. Symbole : sélectionnez le symbole qui a un graphique ouvert.
8.Modèle:Par prix d'ouverture(.....)
<<Ce modèle à utiliser jusqu'à OrderSend().>>>
9.Utiliser la date : Cocher la case.
Date : _Du:<Hier(sauf samedi et dimanche)>, _au:Aujourd'hui
10.Visualisation : décocher si coché.
11.Période : M1
12.Optimisation : enlever la coche si présente.
---------------------
Ouvrir ensuite MetaEditor :
13.Dans le menu du terminal de trading:Service->Editor_MetaQuotes_Language
14.Ecrire un programme, par exemple :
//=====================

int i;
int const=5;
int Celoe, Ostatok;
bool flag_Odin_Raz=true;




int start()
{

if(flag_Odin_Raz==true)
{
//-------------
i=0;
while(i<22)
   {
   Celoe=i/const;
   Ostatok=MathMod(i,const);
   Print("При i=", i, " Celoe=", Celoe, " Ostatok=", Ostatok);
   i=i+1;
   }
//-------------
flag_Odin_Raz=false;
}
return(0);
}

//=============================

Dans MetaEditor, menu : Fichier->Enregistrer_comme : donner un nom de fichier, enregistrer l'extension .mq4, le dossier doit être 'experts'.
16.dans MetaEditor dans le menu : Fichier->Compile
---------------------------------------
puis dans le testeur dans les paramètres :
17.conseiller : trouver et sélectionner le nom du fichier du programme.
18. cliquez sur le bouton "Démarrer" avec la souris.
19. Dans le tester->log
Nous voyons le résultat du programme par les messages Print()
-----------------------------------------
Pour une visualisation plus facile :
20. Cliquez avec le bouton droit de la souris sur n'importe quelle ligne du journal->Ouvrir
Cela ouvrira le dossier des journaux avec le fichier *.log, que vous pouvez ouvrir en utilisant n'importe quel éditeur de texte, Notepad, Word, etc.

PS
Si le fichier est trop volumineux et qu'aucun éditeur de texte n'est en mesure de l'ouvrir, vous devez supprimer ce fichier en utilisant les moyens de Windows et redémarrer le programme en appuyant sur le bouton "Démarrer" du terminal de négociation. Dossier du testeur : "...\Installation_folder\tester\logs", à ne pas confondre avec un autre : "...\Installation_folder\logs".

PPS
Pour apprendre à programmer, vous avez besoin d'un compilateur de langage de programmation qui transforme l'écriture textuelle des actions nécessaires en un "programme" (lisible par l'homme), en un langage de commandes machine -- compréhensible par un ordinateur. Sans pratique, il est impossible d'apprendre. Mql4 ne crée pas de programmes séparés, *.mq4 se transforme en *.ex4, qui est exécuté à partir d'un shell de programme.
*.ex4 ne peut pas être exécuté directement, l'algorithme décrit ci-dessus contourne ce point.