Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 463

 
HUNTERGOOD:

La demande, que j'ai correctement créée à la page 457 , dans la page #4567 , et tous les éléments nécessaires : "indicateur, ce qui est nécessaire, et comment exactement" - là, il n'est pas difficile de tout décrire, exposer tous les court et au point, clairement et distinctement, et ce qui était faux dans mon premier poste, que ma si petite demande, pour l'homme qui comprend dans le code, ignoré six pages, et enfin "badiner" moi sur les "lumières" - j'écris ici stubby.DEMANDE DE DUPLICATA :

(((^^^^ Bon après-midi à tous. Chers programmeurs, s'il vous plaît aidez-moi à insérer une chaîne avec la possibilité de spécifier le fichier son pour chaque Alert3.Lv1;2;3, pour déclencher un son différent que vous spécifiez. Je ne suis pas doué pour le codage et la programmation moi-même. ^^))

Avez-vous essayé sur la carte, cela fonctionne-t-il ?

 

Pouvez-vous me dire ce qu'il faut faire : je veux placer un stop et un take immédiatement après le passage d'un ordre. Si un EA a ouvert un ordre, je veux définir un stop et un take. Siun opérateur a ouvert un ordre, je veux fixer unstop et un take. Comment puis-je le décrire plus précisément ? Ainsi, le conseiller expert et l'opérateur savent où se trouvent ces ordres !

Ce code semble fonctionner, mais est-il correct ?

Ou est-il nécessaire de prévoir une action pour chaque type d'ordre (Expert Advisor ou opérateur) en utilisant FOR ?

Dossiers :
STOP_TAKE.txt  4 kb
 

Comment s'y prendre :1

2

 
Rewerpool:

Comment s'y prendre :

Les codes sont normalement insérés ici. La plupart des gens ici sont trop paresseux pour analyser les images.

 
Konstantin Nikitin:

Vous pouvez coller les codes ici. La plupart des gens ici sont trop paresseux pour démonter des photos.

Je pensais avoir attaché le code entier d'abord ! Juste le dossier ! Message. Puis, plus brièvement, il a décrit la situation en images !

 

type d'ordre(Expert Advisor ou opérateur) en utilisant FOR ?



//+------------------------------------------------------------------+

//| FONCTION de réglage des ordres ouverts de Stops et de Takeovers
//+------------------------------------------------------------------+
void STOP_TAKE()
{
int tip,Ticket ;
double OOP,OSL,OTP ;
int SPREAD = (int)MarketInfo(Symbol(),MODE_SPREAD) ;
si (stoploss<STOPLEVEL) stoploss=0 ;
si (takeprofit<STOPLEVEL) takeprofit=0 ;
for(int i=0 ; i<OrdersTotal() ; i++)
{
si(OrderSelect(i,SELECT_BY_POS)==true)
{
tip=OrderType() ;
//----------IfOrderTotal()
if(tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
OSL = OrderStopLoss() ;
OTP = OrderTakeProfit() ;
si ((OSL==0&stoploss!=0)||(OTP==0&&takeprofit!=0))
{
OOP = OrderOpenPrice() ;
Ticket = OrderTicket() ;
si (tip==OP_BUY || tip==OP_BUYSTOP || tip==OP_BUYLIMIT)
{
si (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits) ; sinon TP=OTP ;
si (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits) ; sinon SL=OSL ;
si (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("SetStop ",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP) ;
else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket) ;
}
if (tip==OP_SELL || tip==OP_SELLSTOP || tip==OP_SELLLIMIT)
{
si (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits) ; sinon TP=OTP ;
si (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits) ; sinon SL=OSL ;
si (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP) ;
else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket) ;
}
}
}
//----------If(tip<2 &&Order)
sinon si(tip<2 && OrderSymbol()==Symbol()&& OrderMagicNumber()!=Magic)
{
OSL = OrderStopLoss() ;
OTP = OrderTakeProfit() ;
si ((OSL==0&stoploss!=0)|(OTP==0&&takeprofit!=0))
{
OOP = OrderOpenPrice() ;
Ticket = OrderTicket() ;
si (tip==OP_BUY || tip==OP_BUYSTOP || tip==OP_BUYLIMIT)
{
si (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits) ; sinon TP=OTP ;
si (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits) ; sinon SL=OSL ;
si (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP) ;
else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket) ;
}
si (tip==OP_SELL || tip==OP_SELLSTOP || tip==OP_SELLLIMIT)
{
si (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits) ; sinon TP=OTP ;
si (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits) ; sinon SL=OSL ;
si (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP) ;
else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket) ;
}
}
}
}
}
}
 
Rewerpool:

Je pensais avoir attaché le code entier d'abord ! Juste le dossier ! Message. Puis, plus brièvement, il a décrit la situation en images !

Eh bien, pourquoi mettre une photo ici. Je vous en parle.

 
Rewerpool: Les ordres placés manuellement ont un numéro magique de 0, l'EA place avec son propre numéro magique. C'est ce que vous devez utiliser comme guide.
 

@Konstantin Nikitin OK ! La construction du code pour l'ouverture d'un ordre take profit par un conseiller expert ou par un opérateur est-elle correcte ? C'est pourquoi j'ai joint une photo pour rendre la question plus claire !

 
Rewerpool:

@Konstantin Nikitin OK ! La construction du code pour l'ouverture d'un ordre take profit par un conseiller expert ou par un opérateur est-elle correcte ? C'est pourquoi j'ai joint une photo pour rendre la question plus claire !

J'aurais procédé de la manière suivante

for(int i=0; i<OrdersTotal(); i++)
{
     if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
     if(OrderSymbol()!=Symbol()) continue;
     
     int tip = OrderType();
     if(tip!=OP_BUY && tip!=OP_BUYSTOP && tip!=OP_BUYLIMIT) continue;
     
     // переменные которые будут использоваться в любых ордерах
     int Ticket = OrderTicket();
     double OOP = OrderOpenPrice();
     
     //---
     switch( OrderMagicNumber() )
     {
          case Magic:    // Ордера советника
               {
                    // что-то делаем
               }
               break;

          default:       // Все остальные
               {
                    // что-то делаем
               }
     }
}