Questions d'un "mannequin - page 273

 
bagdarino:

le coût de 20 crédits par mois, par exemple, ce qu'est un crédit et son coût.

1 crédit = 1 dollar
 

Une paire doit être codée en un nombre. Sur MT4, je me sors de cette situation en initialisant d'abord le tableau :

string CurrName [35]={"","","","","","","","","","","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};

puis écrire la paire au numéro en la faisant passer dans le tableau :

for(int i=0; i<=6; i++)
  {string letter = StringSubstr(Symb,i,1);
   for(int j=10; j<=35;j++)
    {if(letter == CurrName[j])
     {text1=StringConcatenate(text1, j);
      break;
      }}}

Il ne fonctionne pas avec MT5 car j'ai déjà reçu un message d'erreur en essayant d'initialiser le tableau:

Z - trop d'initialisateurs

Malheureusement, il y a une lacune dans mes connaissances à ce stade.

Veuillez suggérer des solutions possibles à ce problème. Peut-être existe-t-il un moyen plus rapide pour MT4 également, je serai heureux de l'apprendre.


Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Операции с массивами / ArrayInitialize - Документация по MQL5
 
Heroix:

Une paire doit être codée en un nombre. Sur MT4, je me sors de cette situation en initialisant d'abord le tableau :

puis j'écris la paire dans le nombre en le faisant passer dans le tableau :

.........

Il ne fonctionne pas avec MT5 car j'ai déjà obtenu un message d'erreur en essayant d'initialiser le tableau:

Z - trop d'initialisateurs

Et vous avez un tableau de taille [35]. La lettre 'Z' ne rentre pas dedans, et le compilateur vous en informe.

Malheureusement, il y a une lacune dans mes connaissances à ce stade.

Veuillez suggérer des solutions possibles à ce problème. Peut-être existe-t-il un moyen plus rapide pour MT4 également, je serais heureux de le savoir.

À propos des moyens rapides. La programmation est comme la poésie. Il n'est pas nécessaire de connaître autre chose que les lettres. Le reste est de la créativité. Vous avez un problème - vous inventez une solution.

Et vous m'insultez en insinuant qu'un bon programmeur ne se distingue d'un mauvais que par l'épaisseur d'un livre de référence bien lu .... :) Je n'ai même pas envie d'aider maintenant...

Fi !

 
MetaDriver:

Vapchepa 10+26 = 36. Et vous avez un tableau de taille [35]. La lettre 'Z' ne passe pas, c'est ce que vous dit le compilateur.

A propos des moyens rapides. La programmation est comme la poésie. Vous n'avez pas besoin de connaître autre chose que les lettres. Le reste est de la créativité. Vous avez un problème - inventez une solution.

Et vous m'insultez en insinuant qu'un bon programmeur ne se distingue d'un mauvais que par l'épaisseur d'un livre de référence bien mémorisé .... :) Je n'ai même pas envie d'aider...

Fi !

C'est étrange, mais d'une certaine manière, le code fonctionne sur MT4. Dans la boucle là, oui, j<=36 est dans l'original, c'est ici "dessiné" 35.

Merci, le problème était en effet la déclaration de la valeur du tableau. Je déclare des tableaux de cette façon une fois tous les 100 ans, au sens figuré... ne le jugez pas trop sévèrement.

Vous avez sur les dernières lignes, la spéculation, rien de plus. J'ai écrit presque directement : je ne savais pas quoi faire, pour diverses raisons.

 
Heroix:

C'est étrange, mais d'une certaine manière, le code fonctionne sur MT4. Dans la boucle là, oui, j<=36 est dans l'original, c'est ici "dessiné" 35.

Merci, le problème était en effet la déclaration de la valeur du tableau. Je déclare des tableaux de cette façon une fois tous les 100 ans, au sens figuré... ne le jugez pas trop sévèrement.

Ok.

Vous avez sur les dernières lignes, la spéculation, rien de plus. J'ai écrit presque directement : je ne savais pas quoi faire, pour diverses raisons.

Très bien, très bien. Disons que j'ai ce... La pleine lune, oui. C'est à la mode en ce moment.

;)

 
papaklass:

Qui sait si la position du MC a changé :

1. Introduction du traitement des exceptions (try {} catch() {}) . Était "fortement opposé".

Non

2. Introduction de l'opérateur foreach () {}.

? C'est un peu n'importe quoi. Je ne sais pas quoi demander. L'opérateur est spécifique aux conteneurs, dont le concept n'existe pas du tout dans MQL.

Il n'y a que les tableaux, pour lesquels il est parfaitement implémenté par une fourchette régulière.

 
papaklass:

Qui sait si la position du MC a changé :

1. Introduction du traitement des exceptions (try {} catch() {}) . Était "fortement opposé".

2. Introduction de l'opérateur foreach () {} .

PS : La raison pour laquelle l'opérateur s'est distingué n'est pas claire ?

C'est mis en évidence parce qu'il y a un mot réservé pour, et c'est référencé.
 

Je travaille trop dur...

le script :

#property script_show_inputs
//--- input parameters
input string   Symb0="EURUSD";
input double   Vol0=0.2;
input string   Symb1="GBPUSD";
input double   Vol1=0.3;
input string   Symb2="CADCHF";
input double   Vol2=0.4;

input bool     buy = true;

MqlTradeRequest TradeRequest[3];
MqlTradeResult  TradeResult[3];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
  if(buy)
  {
  _OrderSend(TradeRequest[0],TradeResult[0],Symb0,ORDER_TYPE_BUY,Vol0,0,0.0,0.0,"EURUSD",0);
  _OrderSend(TradeRequest[1],TradeResult[1],Symb1,ORDER_TYPE_BUY,Vol1,0,0.0,0.0,"GBPUSD",0);
  _OrderSend(TradeRequest[2],TradeResult[2],Symb2,ORDER_TYPE_BUY,Vol2,0,0.0,0.0,"CADCHF",0);
  Comment(PositionsTotal());
  }
  //Sleep(5000);
  else
  {
  
  _OrderSend(TradeRequest[0],TradeResult[0],Symb0,ORDER_TYPE_SELL,Vol0,0,0.0,0.0,"EURUSD",0);
  _OrderSend(TradeRequest[1],TradeResult[1],Symb1,ORDER_TYPE_SELL,Vol1,0,0.0,0.0,"GBPUSD",0);
  _OrderSend(TradeRequest[2],TradeResult[2],Symb2,ORDER_TYPE_SELL,Vol2,0,0.0,0.0,"CADCHF",0);
  }
  
  Sleep(1000);
  _CloseAllPositions();
  }
//+------------------------------------------------------------------+

void _OrderSend(MqlTradeRequest &tradeRequest,
                MqlTradeResult  &tradeResult,
                string          symbol,
                ENUM_ORDER_TYPE type,
                double          volume,
                ulong           deviation,
                double          sl,
                double          tp,
                string          comment,
                int             magic)
{
  MqlTick price; SymbolInfoTick(symbol, price);
  
  tradeRequest.action   = TRADE_ACTION_DEAL;
  tradeRequest.symbol   = symbol;
  tradeRequest.type     = type;
  tradeRequest.volume   = volume;
  
  if(type==ORDER_TYPE_BUY)
    tradeRequest.price    = price.ask;
  if(type==ORDER_TYPE_SELL)
    tradeRequest.price    = price.bid;

  tradeRequest.deviation= deviation;
  tradeRequest.sl       = sl;
  tradeRequest.tp       = tp;
  tradeRequest.comment  = comment;
  tradeRequest.magic    = magic;
  
  OrderSendAsync(tradeRequest,tradeResult);
}


void _CloseAllPositions()
{
  Print("пробую закрытся");
  MqlTradeRequest tradeRequest;
  MqlTradeResult  tradeResult;
  MqlTick price;
  
  if(PositionsTotal()>0)
  {
    
    string symb="";
    
    for(int i=0;i<PositionsTotal();i++)
    {
      symb=PositionGetSymbol(i);
      PositionSelect(symb);
      SymbolInfoTick(symb, price);
      
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
      {
        tradeRequest.type =ORDER_TYPE_SELL;
        tradeRequest.price=price.bid;
      }
      else
      {
        tradeRequest.type =ORDER_TYPE_BUY;
        tradeRequest.price=price.ask;
      }
        tradeRequest.action   =TRADE_ACTION_DEAL;
        tradeRequest.symbol   = symb;
        tradeRequest.volume   = PositionGetDouble(POSITION_VOLUME);
        tradeRequest.deviation= 0;
        tradeRequest.sl       = 0.0;
        tradeRequest.tp       = 0.0;
        tradeRequest.comment  = "";
        tradeRequest.magic    = 0;
        
        OrderSend(tradeRequest,tradeResult);
    }
  }
}

Je reçois des erreurs :

2013.08.23 10:28:54 Trades '1421016' : échec de la vente instantanée de 1,60 CADCHF à 0,87721 [Requête non valide].
2013.08.23 10:28:54 Trades '1421016' : échec de la vente instantanée de 1.20 GBPUSD à 1.55836 [Requête invalide].
2013.08.23 10:28:54 Trades '1421016' : échec de la vente instantanée de 0.80 EURUSD à 1.33455 [Requête invalide].


Quel est le problème ?

 

J'ai tout ouvert... Mais il ne fermera pas le CADCHF. (Le serveur est MetaQuotes Demo)

J'ai changé la direction de la boucle for, maintenant tout va bien, tout s'ouvre et tout se ferme.

 
i_logic:

J'ai tout ouvert... Mais il ne fermera pas le CADCHF. (Serveur - Démo MetaQuotes)

J'ai changé la direction de la boucle for, maintenant tout va bien, tout s'ouvre et tout se ferme.

changé en :

for(int i=PositionsTotal()-1;i>=0;i--)

Donc la fermeture ne fonctionne pas non plus.

Raison: