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

 
smartemiy:

Gente!

como fazer cada 40º pedido um lote maior? :: mercado e pendentes

Que tal isso?

Não exatamente, você deve contar o número de pedidos na história a = (OrdersHistoryTotal()+ 1) % 40

Bem, isto não leva em conta quantas ordens podem estar abertas ao mesmo tempo; caso contrário, teríamos que adicionar as OrdensTotal (provavelmente, menos as ordens pendentes).

 
splxgf:

Não exatamente, precisamos contar o número de pedidos na história a = (OrdersHistoryTotal()+ 1) % 40

Bem, isto não leva em conta quantas ordens podem estar abertas ao mesmo tempo; caso contrário, teríamos que adicionar as OrdensTotal (provavelmente, menos as ordens pendentes).


E se houvesse posições abertas em outros símbolos ou outros Conselheiros Especializados? Pense no que você está escrevendo
 
Figar0:

Para começar, sua função de cálculo de lote é declarada dentro da função de início. Retire-o. Então haverá alguns erros com variáveis não declaradas, mas acho que você pode lidar com eles por conta própria.
Mais uma pergunta, em que função declarar o cálculo do lote? init, deinit?
 
skyjet:
Outra pergunta, em que função devo declarar o cálculo do lote? init, deinit?

Melhor fazer uma função separada e usá-la quando necessário (antes de abrir uma nova posição)
 
O computador pode ser desacelerado por causa da abundância de código (não otimizado) na EA? Ou seja, a abertura das negociações e o processo de tomada de decisões pela própria EA será retardado se ela tiver um grande código ?
 
Vinin:

Melhor fazer uma função separada e usá-la quando necessário (antes de abrir uma nova posição)
Victor, seguindo seu conselho eu acrescentei a função. Agora não se compila.
void CheckForOpen()
double Lots()
  {
   double lot;
   lot=(AccountFreeMargin()*AccountLeverage()*Risk)/(MarketInfo(Symbol(), MODE_LOTSIZE));
   lot=NormalizeDouble(lot,1);
   return(lot);
  }
 

Mantendo a História da Teca



avatar
1
Gangrr 22.09.2011 17:32

Olá a todos!

A questão é - há um roteiro para salvar a história do tick

...

FileSeek(ExtHandle,0,SEEK_END);

FileWrite(ExtHandle, TimeToStr(TimeCurrent(), TIME_DATE | TIME_SECONDS), Bid, Ask, iVolume(Symbol(), NULL, 0));

...

escreve assim:

...

2011.08.15 08:38:49;76.936;76.946;1389

2011.08.15 08:38:51;76.934;76.953;1390
2011.08.15 08:38:56;76.929;76.958;1391
2011.08.15 08:38:56;76.935;76.945;1392

...

Ou seja, acontece que a unidade mínima de tempo é um segundo. Então minha pergunta é: existe alguma forma de escrever carrapatos em milissegundos?

Agradecemos antecipadamente.

 
1
Gangrr 22.09.2011 17:32

Assim, a unidade mínima de tempo é um segundo. Então pergunta - há alguma forma de escrever carrapatos em milissegundos?


Veja o GetTickCount... ou então consulte a função Windows
 
skyjet:
Victor, seguindo seu conselho eu acrescentei a função. Agora não se compila.

void CheckForOpen()
  {



  }

double Lots()
  {
   double lot;
   lot=(AccountFreeMargin()*AccountLeverage()*Risk)/(MarketInfo(Symbol(), MODE_LOTSIZE));
   lot=NormalizeDouble(lot,1);
   return(lot);
  }
Funções aninhadas não são permitidas
 
Vinin:

Funções aninhadas não são permitidas
Esta não é uma função aninhada, mas faz parte da amostra básica MACD EA. Estou tentando adicionar um lote calculado. A função principal e única de início()
Razão: