[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 54

 

Que tipo de constantes: MA_TALKING_LONG , MA_TALKING_SHORT ?

Como você os declara ?

 
Vinin:

Levar em conta a visibilidade das variáveis e matrizes


Eu os coloquei no mundo... O mesmo erro.

FAQ:

Que tipo de constantes: MA_TALKING_LONG , MA_TALKING_SHORT ?

Como você os declara?

#define MA_TALKING_LONG                         0                             // Машки расположены к покупке
#define MA_TALKING_SHORT                        1                             // Машки расположены к продаже
#define MA_TALKING_FLAT                        -1                             // Машки указывают на флет
 

mostrar o cabeçalho (declaração) desta função GetStateMa() - o problema está lá

mudá-lo para GetStateMa(int signal){} deve consertá-lo

 
FAQ:

mostrar o cabeçalho (declaração) desta função GetStateMa() - o problema está lá

Mudá-lo para GetStateMa(int signal){} deve consertá-lo

De qualquer forma, aqui está a essência. Um especialista corrigiu meu Consultor Especialista, funcionou bem. Minha tarefa era abrir 1 ordem apenas para 4 sinais diferentes e cada sinal foi gerado e calculado separadamente. Ele consertou meu Consultor Especialista, mas estragou sua lógica.

Comecei a analisar seu código. Sua escrita é brutal, estive pesquisando sobre isso pelo segundo dia.

Antes de ser assim:

no início:

   int signal[4];
   CalcSignals(signal);

   if (!Trade(signal))
      return (0);

E aqui estão as funções para deixar claro o que é o quê:

//+-------------------------------------------------------------------------------------+
//| Получение значений МА на двух соседних барах                                        |
//+-------------------------------------------------------------------------------------+
double GetCurAndPrevMA(int maPeriod, double& prevMA)
{
   prevMA = iMA(NULL, i_trading_TF, maPeriod, 0, MODE_EMA, MODE_CLOSE, 1);
   return (iMA(NULL, i_trading_TF, maPeriod, 0, MODE_EMA, MODE_CLOSE, 0));
}
//+-------------------------------------------------------------------------------------+
//| Получение положения машек между собой                                               |
//+-------------------------------------------------------------------------------------+
void CalcSignals(int& signal[])
{
   double ema365_1;
   double ema365_0 = GetCurAndPrevMA(365, ema365_1);

   for (int i = 0; i < 4; i++)
   {
      double ema1;
      double ema0 = GetCurAndPrevMA(g_maPeriod[i], ema1);
      signal[i] = SIGNAL_NO;

      if (ema1 < ema365_1 && ema0 > ema365_0)
         signal[i] = SIGNAL_BUY;
      if (ema1 > ema365_1 && ema0 < ema365_0)
         signal[i] = SIGNAL_SELL;
   }
}

De modo geral, é engraçado ver que uma função como vazia não deve retornar nada por definição, mas ainda assim retorna o valor de um elemento do sinal da matriz [i].

Será que programadores experientes costumam usar isso? Ou é demais?

Agora estou tentando escrever o que preciso para ver os truques que estão presentes naquele Expert Advisor. Porque não podemos prescindir de matrizes ali.

 
Тhoz:

De qualquer forma, aqui está o essencial. Meu consultor especializado, que tem funcionado bem para mim, foi corrigido por um profissional. Minha tarefa era abrir apenas 1 ordem por 4 sinais diferentes e cada sinal foi gerado e calculado separadamente. Ele consertou meu Consultor Especialista, mas estragou sua lógica.

Comecei a analisar seu código. Sua escrita é brutal, estive pesquisando sobre isso pelo segundo dia.

Antes de ser assim:

no início:

E aqui estão as funções para deixar claro o que é o quê:

De modo geral, é engraçado ver que uma função como vazia não deve retornar nada por definição, mas ainda assim retorna o valor de um elemento do sinal da matriz [i].

Será que programadores experientes costumam usar isso? Ou é demais?

Agora estou tentando escrever o que preciso para ver os truques que estão presentes naquele Expert Advisor. Porque não podemos prescindir de matrizes ali.

Usado freqüentemente, secreto em int& , duplo&
 
Mislaid:
É frequentemente usado, o segredo emint& ,duplo&

Eu já descobri isso, mas acho que já é uma perversão. Por que fazer uma função vazia então? Não é lógico. Você precisa devolver algo... devolva-o através de uma função de tipo int, duplo...

 
Ocorreu um erro ao depurar a impressora:
2013.01.06 21:06:32     2011.11.28 00:20  Base150 EURUSD,M5: not enough stack for parameter

O que fazer?

 
hoz:

Eu já descobri isso, mas acho que já é uma perversão. Por que fazer uma função vazia então? Não é lógico.

É lógico.

Esta função não retorna nada, ela realiza operações sobre os elementos da matriz passados para ela.

 
hoz:

Aqui está minha função de modificação de pedidos pendentes. Ao modificar, eu estabeleço um novo preço e um novo stoploss. A função funciona parcialmente, mas por alguma razão o testador está recebendo erros 1.

Minha função está escrita corretamente?

if((b_mod) && (preçoB > Perguntar)) OrderModify(b_ticket,priceB,priceS,0,0,Brown);
if((s_mod) && (priceS < Bid)) OrderModify(s_ticket,priceS,priceB,0,0,Brown);


Aqui devemos considerar MarketInfo(Symbol(),MODE_STOPLEVEL) i.e.

priceB >= Ask+ MarketInfo(Symbol(),MODE_STOPLEVEL)*Ponto

priceS < =Bid- MarketInfo(Symbol(),MODE_STOPLEVEL)*Ponto

 
PapaYozh:

Isto faz sentido.

Esta função não retorna nada, ela opera sobre os elementos da matriz que lhe foi passada.


Assim, se você passar elementos para uma função do tipo duplo ouint, também pode realizar as mesmas operações, mas sem perversões. Por que complicar sua vida?