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

 
Elenn:


Toutes les variables sont perdues lorsque vous quittez le programme (redémarrage de l'ordinateur, etc.). Sauf pour les variables globales, car elles sont stockées sur le disque dur. Mais ils ne peuvent être que de type double. Que faire, s'il est nécessaire de stocker des variables d'autres types (int ou string par exemple) ? Qu'est-ce qui n'est pas clair ici ?

Le type de variable.

C'est-à-dire que les G.P. ne peuvent être que des nombres réels. Il est également possible de déclarer toutes les variables globales d'un programme donné à l'intérieur du programme, il est dit ici

 

Salutations aux gourous de MQL !

Aidez un débutant à écrire un morceau de code : Je sais que c'est facile pour vous, mais pour un débutant ......

La condition - fermer plusieurs positions ouvertes d'un côté à la fois selon la même condition (pour moi, après que le prix ait franchi une MA).

J'ai essayé pendant quelques jours, j'ai utilisé quelques exemples des scripts de Kim et Sergey (pas plus d'informations sur lui), mais rien ne fonctionne.

J'ai trois ordres ouverts et seul le dernier doit être clôturé par condition.

Selon la condition, mais un à la fois. Je veux qu'ils soient tous fermés en même temps au premier croisement...

C'est ainsi que je l'ai essayé, maintenant il ne se ferme pas du tout.


//+------------------------------------------------------------------+
//| Check for close order Buy |
//+------------------------------------------------------------------+
void CheckForClosebuy()
{
double maclosebuy ;
//---- trading seulement pour les premiers tiks de la nouvelle barre
if(Volume[0]>1) return ;
//---- get Moving Average
maclosebuy=iMA(NULL,TF,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0) ;
//----
for(int i=0;i<OrderMagicNumber()==MAGIC;i++)
{
while (i>0)
{

if (Open[1]>maclosebuy && Close[1]<maclosebuy)
OrderClose(OrderTicket(),OrderLots(),Bid,3,Aqua) ;
continue ;
}
}
return(0) ;
}

 
Elenn:

"Ne pas se plaindre" n'est pas vraiment un concept mathématique.

C'est écrit ici :


Il existe des variables globales pour le terminal du client, elles sont doubles - https://book.mql4.com/ru/variables/globals elles sont destinées à être échangées entre les EAs.

Et il y a simplement les variables globales, elles peuvent être de n'importe quel type https://book.mql4.com/ru/variables/types elles sont dans une EA

Quelle est votre tâche ?

 

Bonsoir, je suis complètement désemparé. Je m'embrouille avec le code, qui devrait ouvrir deux ordres, buystop et sellstop, et c'est tout. Le code ne semble pas très intelligent, tout semble clair, mais il ouvre cinq commandes, et c'est tout ! Je me suis penché sur ses alertes pendant le débogage, mais il s'est avéré une chose absolument étonnante, il ouvre d'abord deux barres (2011.06.04 20:20:48 2011.02.10 19:00 pour EURUSD avalanche, H1 : Alert : OrderType ( )0) Ne peut pas, ne peut pas être !!!!!! Eh bien, il n'a rien pour les ouvrir ! Pas du tout !!!!!

Il ne possède qu'un type d'ordre OP_BUYSTOP et OP_SELLSTOP. Et à des distances de 20pp en haut et en bas.

Mon ordinateur est en panne ?

Je cite // 0 - OP_BUY acheter
1 - OP_SELL vendre
2 - OP_BUYLIMIT en attente de la limite d'achat
3 - OP_SELLLIMIT Limite de vente différée
4 - OP_BUYSTOP en attente de Buy Stop
5 - OP_SELLSTOP Stop de vente en attente

Il ne peut y avoir d'autres valeurs.


//

Bref, je ne suis pas choqué, mais je suis dans une impasse. Voici le code et la capture d'écran

//+------------------------------------------------------------------+
//|                                                   ля лавин б.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);
  }
  
  
  
  int tiket,tikett;double volume=0.1;int i=0,R1=0,R2=0,A=1 ;double price; int stsBUY;int stsSELL;double Price;int C=0;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
int X,Y; double price=(Ask+Bid)/2;            

       Alert ("OrdersTotal()",OrdersTotal());
       
       if(C==0){ Price = price ;  C=1;}


 for(int i=OrdersTotal();i>0;i--){Alert ("i", i);Alert ("OrderType( )", OrderType( ));OrderSelect(i,SELECT_BY_POS );if(OrderSymbol()==Symbol()&&OrderMagicNumber( )==1000){
if(OrderType( )==OP_BUYSTOP){X++;Alert ("X-v tsikle", X);}}}Alert ("X", X);
if (X==0){Alert ("Price", Price);Alert ("Price +otstup*Point",Price +otstup*Point);Alert ("Price+takeprofit*Point+otstup*Point", Price+takeprofit*Point+otstup*Point);


   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( )); }
   

 for ( i=OrdersTotal();i>0;i--){Alert ("i", i);Alert ("OrderType( )", OrderType( )); OrderSelect(i,SELECT_BY_POS );if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()) { 
if(OrderType( ) ==OP_SELLSTOP) { Y++;Alert ("Y-v tsikle", Y);}}}Alert ("Y", Y);
 if (Y==0){ 
 
 
   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);
  }
//+------------------------------------------------------------------+

Je ne sais pas quoi en penser.

 

Les variables X b Y sont le nombre d'ordres bypass et sellstop.

Dans le journal, vous pouvez voir que l'ordre est déclenché en premier, contournant l'ordre, et il n'y a pas d'erreur. Puis soudain, il s'avère que lorsque nous vérifions le type d'ordre, nous avons un ordre d'achat avec une constante numérique de zéro. etc.

Peut-être que la fonction des mandats est défectueuse ?

Et seulement à ce moment-là, les commandes 5 et 4 apparaissent ! !!


 
Dimka-novitsek:

Bonsoir, je suis complètement désemparé.

J'ai l'impression que vous êtes sans espoir. Vous avez déjà un conseiller constitué morceau par morceau, et vous mettez les anciennes erreurs dans chaque nouvelle version. Remplacez tout

 for(int i=OrdersTotal();i>0;i--)

avec .

 for(int i=OrdersTotal()-1;i>=0;i--)
 
Snaf:


Quelle est votre tâche ?

Ma tâche consiste à pouvoir stocker différents types de données et à pouvoir y accéder rapidement. Je pense que ce serait long à travers les dossiers. Les variables globales peuvent être rapides, mais elles ne peuvent stocker que le type double. C'est ce que je pense.
 
Elenn:
Mon objectif est de pouvoir stocker différents types de données avec la possibilité d'y accéder rapidement. Je pense qu'il faudrait beaucoup de temps pour utiliser les fichiers. Les variables globales peuvent être rapides, mais elles ne peuvent stocker que le type double. Je me demande donc ce qu'il faut faire.
Ça ne prendra pas longtemps à travers un fichier. Ce sera plutôt rapide. Il existe encore une autre variante. Vous pouvez stocker des données dans des objets graphiques. Les noms sont écrits à l'avance, et vous pouvez stocker des types entiers et fractionnaires dans les valeurs, la date dans les coordonnées de la date. Le type de chaîne de caractères dans la description de l'objet
 
Stocker les données dans des objets. Facile et rapide à prendre. Facile à rechercher. Facile à rechercher. Pratique.
 
Porter:
Stocker les données dans des objets. Facile et rapide à prendre. Facile à rechercher. Facile à rechercher. Pratique.

Et comment fonctionne le stockage d'objets et qu'advient-il des objets en cas de panne d'ordinateur ?