Perguntas de um "boneco" - página 273

 
bagdarino:

o custo de, por exemplo, 20 créditos por mês, o que é crédito e o seu custo.

1 crédito = $1
 

Um par precisa de ser codificado em um número. No MT4, saio da situação inicializando primeiro a matriz:

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

depois escreva o par ao número, passando-o através da 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;
      }}}

Gostaria de saber. Não funciona com o MT5 porque já recebi uma mensagem de erro ao tentar inicializar uma matriz:

Z' - demasiados inicializadores

Infelizmente, existe uma lacuna no meu conhecimento neste momento.

Por favor, sugira possíveis soluções para este problema. Talvez haja também uma forma mais rápida para o MT4, terei todo o prazer em aprender.


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

Um par precisa de ser codificado em um número. No MT4, saio da situação inicializando primeiro a matriz:

depois escrevo o par no número, passando-o através da matriz:

.........

Não funciona com o MT5 porque já recebi uma mensagem de erro ao tentar inicializar a matriz:

Z' - demasiados inicializadores

E tem uma matriz com tamanho [35]. A letra 'Z' não cabe nela, e o compilador informa-o sobre isso.

Infelizmente, existe uma lacuna no meu conhecimento neste momento.

Por favor, sugira possíveis soluções para este problema. Talvez também haja uma forma mais rápida para o MT4, ficará satisfeito por saber.

Sobre formas rápidas. A programação é como a poesia. Não precisa de saber nada, excepto cartas. O resto é criatividade. Você tem um problema - inventa uma solução.

E está a insultar-me ao insinuar que um bom programador difere de um mau apenas pela espessura de um livro de referência bem lido .... :) Agora nem me apetece ajudar...

Fi!

 
MetaDriver:

Vapchepa 10+26 = 36. E tem uma matriz de tamanho [35]. A letra 'Z' não cabe, que é o que o compilador lhe diz.

A programação é como a poesia. Não é preciso saber mais nada senão letras. O resto é criatividade. Tem um problema - inventa-se uma solução.

E está a insultar-me ao insinuar que um bom programador difere de um mau apenas pela espessura de um livro de referência bem lembrado .... :) Nem me apetece ajudar...

Fi!

Estranho, mas de alguma forma o código funciona no MT4. No laço ali, sim, j<=36 está no original, este está aqui "desenhado" 35.

Obrigado, o assunto estava de facto na declaração de valor da matriz. Declaro as matrizes desta forma uma vez a cada 100 anos, figurativamente. não o julgue de forma demasiado dura.

Tem nas últimas linhas, especulação, nada mais. Escrevi quase directamente: não sabia o que fazer, por várias razões.

 
Heroix:

Estranho, mas de alguma forma o código funciona no MT4. No laço ali, sim, j<=36 está no original, este está aqui "desenhado" 35.

Obrigado, o assunto foi de facto a declaração de valor da matriz. Declaro as matrizes desta forma uma vez a cada 100 anos, figurativamente. não o julgue de forma demasiado dura.

Está bem.

Tem nas últimas linhas, especulação, nada mais. Escrevi quase directamente: não sabia o que fazer, por várias razões.

Está bem, está bem. Digamos que estou a ter isto... Lua cheia, sim. É toda a fúria hoje em dia.

;)

 
papaklass:

Quem sabe se a posição do MC mudou:

1. Introdução do tratamento de excepções (tente {} catch() {}) . Foi "fortemente oposta".

Não

2. Introdução do operador de Foreach () {}.

? Bem, isso é um pouco um monte de disparates. Não sei o que pedir. O operador é especificamente para contentores, cujo conceito não existe de todo em MQL.

Existem apenas matrizes, para as quais é perfeitamente implementado por um garfo normal.

 
papaklass:

Quem sabe se a posição do MC mudou:

1. Introdução do tratamento de excepções (tente {} catch() {}) . Foi "fortemente oposta".

2. Introdução do operador de Foreach () {} .

PS: Não é claro porque é que o operador se destacou?

É destacada porque há uma palavra reservada para, e é referenciada.
 

Estou a trabalhar demasiado...

o guião:

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

Estou a receber erros:

2013.08.23 10:28:54 Comércios '1421016': venda imediata falhada 1,60 CADCHF a 0,87721 [Pedido inválido]
2013.08.23 10:28:54 Comércios '1421016': venda imediata falhada 1,20 GBPUSD a 1,55836 [Pedido inválido]
2013.08.23 10:28:54 Comércios '1421016': venda imediata falhada 0,80 EURUSD a 1,33455 [Pedido inválido]


Qual é o problema?

 

Tenho tudo em aberto... Mas não fecha o CADCHF. (Servidor é MetaQuotes Demo)

Mudou a direcção do for loop, agora tudo está bem, tudo abre e tudo fecha.

 
i_logic:

Tenho tudo em aberto... Mas não fecha o CADCHF. (Servidor - Demonstração de MetaCotações)

Mudou a direcção do for loop, agora tudo está bem, tudo abre e tudo fecha.

mudou para:

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

Portanto, o encerramento também não funciona.