Perguntas de Iniciantes MQL4 MT4 MetaTrader 4 - página 89

 
Alexey Kozitsyn:
Você não deveria fazer isso. Seria um grande esgotamento de recursos. E o que há de errado com um tempo de resposta rápido sem looping?
Obrigado. É que o tutorial oficial do mql4 dá como exemplo, é por isso que estou interessado. Pensei que, de alguma forma, poderia funcionar melhor do que de costume.
 
LRA:
Um tique é a chegada de novos dados do servidor. E deve ser processado imediatamente após a sua chegada. Se você fizer isso em loop com um atraso de 5ms, então a maioria dos carrapatos virá exatamente durante este atraso. Assim, o processamento será atrasado em 0 ... 5 ms.
Sim, há lógica nisso. Eu apenas pensei que a função start() em si também gasta tempo em seu loop, e talvez sua iteração roube alguma fração de segundos ou mais (pode requerer o endereçamento a um servidor para obter um grande conjunto de dados de uma só vez), ao contrário de um loop puro. Talvez seja apenas minha imaginação, porque não entendo os mecanismos internos, mas há uma razão pela qual este método foi incluído no tutorial mql4.
 
smart_man:
Obrigado. É que o tutorial oficial do mql4 dá isto como um exemplo, então eu estava interessado. Pensei que talvez de alguma forma funcionasse melhor do que de costume.
Sim, mas o tutorial está um pouco desatualizado. É claro que é melhor do que nada, mas é útil consultar a documentação ao mesmo tempo e verificar se as funções como start() ainda estão nela. Agora é melhor usar o manipulador OnTick() para EAs.
 

Boa tarde!

 
Boa tarde, você pode me dizer o corretor mais conveniente para o par de moedas USD/RUB, spread mínimo e swap mínimo etc. com comissão...?
 
kanybek06:
Olá, você pode me dizer qual é o corretor mais conveniente para o par de moedas USD/RUB?

Como você está apenas começando, você ficará muito feliz com qualquer um. Faça uma pesquisa na Internet e compare-os. Comunique-se com eles, faça perguntas. Você terá uma resposta.

Aqui estamos discutindo questões sobre programação e a plataforma comercial Metatrader.

 

Qual é a melhor maneira de fechar os pedidos do contador, se você precisar fechá-los simultaneamente

1) Cada um individualmente (seja manualmente ou por TP/SL)

ou

2) Em pares com OrderCloseBy (apenas manual)?

Haverá um único spread saving com OrderCloseBy como escrito no tutorial? Os CDs não proíbem um tal fechamento e esta propagação será devolvida? Como podemos verificar isso tecnicamente?

Obrigado.

 
Há uma classe de modelo para trabalhar com uma matriz.
#property strict
#include <ObjectVariables.mqh>
#include <Arrays\varQSort.mqh>
#include <Arrays\objQSort.mqh>

template<typename T1>
class ArrayList
{
   private:
      T1 array[];
      QuickSorts<T1> *qs;
      int size;
      int index;

   public:
      //прочие функции
      void QuickSort();//отсортировать массив
      //прочие функции
};
//+------------------------------------------------------------------+
//| Сортировка массива
template<typename T1>
void ArrayList::QuickSort()
{
   int idx = index;//сохранение положения индекса
   if(IsPointer(array[0])) // true - массив содержит указатели класса
      qs /*ошибка 2*/ = new ObjQSort<T1>();
   else
      qs /*ошибка 2*/ = new VarQSort<T1>();
   qs.Sort(array, 0, index);
   index = idx;
}

Para esta classe de modelo, precisamos implementar a classificação, dado o fato de que uma matriz pode armazenar tipos de dados complexos. Por exemplo:
ArrayList<PP*> *dde; // PP - класс

Você pode escrever diferentes funções para tipos simples e tipos complexos, mas o compilador não entende que as funções são estritamente delimitadas por tipo de dados e continua a jurar:
<' - uso ilegal da operação ArrayList.mqh

Por isso, decidi incorporar a interface:

#property strict
template <typename T1>
interface QuickSorts
{
   void Sort(T1 &array[], int beg, int end);
};
#property strict
#include <Arrays\QuickSorts.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
template <typename T1>
class VarQSort : public /*ошибка 1*/ QuickSorts
{
private:

public:
   void Sort(T1 &array[], int beg, int end);
   VarQSort(){}
   ~VarQSort(){}
};
template <typename T1>
void VarQSort::Sort(T1 &array[], int beg,int end)
{
   //алгоритм функции
}
#property strict
#include <Arrays\QuickSorts.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
template <typename T1>
class ObjQSort : public /*ошибка 1*/ QuickSorts
{
private:

public:
   void Sort(T1 &array[], int beg, int end){}
   ObjQSort(){}
   ~ObjQSort(){}
};

Todas as partes da compilação da construção. Mas se você tentar declará-lo:
ArrayList<PP*> *dde; // PP - класс
então, ao compilar o arquivo, estes são os erros:

QuickSorts' - modelo não compatível varQSort.mqh /*error 1*/
'=' - tipo mismatch ArrayList.mqh /*error 2*/


O que devo corrigir no código para eliminar este tipo de descasamento? Não entendo de modo algum por que isso apareceu.

P.S.
<' - operação ilegal usar varQSort.mqh
também me assombra nesta construção. É precisamente deste erro que eu queria me livrar. Mas eu entendo este erro e não entendo estes dois.
 
виталик:
Olá, por favor, ajude com um pedaço de código para separar um código arrancado de um indicador PivotsDaily v2.mq4 como convertê-lo para uma hora ou meia hora, apenas de uma forma ou de outra, para que haja mudanças mais claras, por favor, ajude, obrigado de antemão.

Você já escreveu em uma única linha. É o suficiente. Não há necessidade de se agrupar em outros.
 
Olá, você poderia me aconselhar, escrevi um EA há 1,5 anos atrás, funcionou, tudo estava bem. Não o utilizei todo este tempo, agora ele não será instalado em um gráfico. Quem sabe qual pode ser a razão? Será que isso se deve a algumas atualizações do MT4?