[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 744

 

On ouvre toujours cette commande en lot.

c'est ainsi que je configure les variables dans mon ekspert

extern int TakeProfit=18;
extern int StopLoss=18;
extern double Lot=0.01;
extern int StartTime=0;
int Today=0;
int h=10;
int h1=26;
int mag=777;
bool b=0,s=0, //соответственно бай или селл  
bs=0,// если закрытие по стоплоссу ордера бай
ss=0,// если закрытие по стоплоссу ордера sell
bt=0,
st=0;//      то же по ТП
double bl=0,sl=0; // лоты соответсвенно для бай и селл

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{


if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
int total = OrdersTotal();
if(total == 0)



   {NewOrder(OP_BUY,Lot);
    NewOrder(OP_SELL,Lot);
    NewOrder(OP_BUYLIMIT,Lot);
    NewOrder(OP_SELLLIMIT,Lot);
    NewOrder(OP_BUYSTOP,Lot);
    NewOrder(OP_SELLSTOP,Lot);
    Today=TimeDay(TimeCurrent());}
    
{



for(int cnt=OrdersHistoryTotal();cnt>0;cnt--)
     {
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
{if(OrderMagicNumber()== mag &&
OrderSymbol()==Symbol()) 
{ if (OrderType() == OP_BUY )  {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1;
if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*100; break;}
if (OrderType() == OP_SELL)  {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1; 
if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*100; break;}
            }
         }
      }


}//end

if(bs==1||bl==1)
{   
    NewOrder1(OP_BUYLIMIT,Lot);
Today=TimeDay(TimeCurrent());}
    

et voici l'ordre d'ouverture

int NewOrder1(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR=0; //Цена
double LT=0; //Лот
while(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUYLIMIT)
   {PR=Ask-Point*h;
    if(TakeProfit>0) TP=PR+TakeProfit*Point;
    if(StopLoss>0) SL=PR-StopLoss*Point;
    if(Lot>0) LT=3*Lot;}
int tic1=OrderSend(Symbol(),Cmd,LT,PR,3,SL,TP,0,mag,0,CLR_NONE);
//-----------
if(tic1<0) Print(GetLastError());

if(tic1>0){
b=0;s=0; //соответственно бай или селл  
bs=0;// если закрытие по стоплоссу ордера бай
ss=0;// если закрытие по стоплоссу ордера sell
bt=0;
st=0;//      то же по ТП
bl=0;sl=0; // лоты соответсвенно для бай и селл
}
//-----------
return(tic1);}
 
profitinvesting:

Pourriez-vous me donner le code de la fonction qui mettra un stop une fois au niveau du breakeven, lorsque le profit sera par exemple de 20 pips.

Merci d'avance pour la réponse :)

Vous pouvez la trouver, ainsi que de nombreuses autres fonctions utiles, sur le site d'Igor Kim http://www.kimiv.ru. Et celle dont vous avez besoin s'appelle MovingInWL(), si je ne me trompe pas.
 
ToLik_SRGV:

Boris, c'est encore plus simple que ça. Vous laissez tomber cette ligne :

Tout en haut du code (pour être séparé, pas dans une fonction).
Et ensuite, aux endroits où il y a un appel de la fonction OrderSend(...), il suffit de l'inclure dans un câlin supplémentaire de l'opérateur if.

Maintenant, avant d'ouvrir la prochaine commande, l'opérateur vérifiera s'il y a des affaires ou non au bar actuel. Si c'est le cas, alors la barre actuelle a été stockée dans la variable new et si la barre actuelle coïncide avec celle stockée, alors aucune position ne sera ouverte. Par conséquent, si la barre est nouvelle, son heure d'ouverture ne coïncidera pas avec les données de la variable new, la transaction sera ouverte et la variable new obtiendra une nouvelle valeur.

Je ne connais pas exactement l'architecture de votre EA, mais cette méthode devrait fonctionner dans la plupart des cas.


Merci beaucoup ! Il s'adapte parfaitement !
 

Je ne vois pas de meilleure façon de procéder.

Il y a un indicateur avec un tas de tableaux. Le deuxième indicateur doit fonctionner avec ces tableaux. Pour calculer et sortir le résultat dans son propre tableau.

Le plus simple serait d'appeler cet indicateur mais il semble que ce ne soit pas possible.

Comment accéder à d'autres tableaux ?

 
Abzasc:

Je ne sais pas.

Je l'ai.
 
LAIT123:

Bonjour, pourriez-vous me dire comment afficher les logs dans MT4 ?

Vous n'avez pas besoin de poster 15 messages avec un seul contenu. Et si vous le faites, il est souhaitable de nettoyer après vous. N'attendez pas les oncles.
 
artmedia70:

Vous devez vraiment avoir besoin de... :) Ou la souris est coincée...



Ce n'est pas la souris qui est coincée. C'est l'impatience. Il m'a fallu 20 minutes pour supprimer 15 messages à la fin.
 
Vinin:

Ce n'est pas la souris qui est coincée.
Il pensait que c'était un salon de discussion :)
 
FoxUA:

ouvre toujours cette commande dans un lot.

c'est ainsi que je configure les variables dans mon ekspert

et voici l'ordre d'ouverture

Je ne comprends pas du tout ce que ça fait... Les crochets ne sont pas assortis, il manque un crochet de fermeture... Je ne sais pas ce qui se passe. Nettoyez votre code... C'est difficile à gérer, et il n'y a aucun moyen de le compiler et de l'exécuter - nous travaillons sur nos propres codes...
 
Vinin:

Ce n'est pas la souris qui est coincée. C'est l'impatience. Il m'a fallu 20 minutes pour supprimer 15 messages à la fin.
:) L'impatience est généralement pratiquée dans un autre bureau... :)