Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 899

 
Camaradas programadores, um pedido muito grande para ajudar a escrever um pedaço de código para o robô! O robô comercializa dois muwings. Quando eles cruzam, abre uma posição e a fecha no cruzamento oposto. Mas é preciso abrir outra posição no cruzamento oposto. Portanto, quando fecha "Comprar", o robô deve abrir imediatamente "Vender" e vice-versa!
Arquivos anexados:
 
lufer:
Obrigado, mas não funciona com o Mas[N]; no OnInit(), eu já experimentei.
Bem, desculpe-me, ontem não estava muito sóbrio. Ou não muito sóbrio.
 
AlexeyVik:
Bem, desculpe-me, não estava muito sóbrio ontem à noite. Ou não muito sóbrio.
)), isso acontece.
 

Suponha que eu queira que a matriz seja preenchida com dados retirados de um indicador (por exemplo, ATR) de cada barra a partir da primeira barra formada (#1)? Ou seja, a matriz é declarada e a função de partida já a inicializa. Como fazer isso corretamente?

como esta?

for(int i=0; i<N; i=i++)

{

Mas[i]=iATR(NULL,0,1,i+1);

}

Ou pode ser feito via:

for(int i=0; i<N; i=i++)

{

ArrayFill(Mas,i,1,iATR(NULL,0,1,i+1))

}

ou algo completamente diferente..., até agora não tive sucesso de forma alguma (, algo errado, por favor avise, obrigado de antemão.

 
lufer:

Suponha que eu queira que a matriz seja preenchida com dados retirados de um indicador (por exemplo, ATR) de cada barra a partir da primeira barra formada (#1)? Ou seja, a matriz é declarada e a função de partida já a inicializa. Como fazer isso corretamente?

como esta?

for(int i=0; i<N; i=i++)

{

Mas[i]=iATR(NULL,0,1,i+1);

}


O primeiro caso é suficiente. Mas se você precisar de valores a partir da primeira barra, seria sábio contar o laço a partir de 1 também.
 
evillive:
A primeira opção é suficiente. Mas se precisarmos de valores a partir da primeira barra, seria mais razoável contar o ciclo a partir de 1.
Eu tentei ambos com 1 e 0, ainda algo está errado, os valores não estão escritos, quando eu peço para produzir alguns - ele dá apenas zeros
 
lufer:
Eu tentei com 1 e 0, ainda assim algo está errado, nenhum valor está escrito, quando eu peço para produzir alguns - apenas zeros são produzidos
Por favor, mostre-me o código de saída.
 
evillive:
Mostrar o código para pedir a saída.

Eu lhe mostrarei todo o código, por precaução:

//+------------------------------------------------------------------+

extern int    N        =100;                       // Количество баров

       int    Mas[];                             // Объявление массива

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+

int OnInit()
  { 
     ArrayResize(Mas,N,0);                // Установка размера массива      
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+

void OnDeinit(const int reason)
  {

  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+

void OnTick()
  {                                       
   for(int i=0; i<N; i=i++)                     // Цикл записи данных
     {                      

          Mas[i]=iATR(NULL,0,1,i+1);           // Вычисление значений          
     }
       Alert(Mas[0],"," ,Mas[50],"," ,Mas[99]);      // Вывод на экран
   return;                                           // Выход из start
  }
//+------------------------------------------------------------------+

 

Use SRC para inserir código

 
lufer:

Eu lhe mostrarei todo o código, por precaução:


fazer uma matriz de tipo duplo
 
evillive:
fazer uma matriz de tipo duplo
Isto não resolve o problema, agora parece que algo está errado noOnTick() - quando carrego o EA na janela do terminal nada acontece, e quando tento apagá-lo, o terminal fica parado por muito tempo e depois o apaga depois de um tempo. Eu tentei atribuir valores manualmente a alguns elementos, tudo está bem. Algo sobre o ciclo de inicialização da matriz parece estar errado.