[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 171

 

Bonjour à tous, j'ai écrit un EA ! Dans le testeur, tout fonctionne, mais dans le compte réel, il refuse d'ouvrir des positions ! Notez qu'il ferme très bien les positions ouvertes manuellement, mais, précisément pour ouvrir, ne veut pas ... Que faire ?


CODE :


//+------------------------------------------------------------------+
//| DOKTRADE.mq4 |
//| DOKSTER@YANDEX.RU |
//| DOKSTER@YANDEX.RU |
//+------------------------------------------------------------------+
#property copyright "DOKSTER@YANDEX.RU"
#lien de propriété "DOKSTER@YANDEX.RU"

extern double LOT = 0.01 ; // LOTS
extern double KOF = 2 ;
extern double SAF = 5 ;
extern int FRC = 21 ;

int start()

{


int CNT ;

int TOTAL ;
int SPREAD ;

double SPR ;
double SPRW ;

double FRCU ;
double FRCU ; double FRCD ;

double EMAH ;
double EMAM; ;
double EMAL ; double EMAL ;

double OPEN ;
double CLOSE ;

double DFB ;
double DFS ;

EMAH = iMA(NULL,0,34,8,MODE_SMA,PRICE_HIGH,1) ;
EMAM = iMA(NULL,0,34,8,MODE_SMA,PRICE_MEDIAN,1) ;
EMAL = iMA(NULL,0,34,8,MODE_SMA,PRICE_LOW,1) ;

OPEN = iOpen(NULL,0,1) ;
CLOSE = iClose(NULL,0,1) ;

FRCU = Haut [iHighest(NULL,0,MODE_HIGH,FRC,1)] ;
FRCD = Low[iLowest(NULL,0,MODE_LOW,FRC,1)] ;

DFB = (CLOSE-FRCD) ;
DFS = (FRCU-CLOSE) ;

SPR = MarketInfo(Symbol(),MODE_SPREAD) ;
SPRW = (SPR*Point) ;

TOTAL = OrdersTotal() ;

si(TOTAL<1)

{

{ si (OPEN<EMAH&&CLOSE>EMAH)

OrderSend(Symbol(),OP_BUY,LOT,Ask,3,FRCD-(SAF*Point),CLOSE+(DFB*KOF), "DOKTRADE",15775,0,Green) ;


si (OPEN>EMAL&&CLOSE<EMAL)

OrderSend(Symbol(),OP_SELL,LOT,Bid,3,FRCU+((SAF*Point)+SPRW),CLOSE-(DFS*KOF), "DOKTRADE",15885,0,Red) ;

retour(0) ;

}
}

for(CNT=0;CNT<TOTAL;CNT++)

{

OrderSelect(CNT,SELECT_BY_POS,MODE_TRADES) ;

{

si (OrderType()==OP_BUY && OrderSymbol()==Symbol())

{

si (OPEN>EMAL&&CLOSE<EMAL)

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ;

retour(0) ;

}

si (OrderType()==OP_SELL && OrderSymbol()==Symbol())

{

si (OPEN<EMAH&&CLOSE>EMAH)

OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue) ;

retour(0) ;

}

}

}

}
 

Bonjour !

Les gars, aidez-moi à comprendre où je me trompe. J'ai l'indicateur Aroon Up&Dn.

J'essaie de le mettre dans mon conseiller expert... Il ne veut pas ouvrir de commandes :

extern int     _Aroon_Period = 14;
extern int     _TimeF = 60;
extern int     _Point = 10;
extern double  _lots=0.01;
extern int     _Prof = 150;
int start()
  {
//----
   double _Up1, _Up2, _Dn1, _Dn2;
   if (Volume[0]>1) return;
   if (_Point<MarketInfo(Symbol(),MODE_STOPLEVEL)) _Point=MarketInfo(Symbol(),MODE_STOPLEVEL);
   _Up1=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,1,1); // пробовал 0 и AroonUpBuffer
   _Up2=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,1,2);
   _Dn1=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,2,1);
   _Dn2=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,2,2);  // пробовал 1 и AroonDnBuffer

   if (_Up1>_Dn1  && _Up2<_Dn2) 
   
   {      
       _OrderDelete(OP_SELLSTOP);
      _price=NormalizeDouble((High[1]+_Point*Point),MarketInfo(Symbol(),MODE_DIGITS));
      _OrderModify(OP_SELL);
      OrderSend(Symbol(),OP_BUYSTOP,_lots,_price,5,0,_price+_Prof*Point,0,0,0,Green);
   }
   if ( _Up1<_Dn1  && _Up2>_Dn2 ) 
   
   {     
      _OrderDelete(OP_BUYSTOP);
      _price=NormalizeDouble((Low[1]-_Point*Point),MarketInfo(Symbol(),MODE_DIGITS));
      _OrderModify(OP_BUY);
      OrderSend(Symbol(),OP_SELLSTOP,_lots,_price,5,0,_price-_Prof*Point,0,0,0,Red);
   }

//---- OrderSendError
   return(0);
  }
Dossiers :
 
7sintez:

Bonjour à tous, j'ai écrit un EA ! Dans le testeur, tout fonctionne, mais dans le compte réel, il refuse d'ouvrir des positions ! Notez qu'il ferme très bien les positions ouvertes manuellement, mais, précisément pour ouvrir, ne veut pas ... Que dois-je faire ?


Tout d'abord, regardez les erreurs dans le journal... Pour les paramètres de prix lors de l'envoi de l'ordre NormalizeDouble est fortement recommandé.

 
splxgf:

Pour commencer, regardez les erreurs dans le journal de bord... Pour les paramètres de prix lors de l'envoi d'un ordre, NormalizeDouble est fortement recommandé.

Merci pour le conseil, mais si vous pouvez être plus précis... Je ne vois rien dans mon journal, à part la synchronisation ! Veuillez me conseiller, il y a peut-être quelque chose à ajouter quelque part ? Oui, et se ferme normalement... Ie à la fermeture tout fonctionne... !
 
Et une autre question - le fonctionnement d'un autre script peut-il affecter le fonctionnement de cette EA ?
 
Terminé avec NormalizeDouble... Aucune réaction ! Que dois-je changer dans les paramètres ?
 
splxgf:

Vous pouvez vous rendre sur https://docs.mql4.com/ru/array/ArrayMaximum

sur un tableau de High.

Si vous pouvez être plus précis, je n'ai pas réussi à comprendre. Je dois trouver la valeur la plus élevée entre High[i] et High[1]. Merci !
 
93408:

Bonjour !

Les gars, aidez-moi à comprendre où je me trompe. J'ai l'indicateur Aroon Up&Dn.

J'essaie de le mettre dans mon conseiller expert... Il ne veut pas ouvrir de commandes :


Je pense qu'à cause de ça

si (Volume[0]>1) retour ;

 
7sintez:
Merci pour le conseil, mais si vous pouvez être plus précis... Parce que le journal ne montre rien d'autre que la synchronisation ! Veuillez me conseiller, il y a peut-être quelque chose à ajouter quelque part ? Oui, et se ferme normalement... C'est-à-dire qu'à la fermeture tout fonctionne... !

En fait, il est absurde de poser de telles questions à un écrivain expert :) Donc, vous n'êtes pas assez mûr pour être un débutant. Si vous voulez vérifier les positions de contrôle et les valeurs limites pour la proximité du prix ouvert, vous apprendrez probablement une chose ou deux sur la grammaire chinoise.
 
Roger:


Je pense que c'est pour ça.

si (Volume[0]>1) retour ;

Non, ce n'est pas ça.

Merci à tous, je l'ai. Ça a marché.