[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 96

 

Je dois manquer quelque chose :

extern double LotsStep = 0.1;
       double Lots;
...

int start()
{
   ...
   
   if (NewOrder)
   { 
      if (OrdersTotal() == 0)
         Lots = LotsStep;
      else
         Lots += LotsStep;
      
      Lots = TrueLots(Lots);
      if (Lots < 0)
      {
         Alert("Не хватает денег на ", DoubleToStr(-Lots, 2), " лотов!");
         Lots = 0;
         Buy  = False;
         Sell = False;
      }
      
      NewOrder = False;
   }
      
   //Блок открытия на бай
   
   ...
}

double TrueLots(double Lots)
{
   double Free    = AccountFreeMargin();
   double One_Lot = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
   
   if (Lots > Max_Lot)
   {
      Alert("...");
      Lots = Max_Lot;
   }

   if (Lots*One_Lot > Free)
      return(-Lots);
   
   return(Lots);
}

 

Un autre problème, j'ai eu une erreur '(' définition de fonction inattendue, j'ai mis cette fonction " double LotSize()
".
Je veuxaugmenter chaque lot suivant à ouvrir, mais je veux qu'il soit ouvert seulement avec une série de signaux d'achat, et quand les signaux opposés arrivent, le compteur est remis à zéro et une nouvelle pyramide commence à être construite, si c'est possible, c'est pourquoi j'ai pris ce fragment de code, parce que je pensais qu'il était responsable de cette étape, mais il ne s'est pas avéré ainsi...

 
MaxZ:

Je dois manquer quelque chose :


Merci. Je vais essayer maintenant.
 
SeALALex:
Et voilà.


Regardez la bande-annonce - corrigez-la par vous-même.

Dossiers :
b-lots.mqh  3 kb
 
SeALALex:

Merci, je vais essayer maintenant.

J'ai également ajouté une vérification pour m'assurer qu'un nombre donné de lots peut être ouvert. Improvisez et vous aurez de la chance ! :))


La logique est la suivante :

S'il n'y a pas d'ordres sur le marché (ici, j'exclue les ordres en attente), alors nous assignons la valeur initiale à la variable Lots (dans ce cas, le pas même).

S'il y a déjà des ordres sur le marché, alors, à chaque ouverture, le paramètre Lots sera augmenté de la valeur de LotsStep.

Je ne sais pas quelle est votre tâche spécifique, c'est pourquoi j'ai écrit "improviser".


Romain.:


Regardez la bande-annonce - corrigez-la par vous-même.

Vous feriez mieux de tout maîtriser de vos propres mains et, en même temps, vous apprendrez à coder ! :D

 
MaxZ:

Je dois manquer quelque chose :


Maxime, si tu as le temps, jette un coup d'oeil à ce sujet... :-)))

Je n'arrive pas à trouver un "dénominateur commun" pour tous les EA à la fois (une option universelle)... :-(((

Dans mes codes d'EAs - il est dit à propos du débordement de "dabble"...

Je poserai une question détaillée avec des captures d'écran dans ce fil ...

P.S. Pour certaines versions de owls - cela fonctionne bien, pour d'autres non... Maintenant, tout est fait dans les règles, y compris les multiplications... Son produit doit également être décomposé en multiplicateurs pour une approche universelle. J'ai fait un tableau, comme vous l'avez recommandé pour la variable TWR, mais jusqu'à présent cela ne fonctionne pas pour tous les EAs, pour certains EAs il déborde encore avec des données de type "double" sur des trades jusqu'à 1000 unités sur l'historique... lors du calcul du f optimal au total.

 
MaxZ:

Je dois manquer quelque chose :


Je suis désolé, je ne le vois pas toujours.


Erreur NewOrder - 'NewOrder' - variable non définie, où dois-je la nommer en premier ?

 
Roman.:


Maxime, si tu as le temps, jette un coup d'oeil à ce sujet... :-)))

Qu'est-ce que je suis censé voir dans le fil de discussion du forum ProCapital ? :))


Romain.:


Je ne peux pas arriver à un "dénominateur commun" pour tous les EAs en même temps (une option universelle)... :-(((

Dans mes codes d'Expert Advisors - il est dit à propos du débordement de "dabble"...

Je poserai une question détaillée avec des captures d'écran dans ce fil ...

P.S. Pour certaines versions de owls - cela fonctionne bien, pour d'autres non... Maintenant, elle se fait par livre, y compris la multiplication... Son produit doit également être décomposé en multiplicateurs pour une approche universelle. J'ai fait un tableau, comme vous l'avez recommandé pour la variable TWR, mais jusqu'à présent cela ne fonctionne pas pour tous les EAs, pour certains EAs le type de données "double" déborde toujours avec des trades jusqu'à 1000 pièces sur l'historique...lors du calcul du f optimal final.

Dans l'agence ProCapital ? Pourquoi là ? Publie-la, je regarderai les captures d'écran, j'y réfléchirai.
 
MaxZ:

Qu'est-ce que je suis censé voir dans le fil de discussion du forum ProCapital ? :))


Dans l'agence de ProCapital ? Pourquoi là ? Publie-la, je regarderai les captures d'écran, j'y réfléchirai.


Désolé, il y avait un mauvais lien dans le tampon - un vieux lien... :-)))

Ici.

Je suis maintenant au travail - question détaillée avec captures d'écran - je la posterai dans le même fil ce soir ou demain. :-)))

 
SeALALex:

Je suis désolé, je ne l'attrape pas toujours au vol.


Erreur NewOrder - 'NewOrder' - variable non définie, où dois-je l'appeler en premier ?

Avec l'expérience vient l'expérience ! ;)


NewOrder est une variable de type bool. Il doit être déclaré au début de la fonction Start(), par exemple. Tout dépend de la structure de votre code.

Nous mettons la variable NewOrder à True, lorsque nous voulons ouvrir un ordre.

Par exemple, notre EA fonctionnera avec des prix ouverts et l'indicateur de moyenne mobile:

if ((Close[2] <= MA2 && Close[1] > MA1) || (Close[2] < MA2 && Close[1] >= MA1))
{
   NewOrder = True;
   Buy = True;
}