Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 647

 
simpleton:

Si des calculs autres que le prix total de la position sont nécessaires, vous pouvez "renvoyer" les valeurs de S1 et S2 à la fonction appelée en passant les variables elles-mêmes par référence, et renvoyer le signe d'erreur de la fonction. Autrement dit, le prototype de la fonction appelée pourrait ressembler à ceci : "bool fun(double &S1, double &S2) ;". La fonction appelante lance des variables, les passe à fun() et, si fun() renvoie vrai, utilise les valeurs des variables passées (qui peuvent elles-mêmes avoir des noms différents) comme S1 et S2.

Merci ! Roger. Sauf qu'avec l'erreur sur OrderSelect, il n'est pas évident de s'arrêter sauf pourcontinuer.

Suppression du message tardif, j'ai fait presque la même chose que ce qui est décrit.

double CenaUsrednenija(const int type,const int Magic){
double nn=0,bb=0;
 double factb=0;
  int total=OrdersTotal();

for(int i=total-1; i>=0; i--)
  {
    if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol() != Symbol()) continue;  

   if(OrderSelect(i,SELECT_BY_POS))
     {
      if(OrderSymbol()==Symbol())
        {
         if(OrderType()==type && OrderMagicNumber()==Magic)
           {
            double op=OrderOpenPrice();
            double llot=OrderLots();
            double itog=op*llot;
            bb=bb+itog;
            nn=nn+llot;
            factb=NormalizeDouble(bb/nn,_Digits);
        //  Print("  type= ",type," Цена открытия= ",op, " Лот= ",llot, " itog=op*llot= ",itog, " factb=bb/nn= ",factb);
        
           }
        }
     }
  }  return(factb);  
}  
 

Je ne peux pas écrire une fonction comme celle-ci.

- Si un ordre de VENTE est à une perte de -1000 pips. puis nous ouvrons le même ordre de VENTE à 1000 points du premier. Si un autre -1000p, nous ouvrons un autre ordre de VENTE, etc.

 
Top2n:

Je ne peux pas écrire une fonction comme celle-ci.

- Si un ordre de VENTE est à une perte de -1000 pips. puis nous ouvrons le même ordre de VENTE à 1000 points du premier. Si un autre -1000p, nous ouvrons un autre ordre de VENTE, etc.


Quel est le problème ici ? Vous sélectionnez l' ordre OrderSelect nécessaire, par exemple, sur le ticket, vous comparez le profit qu'il génère avec l'ordre OrderProfit, puis vous envoyez une demande d'ouverture d'un autre OrderSend.
 
Top2n:

Je ne peux pas écrire une fonction comme celle-ci.

- Si un ordre de VENTE est à une perte de -1000 pips. puis nous ouvrons le même ordre de VENTE à 1000 points du premier. Si un autre -1000p, nous ouvrons un autre ordre de VENTE, etc.


Selon cette condition, le deuxième ordre doit être ouvert au prix actuel qui se situe à environ 1000 points du prix d'ouverture du premier ordre, il n'y a donc rien de difficile - un simple ordre pour ouvrir une nouvelle position.
 
Messieurs, quelqu'un peut-il me dire où trouver des archives de citations de meilleure qualité ?
 
Top2n:
Messieurs, quelqu'un peut-il me dire où trouver des archives de citations de meilleure qualité ?

Nous téléchargeons Tickstory et l'utilisons pour télécharger les ticks de Dukascopia, puis nous pouvons les exporter vers MT4, mais ce n'est que temporaire, le terminal les écrasera avec ses propres fichiers. C'est-à-dire qu'il n'est destiné qu'au testeur, la qualité de la simulation est donc de 99,9 %.
 
evillive:

Vous téléchargez Tickstory et l'utilisez pour télécharger les ticks de Dukascopy, puis vous pouvez les exporter vers MT4, mais ce n'est que temporaire, le terminal les écrasera avec ses propres fichiers. C'est-à-dire qu'elle est uniquement destinée au testeur, de sorte que la qualité de la simulation est de 99,9 %.

Oui, le sujet, merci beaucoup).
 

Je n'arrive pas à comprendre ce qui ne va pas avec WindowTimeOnDropped(). Aucune valeur lors de la remise à zéro du graphique (tout le temps =0). J'ai écrit un petit code pour le vérifier.


//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- input parameters

double xBuffer[];
int init()
  {
   string short_name;
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,xBuffer);
//---- name for DataWindow and indicator subwindow label
   short_name="Mouse";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
//----
   return(0);
  }

int start()
  {
  datetime Mouse=WindowTimeOnDropped();
  Alert(" Mouse= ",Mouse);
  xBuffer[0]=Mouse;
  return(0);
  }
 
Collègues, conseillez comment ignorer l'événement onChartEvent(...) dans EA ?

Le problème est que si vous modifiez l'horizon temporel lorsque l'EA est en cours d'exécution, l'EA se réinitialise et rouvre les transactions. De leur côté, les transactions qui ont été ouvertes auparavant restent "sans surveillance".

Comment lutter ? Par miracle, je dois redessiner le graphique, mais il a besoin d'un EA préalablement initialisé.

 
intrade:
Collègues, conseillez comment ignorer l'événement onChartEvent(...) dans EA ?

Le problème est que si vous modifiez l'horizon temporel lorsque l'EA est en cours d'exécution, l'EA se réinitialise et rouvre les transactions. De leur côté, les transactions qui ont été ouvertes auparavant restent "sans surveillance".

Comment lutter ? Par miracle, je dois redessiner le graphique, mais il a besoin d'un EA préalablement initialisé.


Pour rédiger les conditions d'ouverture exactes et sans ambiguïté !
Raison: