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

 
Stells:

Bon après-midi.

Question : comment tester ou quels résultats sont les plus fiables ?

Dans le conseiller expert, la période H1 est clairement prescrite partout.

Je teste sur m1 à l'ouverture - perte nette.

Je l'ai testé sur H1 avec tous les ticks qui montent.

Le problème est que les arrêts sont petits - quelques points seulement. Les bénéfices sont importants.

Si l'EA a un contrôle explicite sur l'ouverture d'une nouvelle barre et qu'il ne fonctionne que lorsqu'une nouvelle barre s'ouvre, alors vous pouvez tester sur l'ouverture d'une nouvelle barre. Sinon, seulement des tiques. De plus, les stops sont petits et ils seront évidemment soufflés à l'ouverture d'une nouvelle barre, car sur M1 une barre peut rattraper votre stop de quelques pips en une minute. Testez tous les tics sur M1.
 
artmedia70:
Si l'EA a un contrôle explicite sur l'ouverture d'une nouvelle barre et qu'il ne fonctionne que lorsqu'une nouvelle barre s'ouvre, alors vous pouvez tester sur l'ouverture d'une nouvelle barre. Sinon, seulement des tiques. De plus, les stops sont petits et ils seront évidemment soufflés à l'ouverture d'une nouvelle barre, car sur M1 une barre peut rattraper votre stop de quelques pips en une minute. Testez tous les tics sur M1.

comment (en théorie) tous les ticks diffèrent-ils de H1 ?
 

Bonjour, aidez-moi à comprendre le code, ce que je fais mal. Je suis nouveau dans la programmation. J'ai lu le tutoriel mql4 et regardé beaucoup de codes de conseiller expert, mais je n'arrive toujours pas à trouver les réponses à mes questions. J'ai un terminal à 5 chiffres, compte ECN, spread variable + commission. L'Expert Advisor est le plus simple, il ouvre un ordre de vente lorsque le МА rapide croise le МА lent de haut en bas et vice versa lorsque le МА rapide croise le МА lent de bas en haut. En fait, le TS est beaucoup plus complexe, je n'ai simplement pas encore toutes les fonctions de base qui fonctionnent correctement et je ne peux pas le tester correctement, sans parler de l'optimiser, j'ai décidé de ne pas compliquer le code avec des calculs redondants. Voici le code de l'Expert Advisor lui-même.

#define MAGICMA  20050610
extern string text1              ="===========================MoneyManagment===========================";
extern double Lots               = 0.1;
extern string text2              ="======================Simple_Close_settings=========================";
extern double TakeProfit         = 100;
extern double StopLoss           = 100;
extern double Bezubitok          = 30; //Расстояние, через которое пройдёт цена от открытия сделки в "+", чтобы перенести СтопЛос в безубыток
extern string text3              = "===================TrailingStopLoss_settings=======================";
extern double Trailing           = 100; //Расстояние, через которое будет подтягиватся СтопЛос к текущей цене
extern double Slippage           = 3; // Допуск проскальзования цены при открытии и закрытии сделок
extern string text4              = "===================Indicator_Trade_System_settings=================";
extern int    Fast_EMA_Period    = 8;
extern int    Slow_EMA_Period    = 21;




//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//---- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }

//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
int CheckForOpen()
  {
   double X1,X2,X3,X4;
   int ticket;

   
   X1=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X2=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X3=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
   X4=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
//----
if(Volume[0]>1) return;
  {   
      //ENTRY Ask(buy, long) 
      if (X3<=X4 && X1>X2)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,",",MAGICMA,0,White);
        }
      //ENTRY Bid (sell, short)
      if (X3>=X4 && X1<X2)
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,",",MAGICMA,0,Red);
        }
  }
//----
  }
//+------------------------------------------------------------------+
//| Check for TrailingStop                                           |
//+------------------------------------------------------------------+
void CheckForTrailing()
 {

     if (Trailing>0) for(int i=0; i<=OrdersTotal();i++) 
     {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           if (OrderMagicNumber()==MAGICMA && OrderSymbol()==Symbol()) 
           {
            if (OrderType()==OP_BUY && Bid-OrderOpenPrice()>Trailing*Point && Bid-OrderStopLoss()>Trailing*Point)
            OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
            if (OrderType()==OP_SELL && OrderOpenPrice()-Ask>Trailing*Point && OrderStopLoss()-Ask>Trailing*Point)
            OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
           }
        }
}
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double X1,X2,X3,X4;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
   X1=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X2=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X3=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
   X4=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      //---- check order type 
     
      if(OrderType()==OP_BUY)
        {
         if(Bid>=(OrderOpenPrice()+TakeProfit*Point)||Bid<=(OrderOpenPrice()-StopLoss*Point))OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         break;
        }
        
      if(OrderType()==OP_SELL)
        {
         if(Ask<=(OrderOpenPrice()-TakeProfit*Point)||Ask>=(OrderOpenPrice()+StopLoss*Point)) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
         break;
        }
     }
//----
  }



//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
  {
   if(Bars<25 || IsTradeAllowed()==false) 
     return (0);
   if (AccountFreeMargin()<(100*Point*Lots))
     {
      Print("Стоп! Недостаточно средств для продолжения торговли. Свободная маржа = ", AccountFreeMargin());
      return(0);  
     }
      
   if(Trailing>0) CheckForTrailing();  
     
      
//---- calculate open orders by current symbol
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   else                                    CheckForClose();
   
 
   

   return(0);
  }
//+------------------------------------------------------------------+

Peut-être que quelqu'un peut répondre à mes questions :

1. Lorsque j'ouvre un ordre, je garde des nuls dans OrderSend là où devraient se trouver les paramètres Stopplos et TakeProfit ; en essayant d'y mettre d'autres chiffres, l'expert n'ouvre pas les transactions ; j'ai vérifié si je peux ouvrir manuellement une transaction et définir immédiatement SL et TP, quel peut être le problème ?

2. Je ne comprends pas pourquoi j'ai fixé un TP, SL et TS de 100 pips, alors que les transactions ne sont pas fermées à plusieurs de ces pips, même en tenant compte du spread. Peut-être que la fonction de clôture de ma commande ne fonctionne pas ? Comment puis-je limiter la perte dans ce cas, en fixant initialement le SL, et comment faire pour qu'il suive le prix uniquement dans la direction + ?

3. Ma société de courtage a un niveau d'arrêt = 100 pips, comment puis-je définir des TP et SL virtuels, de sorte que je puisse définir des niveaux inférieurs au niveau d'arrêt, comme lors de la fermeture manuelle des positions? (Les pips dans les comptes Ecn ne sont pas interdits).

4. Est-il possible de faire ce qui suit, et si c'est possible : faire une fermeture inversée et fermer simultanément par le SL et le TP avec un transfert vers le Breakeven (selon l'événement qui se produit en premier) ? J'ai essayé de le faire, mais dans le testeur, il ouvre une position et ne la ferme pas jusqu'à la fin du test, mais collecte seulement les échanges). L'un ou l'autre fonctionne.

Merci d'avance à tous ceux qui répondront !

Dossiers :
 

Bonjour...

Juste une question

Prenons une fractale sur Daily... Comment trouver le prix qui termine la formation de cette fractale, disons sur H1 .... Il est souhaitable que sur le prix apparaisse une flèche...

 
Cmu4:
Messieurs, comment un EA se connecte-t-il à un serveur et à un port spécifiques ? Est-ce même possible ?
Donc, aucun expert en la matière ici ?
 
Cmu4:
Messieurs, comment un EA se connecte-t-il à un serveur et à un port spécifiques ? Est-ce même possible ?

Que signifie se connecter à un socket ou lire des informations via http ?
 
Bonjour, j'ai une question simple et probablement stupide. Est-ce qu'un testeur de stratégie peut faire des erreurs...Quelles méthodes avez-vous pour tester vos stratégies ?..Merci.
 

Juste une question

Prenons une fractale sur Daily... Comment trouver le prix qui termine la formation de cette fractale, disons sur H1 .... Il est souhaitable que sur le prix apparaisse une flèche...

 

Bonjour !

Question sur les fonctions spéciales : init(), start(), deinit().

Comme nous le savons, notamment grâce au tutoriel, pour terminer (quitter) cette fonction spéciale, vous DEVEZ écrire COMPLÈTEMENT l'opérateur Return (par exemple, l'opérateur conditionnel IF-ELSE).

Opérateur de retour (par exemple, dans l'opérateur conditionnel IF-ELSE).

Que signifient alors les valeurs de retour ? Par exemple : Return(0) et éventuellement un autre nombre entier (Return(1)) ;

 

Bonjour à tous !

Veuillez m'aider à modifier un peu l'indicateur "FX5_Divergence_V2.1".

Je travaille avec 3 écrans. L'indicateur dans la fenêtre est affiché avec son nom et d'autres valeurs qui rendent difficile la visualisation de l'indicateur. Souvent, à cause de ces chiffres, je ne peux pas voir les nœuds indicateurs et il est difficile de les comparer (entourés en jaune sur la capture d'écran).

(Veuillez m'aider à corriger l'indicateur afin que seul le nom de l'indicateur soit affiché, sans tous les autres chiffres)

Indicateur et capture d'écran en annexe.


Merci d'avance à tous ceux qui peuvent m'aider)


Dossiers :
Raison: