[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 476

 
Si vous en avez besoin, je posterai le jma aussi. Changer le nom de l'indicateur en JMA[i]
Dossiers :
jmaxvib.mq4  11 kb
 
for(i = 0; i < limit; i++)
     {
       if(dBuffer[i+1]>80 && dBuffer[i]<80) DN[i] = 70; Fd=-1; Fu=0;               //пересекла 80   --> 1
       if(dBuffer[i+1]<20 && dBuffer[i]>20) UP[i] = 30; Fu=1;  Fd=0;               //пересекла 20   --> 1
       
       if(dBuffer[i+1]>rsi[i+1] && dBuffer[i]<rsi[i]) dn[i] = 60; fd=-1; fu=0;     //пересечение двух  -->  2
       if(dBuffer[i+1]<rsi[i+1] && dBuffer[i]>rsi[i]) up[i] = 40; fu=1;  fd=0;     //пересечение двух     -->  2
       
       if(Fd==-1 && fd==-1) dot[i]=90; Fd=0; Fu=0; fd=0; fu=0;
       if(Fu==1 && fu==1)   dot[i]=10; Fd=0; Fu=0; fd=0; fu=0;

Vous passez des barres du temps présent au temps passé.

Le tableau est parcouru jusqu'au dernier.

Par conséquent, toutes les variables donneront des valeurs pour le cas le plus récent (dans ce cas -- il y a longtemps).

Par conséquent, vous devez effectuer une recherche du passé au présent.

for(i = limit; i >= 0; i--)
Et les variables
int fd, fu,Fd, Fu;

déclare au niveau supérieur, c'est-à-dire avant Start et Init.

Et il n'est pas nécessaire de les mettre à zéro au départ. Ne laissez la mise à zéro qu'à l'endroit où vous la faites faire.

if(Fd==-1 && fd==-1) dot[i]=90; Fd=0; Fu=0; fd=0; fu=0;
       if(Fu==1 && fu==1)   dot[i]=10; Fd=0; Fu=0; fd=0; fu=0;
 
rlx Merci, Vce fonctionne.
 
PapaYozh:


Tout d'abord, OrderSend() y apparaît 2 fois, et les deux fois en dehors de la condition que vous avez spécifiée.

Deuxièmement, le prix non normalisé est transmis à OrderSend().

Troisièmement, analyser le résultat renvoyé par la fonction OrderSend(), écrire un message dans le journal en cas d'erreurs lors de l'ouverture/modification/fermeture de la commande et analyser le journal.


Quelqu'un peut-il poster la version corrigée de l'expérience 1 ?
 

Bonjour !

Merci pour vos réponses - vous avez été très utiles )))).

Les gars ! Le conseiller expert effectue des transactions lorsque les deux muwings se croisent. Et lorsqu'ils se recroisent, il ferme les transactions et les ouvre dans la direction opposée, perdant ainsi des profits.

1. Comment écrire qu'il conclut des affaires alors que les lignes viennent juste de commencer à converger ? Et il n'a pas ouvert un nouveau marché dans la même direction, mais a attendu qu'ils se croisent dans la direction opposée ?

2. ou la fermeture d'un trade lorsque le r.c.i. croise le niveau 80 vers le bas à l'achat, et le niveau 20 vers le bas à la vente. et lors de la fermeture d'un trade, lorsque les conditions sont remplies, il n'ouvrirait pas un trade dans la même direction, mais attendrait qu'ils se croisent dans la direction opposée ?

S'il existe des fils similaires sur le forum, donnez-moi un lien !

Merci d'avance !

Bon échange !

Des transactions rentables !

 

Bonjour à tous !

S'il vous plaît, dites-moi ce que cela signifie :

L'ordre d'achat ...... a échoué [Délai d'exécution].

Je suis particulièrement intéressé par la durée de ce délai

 
smartemiy:

Bonjour !

Merci pour vos réponses - vous avez été très utiles )))).

Les gars ! Le conseiller expert effectue des transactions lorsque deux muwings se croisent. Et lorsqu'ils se recroisent, il ferme les transactions et les ouvre dans la direction opposée, perdant ainsi des profits.

1. Comment écrire qu'il conclut des affaires alors que les lignes viennent juste de commencer à converger ? Et il n'a pas ouvert un nouveau marché dans la même direction, mais a attendu qu'ils se croisent dans la direction opposée ?

2. ou la fermeture d'un trade lorsque le r.c.i. croise le niveau 80 vers le bas à l'achat, et le niveau 20 vers le bas à la vente. et lors de la fermeture d'un trade, lorsque les conditions sont remplies, il n'ouvrirait pas un trade dans la même direction, mais attendrait qu'ils se croisent dans la direction opposée ?

S'il existe des fils similaires sur le forum, donnez-moi un lien !

Merci d'avance !

Bon échange !

Des transactions rentables !


https://www.mql5.com/ru/code a un entrepôt plein de semblables
 
Autre question : quelle fonction permet d'extraire le coût par point d'outil ?
 
PapaYozh:


Premièrement, OrderSend() y apparaît 2 fois et les deux fois en dehors de la condition que vous avez spécifiée.

Je ne veux pas être un emmerdeur, cependant.

if(OrdersTotal()>0&&tral>0&&OrderMagicNumber()==MAGIC&&(OrderType()==OP_SELL||OrderType()==OP_BUY)){
     if(ObjectFind(NamePrice)==-1)
      {
        ObjectCreate(NamePrice,OBJ_HLINE,0,0,Ask);
        ObjectSet(NamePrice,OBJPROP_COLOR,LineColor);
      }
      double n= ObjectGet( NamePrice, OBJPROP_PRICE1); 
      double p1= ObjectGet( NamePrice1, OBJPROP_PRICE1);
      double p2= ObjectGet( NamePrice2, OBJPROP_PRICE1);
//....................................................................... 
      double d= AccountEquity()-AccountBalance();                 
       if(ObjectFind(NamePrice1)==-1&&d>0)
      {       
        ObjectCreate(NamePrice1,OBJ_HLINE,0,0,n+d*Point*10);
        ObjectSet(NamePrice1,OBJPROP_COLOR,LineColor1);
      }
      if(n+d*Point*10>p1)ObjectSet(NamePrice1,OBJPROP_PRICE1,n+d*Point*10);
      if(ObjectFind(NamePrice2)==-1&&n+d*Point*10<p1)
      {       
        ObjectCreate(NamePrice2,OBJ_HLINE,0,0,n+d*Point*10);
        ObjectSet(NamePrice2,OBJPROP_COLOR,LineColor2);
      } 
      if(p2!=n+d*Point*10)ObjectSet(NamePrice2,OBJPROP_PRICE1,n+d*Point*10);  
      if(nb+ns==2&&tral<20&&p1-p2>=(p1-n)/tral&&p2>n&&p2-n>dohod*Point/10)CloseALL(); 
      if(nb+ns==2&&tral>20&&p1-p2>=tral*Point&&p2>n)CloseALL();  
      }
//..........................................................................
    if(ob==0||OrderOpenTime()<iTime(Symbol(),TF,0))
       { 
     
      if( R==1&&zb==0&&C1>O1&&iVolume(Symbol(),TF,0)<2)
         {
         if(ob==0||OrderOpenTime()<iTime(Symbol(),TF,0))
         {
         OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+dist*Point,3,0,0,"ko",MAGIC,TimeCurrent()+60*experation,Green);
         }
         }
      
      }
    if(os==0||OrderOpenTime()<iTime(Symbol(),TF,0))
        {      
      if(R==1&&zs==0&&C1<O1&&iVolume(Symbol(),TF,0)<2)
        {        
         if(os==0||OrderOpenTime()<iTime(Symbol(),TF,0))
         {
         OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-dist*Point,3,0,0,"ko",MAGIC,TimeCurrent()+60*experation,Red);
         }
         }
      return(0);
     }
   

   
  }

Expliquez-moi comment un ordre s'ouvre si OrderTotal() est égal à zéro.

Merci.

 

S'il vous plaît, dites-moi quel code doit être écrit dans l'EA pour que l'EA ne fasse des transactions qu'une fois par heure.

Par exemple, l'EA s'est déclenché, un ordre est ouvert (pas intéressé par la suite), je voudrais que l'ordre ne s'ouvre pas sur la barre actuelle sur une échelle de temps horaire.

tout ressemble à quelque chose comme ceci

int hh ;
int CurrentHour ;
CurrentHour=TimeHour(TimeCurrent()) ;
if (CurrentHour!=hh)
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point) ;
hh=TimeHour(TimeCurrent()) ;
}

mais j'ai d'innombrables commandes ouvertes

Raison: