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

 
Ei! Pessoal, me ajudem! Não consigo pensar em uma função. O Conselheiro Especialista abre uma posição por dia (entre 00:00 e 23:59), ou seja, um dia, um pedido. A tarefa é encontrar a série de perdas contínuas e exibi-la no registro (usando o comando Print(), para imprimir uma vez). O número de elementos da série é inserido pelo teclado (por exemplo, se você inseriu 5 do teclado e a série tem 4 dias perdidos, então nós o ignoramos --> esperar pela ocorrência de 5 ou mais dias). Uma série é considerada se os dias perdidos forem consecutivos ou as ordens forem fechadas em um dia (elas são abertas uma vez por dia, e as ordens do mercado podem "pendurar" mais de um dia). Por exemplo, no registro deve haver as seguintes séries de perdas: 01.05, 02.05, 03.05, 04.05, 05.05, 05.05. Condição importante: reconhecer as séries (e, conseqüentemente, enviá-las para o log), que é maior ou igual ao valor inserido a partir do teclado (externo).
//
Pessoalmente, tenho a seguinte idéia:
1. A Fiya preenche o conjunto de ordens perdidas com seus valores de fechamento ( Mass[i] = OrderCloseTime();). Ou seja, a matriz armazena apenas as datas e horários de fechamento dos pedidos perdidos
2. Começamos a comparar o elemento na posição i e na posição i-1 (2 adjacentes)
2.1 Comparamo-los convertendo os dados da célula para o dia do ano ( TimeDayOfYear(Mass[i]) e TimeDayOfYear(Mass[i-1])
2.(Suponha que o primeiro dia perdido = 178, e o anterior = 176 --> nenhuma série, porque não são consecutivos, respectivamente se o primeiro = 178, e o segundo 177 --> temos uma série)
2.3 Com o loop for olhamos todas as células da matriz e comparamos seus vizinhos. Se houver uma série de perdas emelementosvizinhos da matriz--> comecemos a comprimir até 1.000 dias de perdamínimos para considerá-la como uma série. 2. (se o ponto 1 for cumprido) ANTES da parada da série.
2.4 A SÉRIE PARA --> lembrar o índice do elemento da matriz onde terminou e lembrar o número de elementos da série (a série pode ser == OU maior do que o valor inserido pelo teclado)
3.

em nenhum lugar começa o problema da realização---
3.1 Devemos "recuar" de alguma forma através de séries de dias perdidos, conhecendo a data de cada elemento, traduzir data a partir da data --> string,
3.11 preencher string ( Não sei, talvez através de StringAdd()?), e enviá-la para o arquivo LOG (não milhões de vezes, apenas uma) Algoritmo de Expert Advisor não é importante, importante é a própria função do usuário

Por amor de Deus, socorro!))
Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива...
Arquivos anexados:
 
Olá. Assinado para o sinal. Mas após alguns dias, a porcentagem de aumento total de algumas centenas passou a ser de apenas 58%. Porcentagens dos meses anteriores perderam sua cor azul e ficaram cinzas. Por que isso está acontecendo? Qual poderia ser a razão?
Arquivos anexados:
 
Maestro8:
Olá. Assinado para o sinal. Mas após alguns dias, a porcentagem de aumento total de algumas centenas foi de apenas 58%. Porcentagens dos meses anteriores perderam sua cor azul e ficaram cinzas. Por que isso está acontecendo? Qual poderia ser a razão?

Você se inscreveu para mais um divisor de depósito. Você vê a linha vertical na tabela à esquerda da 76ª ofício? Esta linha mostra o momento em que você se conectou ao monitoramento. Antes da conexão com o monitoramento, esta conta foi "retirada" de várias dezenas de outras contas que não têm uma imagem tão bonita (elas foram drenadas com segurança). O depósito com belos indicadores está ligado ao monitoramento e recebe dinheiro de recém-chegados que gostam de belas fotos. Portanto, não acredite nos indicadores que foram obtidos antes de se juntar ao monitoramento.

 

Uma cópia de uma instância da classe.

Se eu fizer esta tarefa:

Cl1 = Cl2;

então, quando eu posteriormente mudo Cl1, então Cl2 também muda.

Portanto, obviamente, a tarefa é apenas uma referência.

Mas preciso salvar uma instância de uma classe que armazenaria todas as propriedades que lhe foram dadas no momento da atribuição.

Como fazer isso?

 
Evgeny Potapov:

Uma cópia de uma instância da classe.

Se eu fizer esta tarefa:

então, quando eu posteriormente mudo Cl1, então Cl2 também muda.

Portanto, obviamente, a tarefa é apenas uma referência.

Mas preciso manter uma instância de uma classe que armazenaria todas as propriedades que lhe foram dadas no momento da atribuição.

Como fazer isso?

Você provavelmente o faz:

CClass* cl1=new CClass;
CClass* cl2=cl1;

e você precisa disto.

CClass cl1;
CClass* _cl1=new CClass;
CClass cl2=cl1;
CClass _cl2=_cl1;
CClass* cl3=new CClass(cl1);
CClass* cl4=new CClass(_cl1);

Você precisa de um construtor de cópias:

class CClass{
public:
   CClass(){}
   CClass(CClass &mOther){this=mOther;}
};
 
Vladimir Simakov:

Você precisa de um copy builder:

Obrigado!

Vou tentar, mas não está claro como funciona.

Se passar a referência da cópia para a classe copiada, que diferença isso faz?

Será que ambos estarão se referindo um ao outro novamente?

 
Evgeny Potapov:

Obrigado!

Vou tentar, mas não está claro como funciona.

Se passar a cópia uma referência à classe copiada, que diferença isso faz?

Será que ambos estarão se referindo um ao outro novamente?

Não, não vão. Este é um novo objeto. E no construtor você simplesmente preenche os campos. Há sutilezas lá também, então mastigue) Não há nada sobre isso na ajuda local (embora eu possa estar errado), então leia como tudo isso é feito em C++ e faça correções para as realidades locais. Boa sorte)

 
Vladimir Simakov:

Eles não o farão. Este é um novo objeto. E na construtora você apenas preenche os campos. Também há sutilezas lá, então mastigue) Não há nada sobre isso na ajuda local (embora eu possa estar errado), então leia como o c++ faz tudo e faça ajustes para as realidades locais. Boa sorte)

Sim, é assim que funciona.

Obrigado!

Seria interessante saber dos autores como funciona:

{this=mOther;}

Por que existe uma transferência por valor quando se espera que uma referência seja transferida?

Felizmente, tal construção de cópias é possível!

 

Boa tarde!

Você pode me dizer por que no meu MT4 eu não consigo tirar e parar a perda com meu mouse do ponto de entrada da posição?

Talvez eu precise ajustar algo, mas não entendo o que é, por favor me ajude

 
from_Reva:

Boa tarde!

Você pode me dizer por que no meu MT4 eu não consigo tirar e parar a perda com meu mouse do ponto de entrada da posição?

Talvez eu precise configurar algo, mas eu não entendo o que é, por favor me ajude

Tente segurar "Alt" em seu teclado e arraste

Razão: