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

 
Desead:

Bien sûr, merci, mais si vous êtes trop paresseux pour lire la question, à quoi bon répondre ? Je peux modifier la valeur, l'épaisseur, la couleur et le style des niveaux de l'indicateur dans les deux fonctions dont je dispose. Je n'ai pas accès à la description. Je le demande à nouveau, quelqu'un connaît-il la réponse ? Je ne sais pas si je l'ai déjà vu.

J'ai joint une photo pour montrer ce dont j'ai besoin.


Il ne l'était pas et ne le sera probablement jamais sous cette forme.
 
yan720:

Alors pensez-vous que cette fonction ne fonctionnera pas ? Je ne l'ai pas testé, mais il me semble qu'il fait partie d'un code qui fonctionne (cet Ilan a manifestement été reconstruit à partir de quelque chose de débogué au mieux). Ou est-ce que c'est toujours un code minable ?




Utilisez-le :

void Modify_orders (double AverPrice, double SLoss, double TProfit){
   double Stoplevel =  MarketInfo(Symbol(),MODE_STOPLEVEL);
   datetime GTCount_1 = 0;
   datetime GTCount_2 = 0;
   int ppos = 0;
   if ((AverPrice != 0) == TRUE){
      for (ppos = OrdersTotal() - 1; ppos >= 0; ppos--){
          if (OrderSelect(ppos, SELECT_BY_POS, MODE_TRADES) == TRUE){
            if ((OrderSymbol() != Symbol() || OrderMagicNumber() != Magic || OrderType() >= 2) == TRUE) continue;
            if ((OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) == TRUE){ 
            if ((OrderType() == 0) == TRUE){ 
               if(Bid - SLoss < Stoplevel * Point){ SLoss = ND(Bid - Stoplevel * Point);}
               if(TProfit - Ask < Stoplevel * Point){ TProfit = ND(Ask + Stoplevel * Point);}
            }else if ((OrderType() == 1) == TRUE){ 
               if(SLoss - Ask < Stoplevel * Point){ SLoss = ND(Ask + Stoplevel * Point);}
               if(Bid - TProfit < Stoplevel * Point){ TProfit = ND(Bid - Stoplevel * Point);}
               }
                  GTCount_1 = GetTickCount();           
                  OrderModify(OrderTicket(), AverPrice, SLoss, TProfit, 0, Yellow);  
                  GTCount_2 = GetTickCount() - GTCount_1;
                   // Print("Modify time(ms):   ", GTCount_2, "   /  Ticket: ", OrderTicket()," /  Time: ", TimeToStr (TimeCurrent(), TIME_SECONDS), " /  Average price: ",AverPrice, " /  SL: ",SLoss, " /  TP: ",TProfit); 
                Sleep(33);                
                }
            }
        } 
    }
}
double ND(double value){
   return(NormalizeDouble(value, Digits));
}
 
digits:


Vous utilisez :

Votre fonction ne gère pas les erreurs du serveur commercial. La fonction OrderModify() doit être conçue comme une fonction distincte à part entière, avec une gestion des erreurs et une réponse adéquate à celles-ci.

Et encore une fois, pour quoi faire ?

if ((OrderSymbol() != Symbol() || OrderMagicNumber() != Magic || OrderType() >= 2) == TRUE) continue;
if ((OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) == TRUE){

A quoi sert l'huile ?

 
digits:


Utilisez :


Non, nous n'utilisons pas ce genre de g.
 

Il serait étrange d'acheter du pain à 20, de rentrer à la maison et de changer le prix d'achat à 5 roubles, puis de voir dans son portefeuille l'arrivée de 15 roubles de différence... Fantastique... ;)

Vous pourriez revendre le pain pour 35 roubles (15 roubles de bénéfice) mais le courtier ne vous donnerait pas de commission :=)

 

Bon après-midi. J'ai commencé à étudier le MQL il y a quelques jours, j'ai relu le site mais je ne trouve pas la réponse. (Ne jugez pas un débutant)

Si j'avais déjà essayé, j'aurais vu que de nombreuses commandes sont maintenant fermées. Voici un code simple qui devrait fermer un ordre lors du croisement d'une MA(5) et d'une MA(21)

Voici le code pour fermer l'ordre en croisant MA(5) et MA(21). Merci.

double ma50;

double ma51;

double ma210;

double ma211;

double ma550;

double Stoh;

int start()

{

//Open Orders--------------------------------------------------------------------------------

{

ma50=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,0);

ma51=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,1);

ma210=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,0);

ma211=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,1);

ma550=iMA(NULL,0,55,0,MODE_EMA,PRICE_CLOSE,0);

Stoh=iStochastic(Symbol(),5,5,3,3,MODE_SMA,1,MODE_MAIN,0);

if(OrdersTotal()==0 && ma50 > ma51 && ma50 > ma210 && ma51 < ma211 && ma210 > ma550 )

OrderSend(Symbol(),OP_BUY,Lots,Ask,0,0,0,"BUY",123,0,Red);

}

//Close Orders--------------------------------------------------------------------------------

{

if(OrdersTotal()==1 && ma50 < ma210 )

if(OrderSelect(10,SELECT_BY_POS)==true)

OrderClose(OrderMagicNumber(),Lots,Bid,1,CLR_NONE);

}

}


 
AlexCY:

Bon après-midi. J'ai commencé à étudier le MQL il y a quelques jours, j'ai relu le site web, mais je ne trouve pas la réponse. (Ne jugez pas un débutant)

Si j'avais déjà essayé, j'aurais vu que de nombreuses commandes sont maintenant fermées. Voici un code simple qui devrait fermer un ordre lors du croisement d'une MA(5) et d'une MA(21)

Merci.

Que le code soit correct ou non dépend directement de ce que vous, et personne d'autre, entendez par ce terme.

Ici, vous essayez d'ouvrir un ordre avec une tentative similaire mais légèrement plus incorrecte de le fermer.

La seule chose que je peux vous conseiller, c'est d'aller approfondir l'étude de la langue, il n'y a pas d'urgence, car une trop petite base est la principale raison des malentendus.

Les paramètres dans OrderClose ne sont pas corrects . + Si vous avez un ordre OrderSelect est pris avec le numéro 0. + êtes-vous sûr qu'après le prochain tick ou deux "ma50 < ma210" ne sera pas exécuté en mangeant votre spread ?

et le code est inséré par le bouton SRC de la barre d'outils.

 

Bon après-midi.

Dans le code de l'indicateur nous devons attraper le moment où une nouvelle tendance apparaît sur le graphique, et obtenir le nom de cette tendance.

En plus de suivre la liste de tous les objets à chaque tick, de fixer le moment du changement du nombre d'objets et de parcourir ensuite toute la liste dans l'espoir de trouver l'objet qui vient d'être appliqué... Existe-t-il un autre moyen, moins coûteux ? Si oui, comment cela peut-il être mis en œuvre plus facilement ?

 
satorifx:

Bon après-midi.

Dans le code de l'indicateur nous devons attraper le moment où une nouvelle tendance apparaît sur le graphique, et obtenir le nom de cette tendance.

En plus de suivre la liste de tous les objets à chaque tick, de fixer le moment du changement du nombre d'objets et de parcourir ensuite toute la liste dans l'espoir de trouver l'objet qui vient d'être appliqué... Existe-t-il un autre moyen, moins coûteux ? Si oui, comment cela peut-il être mis en œuvre plus facilement ?


et dans la partie où l'objet est directement appliqué, ajouter un lien vers le bloc avec le traitement de ce qui précède ?
 
ALXIMIKS:

et dans la partie où l'objet est directement appliqué, ajouter un lien vers le bloc avec le traitement de ce qui précède ?
De quelle partie parle-t-on ? J'ai deux méthodes d'observation des tendances : avec mon propre script (oui, je peux y ajouter ce que je veux) et avec les observations standard des tendances à l'aide des outils MT4 (je ne peux rien ajouter ici). La tâche consiste à tracer la tendance par n'importe quelle méthode.
Raison: