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

 

Je vais poser la question plus correctement.

Il existe un bloc de code qui explique au conseiller expert le nombre de transactions qu'il doit ouvrir. Cela ressemble à ceci

int OPEN=1 ;

if(OrdersTotal())

OPEN=0 ; // aucun autre ordre ne peut être ouvert.

si(OPEN==1)

{

//Ouvrez ici

}

Le problème est qu'il ouvre le nombre requis de donnes (1 dans cet exemple) pour tous les symboles. Et je dois lui expliquer

qu'elle doit ouvrir ce nombre de transactions sur l'instrument ACTUEL . Quelque chose comme _Symbol ou Symbol (). Comment cela peut-il être fait ? Je pense que la solution est simple.

 
sibiriyak73:

Je vais poser la question plus correctement.

Il existe un bloc de code qui explique au conseiller expert le nombre de transactions qu'il doit ouvrir. Cela ressemble à ceci

int OPEN=1 ;

if(OrdersTotal())

OPEN=0 ; // aucun autre ordre ne peut être ouvert.

si(OPEN==1)

{

//Ouvrez ici

}

Le problème est qu'il ouvre le nombre requis de donnes (1 dans cet exemple) pour tous les symboles. Et je dois lui expliquer

qu'elle doit ouvrir ce nombre de transactions sur l'instrument ACTUEL . Quelque chose comme _Symbol ou Symbol (). Comment cela peut-il être fait ? Je pense que la solution est simple.

if(!isTradeToDay(Symbol()))
 {
  //Здесь открываем
 }
 
Iurii Tokman:
Il prend un tas d'accords, et dans une vente
 
sibiriyak73:
Ça fait sauter un sacré paquet d'affaires, et dans une vente

eh bien il y a deux options :
1. montrer tout le code
2. rejoindre le club des télépathes

 
Iurii Tokman:

il y a deux options :
1. montrer le code entier
2. rejoindre le club des télépathes :)

:)

J'ai trouvé comment ouvrir à la fois l'achat et la vente. Mais le nombre de transactions ne s'ouvre pas à chaque fois.

int start()

{

double a=iOpen(NULL,PERIOD_D1,0) ;

double d=_ORDER*0.00001 ;

double c=d+1 ;

double s=c*a ;

double limit= NormalizeDouble(s,_Digits) ;

// Print("niveau de limite= ",limite) ;

double e=_STOP*0.00001 ;

double n=e+1 ;

double m=n*a ;

double SL= NormalizeDouble(m,_Digits) ;

//Print("stop level= ",SL) ;

double p=_TP*0.00001 ;

double f=p+1 ;

double z=f*a ;

double TP= NormalizeDouble(z,_Digits) ;

double w=iOpen(NULL,PERIOD_D1,0) ;

double q=_ORDER*0.00001 ;

double j=q+1 ;

double v=w/j ;

double limit1= NormalizeDouble(v,_Digits) ;

// Print("niveau de limite= ",limite) ;

double k=_STOP*0.00001 ;

double y=k+1 ;

double u=w/y ;

double SL1= NormalizeDouble(u,_Digits) ;

//Print("stop level=",SL) ;

double g=_TP*0.00001 ;

double _f=g+1 ;

double _m=w/_f ;

double TP1= NormalizeDouble(_m,_Digits) ;


si(Hour()==Nac)

{

if(iOpen(NULL,PERIOD_D1,0)<iOpen(NULL,PERIOD_D1,1))

{

if(!isTradeToDay(Symbol()))

{

int ticket1=OrderSend(Symbol(),OP_SELLSTOP,1.5,limit1,3,SL1,TP1,NULL,0,0,clrRed) ; //ouvert ici

}

}

if(iOpen(NULL,PERIOD_D1,0)>iOpen(NULL,PERIOD_D1,1))

{

si(isTradeToDay(Symbol())))

{

int ticket=OrderSend(Symbol(),OP_BUYSTOP,1.5,limit,3,SL,TP,NULL,0,0,0,clrBlueViolet) ; //ouvrir ici

}

}

}

if(Hour()==Kon)

{

bool result ;

erreur int ;

//----

while(OrdersTotal()>0)

{

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))

{

si(OrderType()==OP_BUY)

result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS),3,CLR_NONE) ;

si(OrderType()==OP_SELL)

result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE) ;

if(OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)

OrderDelete(OrderTicket()) ;

si(résultat!=TRUE)

{

error=GetLastError() ;

Print("LastError = ",error, ",Symbol()) ;

}

sinon

erreur=0 ;

}

sinon

Print("Erreur lors de la sélection de la commande ", GetLastError()) ;

}

}

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

//| |

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

retour(0) ;

}

Voici le code sans aucune variable déclarée.

 
sibiriyak73:

le code doit être inséré Alt+S
et où se trouve la fonction ?
comment l'avez-vous compilé ? aucune erreur ?

 
Iurii Tokman:

le code doit être inséré Alt+S
et où se trouve la fonction ?
comment l'avez-vous compilé ? aucune erreur ?

La fonction se trouve en bas. La compilation se fait sans erreur. Le côté vendeur a réussi à ajuster l'ouverture d'une transaction sur un instrument spécifique même s'il y a des ouvertures sur d'autres instruments.

instruments. Mais le côté baie déclenche des échanges à chaque tic et c'est tout.

 
Iurii Tokman:

le code doit être inséré Alt+S
et où se trouve la fonction ?
comment l'avez-vous compilé ? aucune erreur ?

Pour l'instant, le code est le suivant. Du côté des vendeurs, tout va bien, mais du côté des acheteurs, chaque tick est une affaire.
Dossiers :
 
sibiriyak73:
Pour l'instant, le code est le suivant. Côté vendeur, tout va bien, mais côté acheteur, chaque tick est une transaction.

du côté des acheteurs, la même chose devrait être faite.

 
Iurii Tokman:

la même chose devrait être faite du côté des acheteurs.

Je n'arrive pas à trouver ce qu'il faut changer dans la fonction isTradeToDay pour qu'elle soit la même du côté de l'achat que du côté de la vente. Le côté achat ne fonctionne toujours pas :(

Raison: