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

 

Les professionnels ne passent pas à côté, ils ont besoin de votre aide. Le robot ouvre une position de vente, alors cette position devrait être fermée ci-dessous, voir le code et où la position de vente devrait être fermée, la position d'achat devrait être ouverte, le nombre de positions ouvertes devrait être 1 (OrdersTotal()). La question est de savoir comment créer une sorte de file d'attente pour l'exécution des ordres : une position de vente doit d'abord être fermée, puis une position d'achat doit être ouverte et le nombre de positions ouvertes doit être égal à 1.

OrderSend(Symbol(),OP_BUY,Lots,Ask,4,0,0,"",0,0,Green);
    for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
         if(OrderType()==OP_SELL)   // long position is opened
           {
                 OrderClose(OrderTicket(),OrderLots(),Ask,4,Violet); // close position
                }
    }
 
bool flags
 
eddy:
Je veux dire qu'il est seulement fixé à un tampon et non à une variable externe.

utilisez donc cet indicateur_colorN

 
eddy:
Je veux dire qu'il n' est réglé que sur un tampon, pas sur une variable externe.
Vous ne pouvez pas le faire avec MQL. Mais si vous en avez besoin, bien sûr, vous pouvez le faire)))).
 
alsu:
Vous ne pouvez pas le faire dans MQL. Mais si c'est TRÈS, TRÈS nécessaire, bien sûr que c'est possible))).

vous ne savez même pas ce dont vous avez besoin...

Je suis sûr que les besoins d'Eddy peuvent être résolus par MQL.

 
sergeev:

Vous ne savez même pas ce dont vous avez besoin...

Je suis sûr que les besoins d'Eddy sont résolus par les MQL.

Non, j'ai compris... il doit obtenir la couleur de rendu à partir du tampon de l'indicateur dans le code de l'indicateur (n'est-ce pas, Eddy?). Pour autant que je sache, c'est impossible dans MQL.
 
alsu:
Non, j'ai compris... il doit récupérer la couleur du dessin dans le tampon de l'indicateur de manière programmatique dans le code de l'indicateur (n'est-ce pas, Eddy?). Pour autant que je sache, cela n'est pas possible dans MQL.
c'est possible.
utilisez simplement le paramètre indicator_colorN. On peut dire que c'est la même variable.
 
sergeev:
peut-être.
utilisez simplement le paramètre indicator_colorN. On peut dire qu'il s'agit de la même variable.

nooooooon.

Supposons que nous ayons un indicateur qui dessine une ligne. Supposons que nous voulions dessiner un cercle avec cet indicateur. Mais nous voulons qu'il soit vert si la ligne de l'indicateur est verte, et rouge si elle est rouge.

 

Messieurs les programmeurs, veuillez m'indiquer comment clôturer correctement tous les ordres. Vous trouverez ci-dessous le problème à résoudre et ce qui a été conseillé de faire. Dans l'ensemble, tout fonctionne, à l'exception de la fermeture des ordres et de la mise en place de drapeaux pour interdire les transactions.

Je suis sûr qu'il y a des programmeurs expérimentés parmi vous. Veuillez m'aider à écrire les conditions suivantes dans mon Expert Advisor :
1) С+=Bénéfice sur l'ordre(1)+Bénéfice sur l'ordre(2)+...+Bénéfice sur l'ordre(n) - bénéfice total sur tous les ordres ouverts dans le temps actuel.
2) C-=(c+)perte sur l'ordre(1)+perte sur l'ordre(2)+...+perte sur l'ordre(n) - somme des pertes sur tous les ordres ouverts au moment présent.
3) X=(c+)/(c-) - le ratio pertes/bénéfices actuel
4) Si les capitaux propres (S) multipliés par le ratio pertes/bénéfices (X) sont supérieurs à la valeur de consigne spécifiée (K), vous êtes prêt à négocier. (Si S*X>K, OK)
5) Si l'équité (S) multipliée par le ratio Profit/Perte (X) est inférieure à la cible définie (K), alors tous les ordres ouverts aux cotations actuelles seront fermés et le Conseiller Expert sera désactivé jusqu'à ce qu'il soit réactivé manuellement. (S*X<K, clôture de tous les ordres et arrêt)

Il me semble que ce serait une bonne protection contre les pertes d'argent.

Ça ressemble à ça. Créons deux fonctions qui comptent les profits et les pertes :
double CalculateProfitTotal()
{
double Result = 0 ;
for(int i = 0 ; i < OrdersTotal() ; i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderProfit() > 0)
Result = Result + OrderProfit() ;
return(Result) ;
}

double CalculateLossTotal()
{
double Result = 0 ;
for(int i = 0 ; i < OrdersTotal() ; i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderProfit() < 0)
Result = Result + MathAbs(OrderProfit()) ;
return(Result) ;
}

Dans la fonction start(), écrivez vos conditions.
Par exemple :
X = CalculateProfitTotal() / CalculateLossTotal() ;
if(AccountEquity() * X < K)
{
//Où nous fermons tous les ordres et
//définir le drapeau interdisant la transaction
return(0) ;
}

 
alsu:

Supposons que nous voulions dessiner un cercle comme indicateur. Mais nous voulons qu'elle soit verte si la ligne de l'indicateur est verte.

donc je veux créer un objet en bleu)

sergeev, doncindicator_color1 est une variable de couleur ?

Raison: