Preguntas de un "tonto" - página 273

 
bagdarino:

el coste de, por ejemplo, 20 créditos al mes, qué es el crédito y su coste.

1 crédito = 1 dólar
 

Hay que codificar un par en un número. En MT4 salgo de la situación inicializando primero el 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"};

y luego escribir el par en el número pasándolo por la matriz:

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

Me gustaría saberlo. No funciona con MT5 porque ya me salió un mensaje de error al intentar inicializar el array:

'Z' - demasiados inicializadores

Desgraciadamente, en este punto hay una laguna en mis conocimientos.

Por favor, sugiera posibles soluciones a este problema. Tal vez hay una manera más rápida para MT4 también, estaré encantado de aprender.


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

Hay que codificar un par en un número. En MT4 salgo de la situación inicializando primero el array:

entonces escribo el par en el número pasándolo por el array:

.........

No funciona en MT5 porque ya recibí un mensaje de error al intentar inicializar el array:

'Z' - demasiados inicializadores

Wapchepa 10+26 = 36. Y tienes un array con tamaño [35]. La letra 'Z' no cabe en él, que es lo que te está diciendo el compilador.

Desgraciadamente, en este punto hay una laguna en mis conocimientos .

Por favor, sugiera posibles soluciones a este problema. Tal vez hay una manera más rápida para MT4 también, será feliz de saber.

Sobre las formas rápidas. La programación es como la poesía. No necesitas saber nada más que las letras. El resto es creatividad. Tienes un problema - inventas una solución.

Y tú me insultas insinuando que un buen programador se diferencia de uno malo sólo por el grosor de un libro de referencia bien recordado .... :) Ni siquiera tengo ganas de ayudar...

¡Fi!

 
MetaDriver:

Vapchepa 10+26 = 36. Y tienes un array de tamaño [35]. La letra 'Z' no cabe, que es lo que te dice el compilador.

Sobre formas rápidas. La programación es como la poesía. No necesitas saber nada más que las letras. El resto es creatividad. Tienes un problema - inventa una solución.

Y tú me insultas insinuando que un buen programador se diferencia de uno malo sólo por el grosor de un libro de referencia bien recordado .... :) Ni siquiera tengo ganas de ayudar...

¡Fi!

Es extraño, pero de alguna manera el código funciona en MT4. En el bucle allí, sí, j<=36 está en el original, esto es aquí "dibujado" 35.

Gracias, el asunto era efectivamente la declaración del valor del array. Declaro las matrices así una vez cada 100 años, en sentido figurado... no lo juzgues con demasiada dureza.

Tienes en las últimas líneas, especulación, nada más. Escribió casi directamente: no sabía qué hacer, por varias razones.

 
Heroix:

Es extraño, pero de alguna manera el código funciona en MT4. En el bucle allí, sí, j<=36 está en el original, esto es aquí "dibujado" 35.

Gracias, el asunto era efectivamente la declaración del valor del array. Declaro las matrices así una vez cada 100 años, en sentido figurado... no lo juzgues con demasiada dureza.

De acuerdo.

Tienes en las últimas líneas, especulación, nada más. Escribió casi directamente: no sabía qué hacer, por varias razones.

Muy bien, muy bien. Digamos que estoy teniendo este... La luna llena, sí. Está de moda estos días.

;)

 
papaklass:

Quién sabe si la posición del MC ha cambiado en:

1. Introducción del manejo de excepciones (try {} catch() {}) . Se opuso firmemente.

No

2. Introducción del operador foreach () {}.

? Bueno, eso es una tontería. No sé qué pedir. El operador es específico para los contenedores, cuyo concepto no existe en absoluto en MQL.

Sólo hay arrays, para los que está perfectamente implementado por un tenedor regular.

 
papaklass:

Quién sabe si la posición del MC ha cambiado en:

1. Introducción del manejo de excepciones (try {} catch() {}) . Se opuso firmemente.

2. Introducción del operador foreach () {} .

P.D.: No está claro por qué el operario se destacó...

Está resaltado porque hay una palabra reservada para, y está referenciada.
 

Estoy trabajando demasiado...

el guión:

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

Estoy recibiendo errores:

2013.08.23 10:28:54 Operaciones '1421016': falló la venta instantánea de 1,60 CADCHF a 0,87721 [Solicitud no válida]
2013.08.23 10:28:54 Operaciones '1421016': falló la venta instantánea de 1,20 GBPUSD a 1,55836 [Solicitud no válida]
2013.08.23 10:28:54 Operaciones '1421016': falló la venta instantánea de 0,80 EURUSD a 1,33455 [Solicitud no válida]


¿Cuál es el problema?

 

Tengo todo abierto... Pero no cerrará el CADCHF. (El servidor es MetaQuotes Demo)

Cambiado el sentido del bucle for, ahora todo está bien, todo se abre y todo se cierra.

 
i_logic:

Tengo todo abierto... Pero no cerrará el CADCHF. (Servidor - Demo de MetaQuotes)

Cambiado el sentido del bucle for, ahora todo está bien, todo se abre y todo se cierra.

cambiado a:

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

Así que el cierre tampoco funciona.

Razón de la queja: