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

 
hoz:

Hmm. Acho que você não pode usar uma constante para o caso como variável, de acordo com a documentação. Diz algum tipo de constante alvo, constante de caráter ou expressão de caráter.

Só funciona se você definir uma letra tipo string, ou seja, 1 caractere (se mais de 1 caractere, o compilador jura) ou um número.

Nada mais.
Diz algumas constantes de destino, expressões de caráter e constantes de caráter.

Somente constantes inteiras.
 
Ajude-me a aconselhar, há um sinal para abrir uma posição de compra, depois de um tempo há outro sinal ou várias posições de compra, cada uma das quais dura por 1 vela como fazer no momento de cada sinal para abrir um novo pedido e apenas um, e não embalar sem fechar pedidos anteriores?
 
tommy27:
Por favor, avise, há um sinal para abrir uma posição de compra, algum tempo depois há outro sinal ou vários sinais para comprar, cada um dos quais dura por 1 vela como fazer um novo pedido abrir durante cada um desses sinais e apenas um, e não embalar sem fechar pedidos anteriores?
Verifique há quantos bares a última posição foi aberta. Se for mais do que o valor especificado, uma nova posição pode ser aberta.
 
artmedia70:
Verifique há quantos bares a última posição foi aberta. Se for mais do que isso, uma nova posição pode ser aberta.


Obrigado
 

Estou aprendendo a trabalhar com bibliotecas. Estou escrevendo um consultor especializado, há uma função como esta:

//+-------------------------------------------------------------------------------------+
//| Получаем машку с заданными параметрами                                              |
//+-------------------------------------------------------------------------------------+
double GetMA(int typeOfMA)
{
   switch (typeOfMA)
   {
      case 1:      return (iMA(NULL, i_fastMATF, i_fastMAPeriod, i_fastMAShift, i_fastMAMethod, i_fastMAApplied, i_fastMAIndex));
      case 2:      return (iMA(NULL, i_slowMATF, i_slowMAPeriod, i_slowMAShift, i_slowMAMethod, i_slowMAApplied, i_slowMAIndex));
      case 3:      return (iMA(NULL, i_filtrMATF, i_filtrMAPeriod, i_filtrMAShift, i_filtrMAMethod, i_filtrMAApplied, i_filtrMAIndex));
   }
}

Coloquei isso na inclusão, tudo funciona como deveria. Mas se você conectá-la à biblioteca, há um erro ao compilar o Expert Advisor:

'GetMA' - function is not defined       E:\Insall'd soft' s\Forex\MetaTraderForProgramming\experts\Scalper_M1.mq4 (127, 8)
'GetMA' - function is not defined       E:\Insall'd soft' s\Forex\MetaTraderForProgramming\experts\Scalper_M1.mq4 (127, 19)
'GetMA' - function is not defined       E:\Insall'd soft' s\Forex\MetaTraderForProgramming\experts\Scalper_M1.mq4 (129, 8)
'GetMA' - function is not defined       E:\Insall'd soft' s\Forex\MetaTraderForProgramming\experts\Scalper_M1.mq4 (129, 19)
4 ошибок, 0 предупреждений.

Por que esta função não é visível na biblioteca?

A biblioteca tem este conteúdo e se compila perfeitamente:

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

int i_fastMATF,
    i_fastMAPeriod,
    i_fastMAShift,
    i_fastMAMethod,
    i_fastMAApplied,
    i_fastMAIndex,
    i_slowMATF,
    i_slowMAPeriod,
    i_slowMAShift,
    i_slowMAMethod,
    i_slowMAApplied,
    i_slowMAIndex,
    i_filtrMATF,
    i_filtrMAPeriod,
    i_filtrMAShift,
    i_filtrMAMethod,
    i_filtrMAApplied,
    i_filtrMAIndex;
//+-------------------------------------------------------------------------------------+
//| Получаем машку с заданными параметрами                                              |
//+-------------------------------------------------------------------------------------+
double GetMA(int typeOfMA)
{
   switch (typeOfMA)
   {
      case 1:      return (iMA(NULL, i_fastMATF, i_fastMAPeriod, i_fastMAShift, i_fastMAMethod, i_fastMAApplied, i_fastMAIndex));
      case 2:      return (iMA(NULL, i_slowMATF, i_slowMAPeriod, i_slowMAShift, i_slowMAMethod, i_slowMAApplied, i_slowMAIndex));
      case 3:      return (iMA(NULL, i_filtrMATF, i_filtrMAPeriod, i_filtrMAShift, i_filtrMAMethod, i_filtrMAApplied, i_filtrMAIndex));
   }
}
 
Olá a todos. Eu realmente preciso de algumas palestras sobre programação. Você pode me dizer onde posso fazer o download deles sem nenhum incômodo extra? Só encontrei estes: http://sdb.su/programmirovanie/page,17,782-mozzhechkov-a-a-upravlenie-robotami-i-robototexnicheskimi-sistemami.html Mas eles não me servem, pois são muito complicados.
 
popovagalina:
Olá a todos. Eu realmente preciso de algumas palestras sobre programação. Você pode me dizer onde posso fazer o download deles sem nenhum incômodo extra? Encontrei apenas estes: http://sdb.su/programmirovanie/page,17,782-mozzhechkov-a-a-upravlenie-robotami-i-robototexnicheskimi-sistemami.html Mas eles não me servem, pois são muito complicados.
Por que o livro didático de S. Kovalyov não é bom para você? Veja acima e Documentação e AT para ajudar! Boa sorte!
 

Olá.

Você poderia me dizer se o operador OrdensTotal() realmente conta todas as ordens abertas ou aquelas pertencentes ao símbolo atribuído ao Expert Advisor?

Se for geral, como podemos calcular apenas EURUSD se houver pedidos em aberto para USDCHF etc.?

Obrigado.

 
ed3sss:

Olá.

Você poderia me dizer se o operador OrdensTotal() realmente conta todas as ordens abertas ou aquelas pertencentes ao símbolo atribuído ao Expert Advisor?

Se for geral, como podemos calcular apenas EURUSD se houver pedidos em aberto para USDCHF etc.?

Obrigado.


Ele calculará todos eles. Se você quiser ser específico a um símbolo ou algo mais, você pode usar esta função:

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.11.2006                                                     |
//|  Описание : Возвращает количество ордеров.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любой ордер)                    |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ko=0, ot;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) ko++;
        }
      }
    }
  }
  return(ko);
}
 
Agora tenho uma pergunta: os sinais para a coruja vêm de 2 indicadores, o primeiro sinal dura 1 barra e depois desaparece, e o segundo aparece ou na mesma barra ou depois de algumas barras. Como fazer a coruja lembrar o primeiro sinal e esperar que o segundo apareça, não importa quantas barras depois.