[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 95

 
dixi:

MetaEditor a cessé de fonctionner après avoir réinstallé le terminal. Cela ne fonctionne que si vous ne changez rien au code de l'indicateur. Si vous modifiez quelque chose, même la couleur de la ligne, cela génère une erreur :

Le système d'exploitation est Windows 7. Qui sait, peut-être que quelqu'un a rencontré un tel problème. Pouvez-vous me dire ce qu'il faut faire ?


Tout d'abord, allez dans les propriétés du terminal et dans l'onglet "Compatibilité" cochez "Exécuter en tant qu'administrateur". Ensuite, faites de même avec le fichier qui lance l'éditeur de code. Le fichier est MetaEditor.exe. Troisièmement, personnalisez votre système d'exploitation. Le dernier point est assez rapide si vous savez exactement ce dont vous avez besoin.
 
demlin:

Salutations à tous !

Veuillez m'aider à résoudre ce problème : je n'arrive pas à faire en sorte que l'indicateur se redessine à l'apparition d'une nouvelle barre (intervalle D). П

Je dois le redémarrer manuellement.


La ligne 44 est absolument inutile. L'appel à la fonction de recalcul des chandeliers non calculés les retournera tous. De plus, dans le code de la fonction de démarrage, l'appel de la même fonction (ligne 64) devrait, en théorie, renvoyer zéro. Faites attention à cela. Un nouveau jour est arrivé (un nouveau chandelier). Ce qui se passe n'est pas clair : l'indicateur a été coupé hier et redémarré aujourd'hui, ou bien il est en train de tester dans le testeur ? Le redémarrage déclenche la fonction d'initialisation, puis le démarrage. Le démarrage ne redessinera rien, puisque nous avons déjà appelé les barres non calculées au démarrage. Si elle se trouve dans le testeur, elle peut être redessinée.

 
FxPro2:
Bonjour à tous ! Je suis tombé sur un vieil expert travaillant avec l'indicateur asctrend. J'aimerais vérifier comment cet indicateur se comporte en temps réel, mais je ne peux pas toujours suivre les points et mon trading n'est pas complet. J'ai vérifié le testeur, il y a un signal à chaque point, mais je l'ai mis sur une démo et j'ai remarqué que la démo saute des signaux, alors que le log n'a rien écrit à l'expert, j'ai creusé dans le code et je n'ai pas compris quel était le problème :( peut-être que quelqu'un a mis son nez dans ce qui pourrait être le problème ?

Le problème est que tu ne comprends pas le code que tu utilises. Le problème, c'est que vous tenez une mitraillette et que pour une raison quelconque, elle ne tire pas toujours. Ne serait-il pas préférable de mettre la main sur un appareil dont vous comprenez tout ? А ?
 
drknn:

Tout d'abord, allez dans les propriétés du terminal et dans l'onglet Compatibilité, cochez la case "Exécuter en tant qu'administrateur". Ensuite, faites de même avec le fichier qui lance l'éditeur de code. Le fichier est MetaEditor.exe. Troisièmement, personnalisez votre système d'exploitation. Le dernier point est assez facile à résoudre, si vous savez ce que vous voulez.
Merci ! Je l'ai ! !! :)))
 
Dimka-novitsek:

si (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)<0.5*Point)

C'est juste que la variante sans NormalizeDouble n'est pas si fiable par rapport au zéro. Ça marche ici.


Il ne s'agit pas de ND. Le point est la taille d'un point; multiplions-le par zéro cinq, ce sera 0,00005 par exemple ; je ne vois aucune raison de comparer ce nombre avec OrderClosePrice()-OrderTakeProfit(). Le TP ne garantit pas exactement le même prix de clôture. De plus, les conditions de contrôle seront différentes pour les Bais et les Selves.

if(OrderType() == OP_SELL)
       {
        if( NormalizeDouble(OrderTakeProfit()-OrderClosePrice(),Digits) >= 0
          && OrderTakeProfit() != 0)    

Cette conception est plus fiable.

 
drknn:

Le problème est que vous ne comprenez pas le code que vous utilisez. Le problème est que vous avez pris une mitrailleuse et que pour une raison quelconque, elle ne tire pas toujours. Ne serait-il pas préférable de mettre la main sur un appareil dont vous comprenez tout ? А ?
Peut-être. Mais vos deux derniers posts ne sont que moralisateurs, et vous feriez mieux de les orienter vers la bonne idée. Si vous n'avez pas un tel désir, pourquoi écrire des choses inutiles ? Je n'ai forcé personne à m'aider, s'il n'y a pas d'envie, je ne me vexe pas, le travail est difficile, je le comprends parfaitement.
 
drknn:
Vous, les gars avec les longs codes ! Je tiens à rappeler que le code de quelqu'un d'autre est avant tout un cryptogramme, qui reste à déchiffrer ! Et c'est beaucoup de travail ! Pensez-vous qu'un programmeur ait envie de fouiller dans des kilomètres de listes ? Permettez-moi de donner mon code à l'un d'entre vous pour trois mille lignes seulement et de lui demander d'éliminer un petit malentendu sur ce code. Tu penses que tu veux juste entrer dans mon invention ? J'en doute encore. J'ai donc une requête à vous faire : lorsque vous posez une question clé, décrivez le problème aussi brièvement que possible et, en même temps, faites en sorte que la description soit suffisante pour en comprendre l'essence. Sinon, votre cri est un cri dans le vide. Le code peut être joint à l'article. Tout cela est nécessaire et suffisant.

Je suis tout à fait d'accord avec vous.


FxPro2:

drknn:

Le problème, c'est que vous ne comprenez pas le code que vous utilisez. Le problème, c'est que vous avez pris une mitraillette et que pour une raison quelconque, elle ne tire pas toujours. Ne serait-il pas préférable de mettre la main sur un appareil dont vous comprenez tout ? А ?
Peut-être. Il n'y a que tes deux derniers posts qui ne vont nulle part, ils ne font que moraliser, ou mieux encore, indiquer la bonne idée. Si vous n'avez pas ce désir, pourquoi écrire des choses inutiles ? Je n'ai forcé personne à m'aider, s'il n'y a pas de désir, je ne serai pas offensé, le travail est difficile, je le comprends parfaitement.

Mais vous ne comprenez vraiment pas le code que vous avez donné plus tôt, n'est-ce pas ?

 

Bonjour à tous ! !! Aide plz, juste apprendre à écrire, peredomnoy obtenu ce problème, je ne peux pas écrire le code pour augmenter la taille du lot d'une certaine étape donnée dans le prametrov, examiné un tas de conseillers et a été en mesure de trier, je dois augmenter le lot, seulement en fonction de la marge. Veuillez me conseiller où chercher, et ma tête est déjà cassée. Je me suis déjà pris la tête. Merci !

 
SeALALex:

Bonjour à tous ! !! Aide plz, juste apprendre à écrire, peredomnoy obtenu ce problème, je ne peux pas écrire le code pour augmenter la taille du lot d'une certaine étape donnée dans le prametrov, examiné un tas de conseillers et a été en mesure de trier, je dois augmenter le lot, seulement en fonction de la marge. Veuillez me conseiller où chercher, et ma tête est déjà cassée. Je me suis déjà pris la tête. Merci !

Montrez votre code avec la condition, après laquelle vous devez augmenter le lot d'une certaine étape, définie dans les paramètres, et comment vous avez essayé de mettre cela en œuvre.
 
Болк открытия на бай
if(Buy==true) 
  {Buy=false;

   ticket=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask, Digits),5,SL,TP,Order,070177,0,Orange);
   if(ticket>0)
    { 
     if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
      {Print("BUY order opened : ",OrderOpenPrice());
       Alert("Buy Order for ",Symbol());
       SendMail("Buy Order "+Symbol()+" "+Ask,SL);     
       }
     }
     else Print("Error opening BUY order : ",GetLastError()); 
     return(0); 
   }

Умножение лота в зависимости от маржи нашел в советнике, 
код вставил работает вот только в советнике он увеличивает на определенный шаг, у меня просто в %-ом соотношении

double LotSize() 
  
   {
   double lots_0;
   if (MicroLots == FALSE) {
      lots_0 = NormalizeDouble(AccountFreeMargin() * RiskPercent / 1000.0, 1);
      if (lots_0 < 0.1) lots_0 = Lots;
      if (lots_0 >= 1.0) lots_0 = NormalizeDouble(lots_0, 1);
      if (lots_0 >= 100.0) lots_0 = 100;
   } else {
      lots_0 = NormalizeDouble(AccountFreeMargin() * RiskPercent / 1000.0, 2);
      if (lots_0 < 0.01) lots_0 = Lots;
      if (lots_0 >= 1.0) lots_0 = NormalizeDouble(lots_0, 2);
      if (lots_0 >= 100.0) lots_0 = 100;
   }
   return (lots_0);
}
C'est comme ça