Domande da un "manichino" - pagina 273

 
bagdarino:

il costo per esempio di 20 crediti al mese, cos'è il credito e il suo costo.

1 credito = 1 dollaro
 

Una coppia deve essere codificata in un numero. Su MT4 esco dalla situazione inizializzando prima l'array:

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"};

poi scrivere la coppia al numero facendola scorrere nell'array:

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

Non funziona con MT5 perché ho già ricevuto un messaggio di errore quando ho cercato di inizializzare un array:

Z' - troppi inizializzatori

Purtroppo, a questo punto c'è una lacuna nella mia conoscenza.

Si prega di suggerire possibili soluzioni a questo problema. Forse c'è un modo più veloce anche per MT4, sarò felice di imparare.


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

Una coppia deve essere codificata in un numero. Su MT4 esco dalla situazione inizializzando prima l'array:

poi scrivo la coppia nel numero facendola scorrere nell'array:

.........

Non funziona con MT5 perché ho già ricevuto un messaggio di errore quando ho cercato di inizializzare l'array:

Z' - troppi inizializzatori

E avete un array con dimensione [35]. La lettera 'Z' non ci sta dentro, e il compilatore vi informa di questo.

Purtroppo, a questo punto c'è una lacuna nella mia conoscenza .

Si prega di suggerire possibili soluzioni a questo problema. Forse c'è un modo più veloce anche per MT4, sarei felice di saperlo.

Sui modi veloci. Programmare è come la poesia. Non c'è bisogno di sapere nulla tranne le lettere. Il resto è creatività. Hai un problema - inventa una soluzione.

E tu mi stai insultando insinuando che un buon programmatore differisce da uno cattivo solo per lo spessore di un libro di riferimento ben letto .... :) Non ho nemmeno voglia di aiutare ora...

Fi!

 
MetaDriver:

Vapchepa 10+26 = 36. E hai un array di dimensione [35]. La lettera 'Z' non ci passa, che è quello che ti dice il compilatore.

Sui modi veloci. Programmare è come la poesia. Non hai bisogno di conoscere altro che le lettere. Il resto è creatività. Hai un problema - inventa una soluzione.

E tu mi stai insultando insinuando che un buon programmatore differisce da uno cattivo solo per lo spessore di un libro di riferimento ben ricordato .... :) Non ho nemmeno voglia di aiutare...

Fi!

Strano, ma in qualche modo il codice funziona su MT4. Nel ciclo lì, sì, j<=36 è nell'originale, questo è qui "disegnato" 35.

Grazie, il problema era effettivamente la dichiarazione del valore dell'array. Dichiaro gli array in questo modo una volta ogni 100 anni, in senso figurato... non giudicarlo troppo duramente.

Lei ha sulle ultime righe, la speculazione, niente di più. Ha scritto quasi direttamente: non sapevo cosa fare, per vari motivi.

 
Heroix:

Strano, ma in qualche modo il codice funziona su MT4. Nel ciclo lì, sì, j<=36 è nell'originale, questo è qui "disegnato" 35.

Grazie, il problema era effettivamente nella dichiarazione del valore dell'array. Dichiaro gli array in questo modo una volta ogni 100 anni, in senso figurato... non giudicarlo troppo duramente.

Ok.

Lei ha sulle ultime righe, la speculazione, niente di più. Ha scritto quasi direttamente: non sapevo cosa fare, per vari motivi.

Va bene, va bene. Diciamo che sto avendo questo... La luna piena, sì, è di gran moda in questi giorni.

;)

 
papaklass:

Chissà se la posizione del MC è cambiata:

1. Introduzione della gestione delle eccezioni (try {} catch() {}) . Era "fortemente contrario".

No

2. Introduzione dell'operatore foreach () {}.

? Beh, questo è un po' un mucchio di sciocchezze. Non so cosa chiedere. L'operatore è specifico per i contenitori, il cui concetto non esiste affatto in MQL.

Ci sono solo gli array, per i quali è perfettamente implementato da un normale fork.

 
papaklass:

Chissà se la posizione del MC è cambiata:

1. Introduzione della gestione delle eccezioni (try {} catch() {}) . Era "fortemente contrario".

2. Introduzione dell'operatore foreach () {} .

PS: Non è chiaro perché l'operatore si è distinto?

È evidenziato perché c'è una parola riservata per, ed è referenziata.
 

Sto lavorando troppo...

la sceneggiatura:

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

Ricevo degli errori:

2013.08.23 10:28:54 Trades '1421016': fallita vendita istantanea 1,60 CADCHF a 0,87721 [Richiesta non valida]
2013.08.23 10:28:54 Trades '1421016': fallita vendita istantanea di 1,20 GBPUSD a 1,55836 [Richiesta non valida]
2013.08.23 10:28:54 Trades '1421016': fallita vendita istantanea 0,80 EURUSD a 1,33455 [Richiesta non valida]


Qual è il problema?

 

Ho tutto aperto... Ma non chiuderà il CADCHF. (Il server è MetaQuotes Demo)

Ho cambiato la direzione del ciclo for, ora tutto va bene, tutto si apre e tutto si chiude.

 
i_logic:

Ho tutto aperto... Ma non chiuderà il CADCHF. (Server - MetaQuotes Demo)

Ho cambiato la direzione del ciclo for, ora tutto va bene, tutto si apre e tutto si chiude.

cambiato in:

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

Quindi anche la chiusura non funziona.