[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 223

 
solnce600:

Cavalheiros! Boa noite!

Você poderia me dizer porque o compilador pensa que no código abaixo

a variável int Ticket é indefinida.

Ele gera um erro

Bilhete - variável não definida C:\Program Files\Alpari NZ MT4(2)\experts\hhhhhh.mq4 (18, 6)

Mas a variável Ticket também é definida na declaração de atribuição no código abaixo e o código é compilado com sucesso

A variável int Ticket é local e será redefinida no próximo tick.
 
Vinin:


Provavelmente só faltam parênteses em um só lugar

Problema resolvido. Muito obrigado.
 
TarasBY:
A variável int Ticket é local e será redefinida no próximo tick.
A observação é levada em consideração. Muito obrigado.
 

Eu me deparei com este problema.

Preciso rubricar uma matriz unidimensional de tipo duplo para 3000 valores de preço de oferta, todos os valores são diferentes e não estão em ordem.

Tenho que inserir manualmente cada valor separado por vírgula - não é realista.

Eu tentei com o excel, mas se eu colocar um ponto em vez de um ponto flutuante, o excel não lê os números para colocar uma vírgula entre eles.

Por favor, sugira a melhor opção.


 

Eu escrevi um simples Expert Advisor que retorna 3 variáveis e as passa para iniciar().

Em seguida, em cada tique estes dados (tipo de objeto, preço1 e preço2) devem ser devolvidos.

//+-------------------------------------------------------------------------------------+
//|                                                TradingByLine.mq4                    |
//|                                                              hoz                    |
//|                                                                                     |
//+-------------------------------------------------------------------------------------+
#property copyright "hoz"
#property link      ""

string objName;
int isObj,
    objType;
double price1,
       price2;

//+-------------------------------------------------------------------------------------+
//| Функция иницилизации                                                                |
//+-------------------------------------------------------------------------------------+
int init()
{

   

  return(0);
}
//+-------------------------------------------------------------------------------------+
//| Функция деиницилизации                                                              |
//+-------------------------------------------------------------------------------------+
int deinit()
{
//----
   
//----
  return(0);
}
//+-------------------------------------------------------------------------------------+
//| Блок поиска своих объектов                                                          |
//+-------------------------------------------------------------------------------------+
bool IsObjectFound(double& price1, double& price2, int& objType)
{
   for (int obj=0; obj<=ObjectsTotal()-1; obj++)
   {
      objName = ObjectName(obj);
      isObj = ObjectFind(objName);
      price1 = ObjectGet("objName", OBJPROP_PRICE1);
      price2 = ObjectGet("objName", OBJPROP_PRICE2);
      objType = ObjectType("objName");

      if (isObj != -1)
         return(true);
   }
   return(false);
}
//+-------------------------------------------------------------------------------------+
//| Функция start                                                                       |
//+-------------------------------------------------------------------------------------+
int start()
{
   if (!IsObjectFound(price1, price2, objType))
      return(0);
   Print("objType = ", objType);
   Print("price1 = ", price1, ", price2 = ", price2);

  return(0);
}

Em seguida, dirijo este Expert Advisor em modo de visualização no testador e desenho uma linha no gráfico à mão. Os preços do desenho e o tipo de objeto que recebi na funçãoIsObjectFound() não retornam corretos. Aqui está a saída dos registros:

2013.03.16 20:12:46     2013.01.24 00:02  TradingByLine EURJPY,M1: objType = -1
2013.03.16 20:12:46     2013.01.24 00:02  TradingByLine EURJPY,M1: price1 = 0, price2 = 0
2013.03.16 20:12:46     2013.01.24 00:02  TradingByLine EURJPY,M1: objType = -1
2013.03.16 20:12:45     2013.01.24 00:01  TradingByLine EURJPY,M1: price1 = 0, price2 = 0
2013.03.16 20:12:45     2013.01.24 00:01  TradingByLine EURJPY,M1: objType = -1
2013.03.16 20:12:45     2013.01.24 00:01  TradingByLine EURJPY,M1: price1 = 0, price2 = 0
2013.03.16 20:12:45     2013.01.24 00:01  TradingByLine EURJPY,M1: objType = -1
2013.03.16 20:12:44     2013.01.24 00:01  TradingByLine EURJPY,M1: price1 = 0, price2 = 0

A linha é desenhada à mão, o que significa que ela tem um tipo e outros parâmetros:

A linha

Por que os parâmetros necessários não são devolvidos?

 
solnce600:

Eu me deparei com este problema.

Preciso rubricar uma matriz unidimensional de tipo duplo para 3000 valores de preço de oferta, todos os valores são diferentes e não estão em ordem.

Não é realista inserir manualmente cada valor separado por vírgulas.

Eu tentei com o excel, mas se eu colocar um ponto em vez de um ponto flutuante excel não ler os números para colocar uma vírgula entre eles.

Por favor, sugira a melhor opção.


Excel pode ler, mostre-me mais detalhes de como você o fez
 
hoz:

Eu escrevi um simples Expert Advisor que retorna 3 variáveis e as passa para iniciar().

Em seguida, em cada tique estes dados (tipo de objeto, preço1 e preço2) devem ser devolvidos.

Em seguida, dirijo este Expert Advisor em modo de visualização no testador e desenho uma linha no gráfico à mão. Os preços do desenho e o tipo de objeto que recebi na funçãoIsObjectFound() não retornam corretos. Aqui está a saída dos registros:

A linha é desenhada à mão, o que significa que ela tem um tipo e outros parâmetros:

Por que os parâmetros necessários não são devolvidos?

Temos que

price1 = ObjectGet("objName", OBJPROP_PRICE1);
      price2 = ObjectGet("objName", OBJPROP_PRICE2);
      objType = ObjectType("objName");

objName sem aspas. Este é o nome da variável (identificador no texto do programa) que contém o nome do objeto (string)

 
alsu:

Deve ser

objName sem aspas. Este é o nome da variável (identificador no texto do programa) que contém o nome do objeto (string)



A propósito, a documentação pensa o contrário. Foi aí que me envolvi na confusão.

erro de documentação

 
alsu:

Excel pode lê-lo, mostre-me mais detalhes de como fazê-lo

Na linha de 100 valores com uma vírgula após o primeiro sinal (ou seja, preço)

Destacando uma linha

Home - encontrar e substituir

Mudando todas as vírgulas para pontos - bem sucedido.

Agora temos que colocar vírgulas entre os valores

Eu seleciono o formato das células

Todos os formatos

No campo ativo que exibe o formato numérico do meu fio - Coloco uma vírgula no final

Exel diz não ser capaz de processar o formato que eu entrei.

 
hoz:


A propósito, a documentação pensa o contrário. Por isso, fui enganado.

As aspas são o VALOR da variável string, não a variável em si!!!!
Razão: