[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 396

 
Désolé, je ne peux pas compiler une ligne simple-simple.
double price=(Ask+Bid)/2;
Avant que je le mette, il était à 0. Maintenant...
 
Dimka-novitsek:
Désolé, je n'arrive pas à compiler une ligne simple-simple, elle compilait à 0 avant que je la mette dedans, maintenant elle compile à
.

♪ put it in start ♪
 
Merci !
 

Je n'arrive pas à obtenir le bon cycle, à chaque tick, quelques ordres sont ouverts, cela devrait être comme ça. Lorsqu'un tic-tac se produit, la variable X est déclarée à l'intérieur de la boucle, prenant ainsi la valeur 0.

Ensuite, X=nombre d'ordres est calculé dans la boucle, et si X=0 ou 1, alors ils s'ouvrent.

//+------------------------------------------------------------------+
//|                                                         блин.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
extern double stoploss=0; extern double takeprofit=20;extern int otstup=20; extern datetime expiration=0;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int tiket,tikett;double volume=0.1;int i=0,R1=0,R2=0,A=1 ;
int start()
  { int X; double price=(Ask+Bid)/2;      
//----
       for(int Uy=OrdersTotal();Uy==0;Uy--){Alert ("OrdersTotal()",OrdersTotal());//тут считаем кол-во уже открытых ордеров.
OrderSelect( Uy,SELECT_BY_POS );Alert ("Uy",Uy);if(OrderSymbol()==Symbol()&&OrderMagicNumber( )==1000||OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol())
{X ++;}  Alert ("X",X);}
//----
if (X<2){
   tiket= OrderSend( Symbol(), OP_BUYSTOP,  volume*A, price +otstup*Point, Point* 3, R1, price+takeprofit*Point+otstup*Point, "OP_BUYSTOP", 1000,  expiration, Red); 
   Alert ("OP_BUYSTOP", GetLastError( )); 
   tikett= OrderSend( Symbol(), OP_SELLSTOP,  volume*A, price -otstup*Point, Point* 3,R2, price-takeprofit*Point-otstup*Point, "OP_SELLSTOP" , 2000,  expiration,C'0,128,255' );
    Alert ("OP_SELLSTOP", GetLastError( )); 
    }       
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
//+------------------------------------------------------------------+
//|                                                         блин.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
extern double stoploss=0; extern double takeprofit=20;extern int otstup=20; extern datetime expiration=0;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int tiket,tikett;double volume=0.1;int i=0,R1=0,R2=0,A=1 ;
int start()
  { int X=0; double price=(Ask+Bid)/2;      
//----
       for(int Uy=OrdersTotal();Uy==0;Uy--){Alert ("OrdersTotal()",OrdersTotal());
OrderSelect( Uy,SELECT_BY_POS );Alert ("Uy",Uy);if(OrderSymbol()==Symbol()&&OrderMagicNumber( )==1000||OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol())
{X ++;}  Alert ("X",X);}
//----
if (X<2){
   tiket= OrderSend( Symbol(), OP_BUYSTOP,  volume*A, price +otstup*Point, Point* 3, R1, price+takeprofit*Point+otstup*Point, "OP_BUYSTOP", 1000,  expiration, Red); 
   Alert ("OP_BUYSTOP", GetLastError( )); 
   tikett= OrderSend( Symbol(), OP_SELLSTOP,  volume*A, price -otstup*Point, Point* 3,R2, price-takeprofit*Point-otstup*Point, "OP_SELLSTOP" , 2000,  expiration,C'0,128,255' );
    Alert ("OP_SELLSTOP", GetLastError( )); 
    }       
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

Vous avez déclaré une variable mais ne l'avez pas mise à zéro. Par conséquent, à chaque tic, il ne fera que croître ! !!!!!.

Ce n'est pas la bonne chose à faire.

double price=(Ask+Bid)/2;
 
Merci ! !! Je vais le réinitialiser maintenant. Mais tout de même, quelque chose ne va pas, peut-être que la première boucle pour une raison quelconque ne fonctionne pas et que X reste toujours à 0. Je ne peux même pas le savoir avec certitude, car Alert ("X",X) ne met rien dans le journal, il ne met que des ordres avec des zéros.
 
VOLDEMAR:

Vous avez déclaré une variable mais ne l'avez pas mise à zéro. Par conséquent, à chaque tic, il ne fera que croître ! !!!!!.

Ce n'est pas juste.


Vous vous trompez ici. A chaque tic-tac, cette variable est déclarée à nouveau, elle est donc égale à 0.

C'est le retirer de l'équation.

int start()
  { int X; double price=(Ask+Bid)/2;      
//----
       for(int Uy=OrdersTotal();Uy==0;Uy--){Alert ("OrdersTotal()",OrdersTotal());
OrderSelect( Uy,SELECT_BY_POS );Alert ("Uy",Uy);if(OrderSymbol()==Symbol()&&(OrderMagicNumber( )==1000||OrderMagicNumber( )==2000 )&&OrderSymbol()==Symbol())
{X ++;}  Alert ("X",X);}
//----
if (X<2){
   tiket= OrderSend( Symbol(), OP_BUYSTOP,  volume*A, price +otstup*Point, 3, R1, price+takeprofit*Point+otstup*Point, "OP_BUYSTOP", 1000,  expiration, Red); 
   Alert ("OP_BUYSTOP", GetLastError( )); 
   RefreshRates();
   tikett= OrderSend( Symbol(), OP_SELLSTOP,  volume*A, price -otstup*Point,  3,R2, price-takeprofit*Point-otstup*Point, "OP_SELLSTOP" , 2000,  expiration,C'0,128,255' );
    Alert ("OP_SELLSTOP", GetLastError( )); 
    }       
   
//----
   return(0);
  }
 
Roger:

C'est là que vous avez tort. A chaque tic-tac, cette variable est déclarée à nouveau, elle est donc égale à 0.

Oui, si vous le définissez comme x=0, il est mis à zéro ; si vous le définissez simplement comme x :, il n'est pas mis à zéro, il est incrémenté.

 
VOLDEMAR:

Oui, si vous le définissez comme x=0, il ira à zéro ; si vous le définissez comme x :, il n'ira pas à zéro, il augmentera.



Où avez-vous lu ça dans les annales ?