Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 855

 
Boa tarde a todos. Eu não sou um programador muito bom, portanto não entendo algumas coisas simples. Tenho este problema: tenho que escolher entre as ordens fechadas em minha EA a última fechada pelo SL.
 
Igor Makanu:

não se pode complicar tarefas simples! ... disse Me, que embrulhou ociosamente a nova função de definição de barras em uma classe ))))

ao ponto:


a idéia é clara, mas é mais correta >= com toda a probabilidade

if((timer1++)>=Timer1) { timer1 = 0; Print("Timer №1"); }
if((timer2++)>=Timer2) { timer2 = 0; Print("Timer №2"); }
 
leonerd:

a idéia é clara, apenas mais correta >= com toda a probabilidade

não verificou, desimprima imediatamente as variáveis para ver se por 1 erro, então ou sua versão, ou não zerou, e atribua valores =1 aos contadores timer1 e timer2

como opção, você também pode tentar dessa forma:


if((++timer1)>=Timer1) { timer1 = 0; Print("Timer №1"); }
if((++timer2)>=Timer2) { timer2 = 0; Print("Timer №2"); }
 
Igor Makanu:

não verificou, desfaça imediatamente as variáveis para ver se por 1 erro, então ou sua versão ou não zerar, e atribua valores =1 aos contadores timer1 e timer2

Entretanto, o método certamente não garante uma determinada periodicidade. A execução do código em um timer pode exceder o tempo do outro timer.

 
leonerd:

Entretanto, o método certamente não garante uma determinada periodicidade. A execução do código em um timer pode exceder o tempo de outro timer.

Onde você pode obter um temporizador em tempo real garantido nos sistemas Windows? - Se o sistema estiver sobrecarregado, haverá atrasos.

em MQL - se você sobrecarregou o OnTick() com cálculos complexos, então até que seja executado o evento OnTimer() não acontecerá.

ou seja, mesmo o MT4 é suficiente para cálculos complexos, se não então o MT5 - realmente funciona no nível de C++, mas a falta de desempenho geralmente está relacionada a um algoritmo de cálculo ruim - use o profiler, não faça cálculos a cada tick onde não há nada para calcular até que uma nova barra apareça, não calcule todo o histórico, se você usar sinais nas últimas 1 a 3 barras - calcule apenas 100 barras ... há muitas variantes

HH: trabalhar com objetos gráficos retarda tudo, trabalhar com cordas também reduz o desempenho - em teoria, mas ultimamente não tenho notado que, como trabalhar com funções de conversão de tempo - é definitivamente visível no profiler, onde muito tempo é gasto - tentamos usar este fragmento de código com menos freqüência

Профилирование кода - Разработка программ - MetaTrader 5
Профилирование кода - Разработка программ - MetaTrader 5
  • www.metatrader5.com
Профилирование — это сбор характеристик программы во время ее выполнения. При профилировании замеряется время выполнения и количество вызовов отдельных функций и строк в коде программы. При помощи этого инструмента программист может найти наиболее медленные участки кода и провести их оптимизацию. Профилирование можно проводить на обычном...
 
Igor Makanu:

e onde você pode ter a garantia de obter um temporizador em tempo real nos sistemas Windows? - se o sistema estiver sobrecarregado, haverá atrasos

o mesmo em MQL - se você tiver carregado cálculos complexos com OnTick(), então até que seja executado o evento OnTimer() não acontecerá.

ou seja, mesmo o MT4 é suficiente para cálculos complexos, se não então o MT5 - realmente funciona no nível de C++, mas a falta de desempenho está geralmente relacionada a um algoritmo de cálculo ruim - use o profiler, não faça cálculos a cada tick onde não há nada para calcular até que uma nova barra apareça, não calcule todo o histórico, se você usar sinais nas últimas 1 a 3 barras - calcule apenas 100 barras ... há muitas variantes

HH: trabalhar com objetos gráficos retarda tudo, trabalhar com cordas também reduz o desempenho - em teoria, mas ultimamente eu não tenho notado que, como trabalhar com funções de conversão de tempo também é uma dor - claramente tudo no profiler é visível, onde muito tempo é gasto - nós tentamos usar esta parte do código com menos freqüência

De acordo, o temporizador padrão também não garante nada. Bem, obrigado, vamos tentar.

 

Boa tarde, caros amigos!

Você pode me dizer se é possível no MKL4 definira abertura de uma posição para um símbolo no momento da abertura de uma posição para outro símbolo? Talvez tal questão já discutida, então me dê um link.

Obrigado.

 
novichok2018:

Boa tarde, caros amigos!

Você pode me dizer se é possível no MKL4 definira abertura de uma posição para um símbolo no momento da abertura de uma posição para outro símbolo? Talvez tal questão já discutida, então me dê um link.

Obrigado.

A questão não está totalmente formulada.
Mas em geral - você pode. Mas não simultaneamente, mas seqüencialmente em um dos dois casos.
 
Artyom Trishkin:
A questão não está totalmente formulada.
Mas em geral, você pode. Mas não ao mesmo tempo, mas consecutivamente em ambos os casos.

Isso é ótimo. Como descrever isso no código? Por exemplo, se as condições estiverem corretas e eu abrir uma posição Buy em GBP às 9:00, eu abro uma posição Buy em EUR também (às 9:00).

 
novichok2018:

Ótimo. Como descrever isso no código? Por exemplo, se as condições se desenvolveram às 9:00 e uma COMPRA sobre a libra é aberta, então uma COMPRA sobre o euro também é aberta (às 9:00).

Aberto como? Qual é o motivo da abertura?