Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 66

 
mario065:

Hi,

Claro que não.

Se houver mais do que um peru, é preciso fazer tantos pares para cada um como para cada um que come.

Um manipulador para usar todos os pares.

Utilizar uma pega um a um, ou seja, copiar os amortecedores do indicador e depois atribuir o valor do indicador seguinte à pega.

Mas não percebo porque é que precisa de poupar em pegas quando são inteiros elementares e não têm quase nenhum efeito nos recursos?

 
Reshetov:

Utilizar as pegas uma a uma, ou seja, copiar os amortecedores do indicador e depois atribuir o valor do indicador seguinte à pega.

Mas não percebo porque é que precisa de poupar em pegas quando são inteiros elementares e não têm praticamente nenhum efeito nos recursos?

Olá.

No ano passado, escrevi uma função externa como esta:

void CalculatePairs(string dSymbol) {

   atrHandle1=iATR(dSymbol, TimeFrame1, ATRPeriod);
   atrHandle2=iATR(dSymbol, TimeFrame5, ATRPeriod);
   atrHandle3=iATR(dSymbol, TimeFrame15, ATRPeriod);
   atrHandle4=iATR(dSymbol, TimeFrame30, ATRPeriod);
   atrHandle5=iATR(dSymbol, TimeFrame60, ATRPeriod);
   muvHandle1=iMA(dSymbol,TimeFrame1,MAPeriod,0,MAMethod,InpPr);
   muvHandle2=iMA(dSymbol,TimeFrame5,MAPeriod,0,MAMethod,InpPr);
   muvHandle3=iMA(dSymbol,TimeFrame15,MAPeriod,0,MAMethod,InpPr);
   muvHandle4=iMA(dSymbol,TimeFrame30,MAPeriod,0,MAMethod,InpPr);
   muvHandle5=iMA(dSymbol,TimeFrame60,MAPeriod,0,MAMethod,InpPr);
   if(atrHandle1<0 || atrHandle2<0 || atrHandle3<0 || atrHandle4<0 || atrHandle5<0 ||
   muvHandle1<0 || muvHandle2<0 || muvHandle3<0 || muvHandle4<0 || muvHandle5<0 )
     {
      Alert("Error Creating Handles for indicators - error: ",GetLastError(),"!!");
     }

   double ma1[],ma2[],ma3[],ma4[],ma5[];
   double atr1[],atr2[],atr3[],atr4[],atr5[];

   ArraySetAsSeries(ma1, true);ArraySetAsSeries(ma2, true);ArraySetAsSeries(ma3, true);
   ArraySetAsSeries(ma4, true);ArraySetAsSeries(ma5, true);
   ArraySetAsSeries(atr1, true);ArraySetAsSeries(atr2, true);ArraySetAsSeries(atr3, true);
   ArraySetAsSeries(atr4, true);ArraySetAsSeries(atr5, true);

   if (NormalizeDouble(CopyBuffer(muvHandle1,0,0,1,ma1),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle2,0,0,1,ma2),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle3,0,0,1,ma3),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle4,0,0,1,ma4),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle5,0,0,1,ma5),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle1,0,0,1,atr1),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle2,0,0,1,atr2),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle3,0,0,1,atr3),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle4,0,0,1,atr4),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle5,0,0,1,atr5),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}

   Result = 0;
}
double FGroup(){
      CalculatePairs(Currency1);{
         Pair1 = Result;}

Claro que, até fazer cálculos, deu erro 4806, mas depois funciona bem.

Hoje abri este código e perguntei-me se haveria outra maneira.

Um erro é um erro.

Quantas Pegas devo receber por 8 pares e 5 períodos de tempo?

Esta não é uma questão de recursos, tenho de fazer algo melhor.

Документация по MQL5: Основы языка / Функции / Описание внешних функций
Документация по MQL5: Основы языка / Функции / Описание внешних функций
  • www.mql5.com
Основы языка / Функции / Описание внешних функций - Документация по MQL5
 
mario065:

Olá.

No ano passado, escrevi uma função externa como esta:

Claro que, até ter feito os cálculos, deu o erro 4806, mas depois funciona bem.

Abri este código hoje e perguntei-me se haveria outra maneira.

  1. Uma forma de quê?
  2. Porque é que preciso da função CalculatePairs() se ela não mostra nada além de erros?

Retire esta mesma função do seu código e durma bem.

 
Reshetov:
  1. O caminho de quê?
  2. Porque precisa da função CalculatePairs() se ela só produz erros?

Retire esta mesma função do seu código e durma bem.

Há alguns cálculos "grandes" que não são mostrados.

Depois, outras funções pegam no par seleccionado e fazem algo novamente.

O método é simples.

Por exemplo:

Fazemos um manípulo do indicador, não tem símbolo, prazo.

Quando criamos um CopyBuffer, indicamos o período de tempo e o par.

Por exemplo:

int OnInit()

Parece o seguinte: Punho = nome indicador

nulo OnTick()

Ficaria assim: CopyBuffer(símbolo especificado, prazo, cópia de, quanto copiar, onde copiar)

Isto é apenas um diálogo :) consigo.

 
mario065:

Há alguns cálculos "grandes" que ainda não foram mostrados.

Vejo. Tem o ArraySetSeries() aplicado a arrays sem dados, isto é, antes de a informação ser carregada neles, enquanto precisa dela depois de copiar buffers.
 
Reshetov:
Estou a ver. Tem o ArraySetSeries() aplicado a arrays sem dados, ou seja, antes de a informação ter sido carregada neles, enquanto nós precisamos dela após a cópia de buffers.

Exactamente.

Mas penso que será mais fácil para todos se for feito em CopyBuffer - ou seja, especifica-se que par e moldura.

O próprio indicador faz o mesmo cálculo, se ao menos especificar que par e moldura.

Se a própria arquitectura do MT5 permitir fazê-lo mais facilmente.

Boa ideia :) .

 
Reshetov:
Estou a ver. Tem o ArraySetSeries() aplicado a arrays sem dados, ou seja, antes de a informação ter sido carregada neles, enquanto precisa dela depois de copiar buffers.
Não há diferença.
 
tenho tudo configurado, assinei tudo, fiz configurações no terminal, mas não quero negociar automaticamente. quando tento fazer uma encomenda pendente, instala-se e escreve-me sobre sincronização e elimina todas as encomendas no terminal, e depois vejo encomendas do fornecedor. o que preciso de fazer?
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Yedelkin:

Se o Consultor Especialista utilizar MFI, então o seu código deve conter uma linha com a obtenção do cabo deste indicador:"MQL5 Reference / Technical Indicators / iMFI". Assim sendo, o controlo do indicador da média móvel é descrito aqui:"MQL5 Reference Guide / Technical Indicators / iMA".

Tente também ler o artigo"Indicador por indicador em MQL5".

Eu li o artigo. No entanto, não respondeu à minha pergunta "Como posso remover os cabos iMA localizados na janela do indicador MFI e registar o preço de fecho de barra".

O cabo iMA que mencionou não se aplica ao iMA localizado na janela indicadora. Descrição pelo método padrão, o conselheiro remove o cabo iMA do gráfico.
 
Leser: Leia o artigo. No entanto, não respondeu à minha pergunta "Como retirar as pegas do iMA localizado na janela do indicador MFI e registar o preço de fecho do bar?

Originalmente descreveu o problema da seguinte forma: "O Consultor Especialista utiliza IFM; Ma não está no gráfico (janela #1), mas na janela com o indicador de IFM (janela #2)". Respondi:"Se o seu Consultor Especialista utiliza MFI, então o seu código deve conter uma linha com a manipulação deste indicador: "MQL5 Reference Guide / Technical Indicators / iMFI" .

Portanto, sugiro que comece por descobrir como é que o seu Expert Advisor obtém exactamente o manípulo indicador da "janela #2". E aí pensaremos em algo.

Leser : Eu li o artigo. No entanto, não responde à minha pergunta ". iMA localizado na janela do indicador de IFM e registando o preço de fecho do bar".
Uma pergunta esclarecedora: sobre que dados se constrói o indicador MA: sobre os valores do indicador IFM ou sobre os preços de fecho de barras? Nada foi dito antes sobre "o registo de preços de fecho de bares". Foi por isso que forneci uma ligação ao artigo "Indicador do Indicador".
Razão: