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

 
Tango_X:

Здравствуйте! разложите конструкцию на операторы if... C= (i>0) ? (A>B) ? 1 : (A<B) ? 2 : C: 0;

читал по справке - но не справился)

if
(i>0)   {    if(A>B)      {       C=1;      }    else      {       if(A<B)         {          C=2;         }       else         {          C=C;         }      }   } else   {    C=0;   }

Artyom Trishkin:

Este parece ser o caso:

SZY. A ajuda não tem nada a ver com isso. Não tem nada a ver com lógica.

Explicar onde está presente a operação C=C

ZS. lógica não funciona por alguma razão)

 
Tango_X:

Explicar onde está presente a operação C=C

ZS. A lógica não funciona por alguma razão)

Conhecendo Artem, não tenho dúvidas de que ele o escreveu correctamente, só quero tentar explicar de uma forma ligeiramente diferente.

C =   // присвоить переменной С значение
(i>0) // если первое условие выполнено
?     // то
(A>B) // если и второе условие выполнено
?     // то С
1     // будет равно 1
:     // иначе, (относится ко второму условию) если второе  условие НЕ выполнено
(A<B) // если третье условие выполнено
?     // то С
2     // будет равно 2
:     // иначе (относится к третьему условию) если третье  условие НЕ выполнено
 C     // то С будет равно предыдущему значению. То-есть изменено не будет
:     // иначе (относится первому условию) если первое условие НЕ выполнено
0     // С будет равно 0
;
 
Alexey Viktorov:

Conhecendo Artyom, não duvido que ele tenha acertado, só quero tentar explicá-lo de uma forma ligeiramente diferente.

Obrigado!

 
Tango_X:

Explicar onde está presente a operação C=C

ZS. lógica não funciona por alguma razão)

Nisto:

C = (i>0) ? (A>B) ? 1 : (A<B) ? 2 : C: 0;
ZOE. Funciona.
 
Artyom Trishkin:

Neste aqui:

ZS. Está a funcionar.

Obrigado!

 

Como faço uma pesquisa numa matriz de objectos?

Eis como pesquiso através do meu conjunto de objectos CArrayObj. A tarefa é encontrar uma instância com um valor devolvido por um dos métodos, igual ao dado (offset). Faço-o com toda a força bruta, que acaba por ser muito longa, devido ao enorme número de elementos na matriz. Como fazê-lo correctamente?

CArrayObj m_bind_shifts;

CBindParams *CCheckRules::GetBindObjectByOffset(int offset)
  {
   for(int i=0;i<m_bind_shifts.Total();i++)
     {
      if(!CheckPointer(m_bind_shifts.At(i)))
         continue;
      CBindParams *value=m_bind_shifts.At(i);
      if(value==NULL)
         continue;
      //Print(__FUNCTION__+": offset from array: ",value.Shift());
      if(value.Shift()==offset)
        {
         return GetPointer(value);
        }
     }
   CBindParams *value=new CBindParams();
   value.GroupID(0);
   return value;
  }

Em C#, isto é fácil:

Encontrar (x=>x.method()==valor)

E nem sequer importa se a lista está ordenada ou não. Mas como fazê-lo aqui? Também ainda não encontrei nenhum método pronto na CList.

 
Juer:

Como pesquisar através de um conjunto de objectos?

Eis como pesquiso a minha gama de objectos CArrayObj. A tarefa é encontrar uma instância com valor devolvido por um dos métodos, igual ao dado (offset). Estou a fazer isto com uma pesquisa completa, que se revela muito longa, devido ao enorme número de elementos na matriz. O que devo fazer correctamente?

Em C# isto é feito de forma simples:

Encontrar (x=>x.método()==valor)

E nem sequer importa se a lista está ordenada ou não. Como fazê-lo aqui? Também ainda não encontrei nenhum método pronto na CList.

compensação que tenho aqui é única. Será que o CHashMap me ajudaria? Mas é tão complicado... :(

Mas ainda não está claro. O meu objecto tem uma série de métodos. Como é que consigo um ponteiro para o objecto?

 
Juer:

A compensação que tenho aqui é única. O CHashMap irá provavelmente ajudar-me? Mas é complicado... :(

Mas ainda não está claro. O meu objecto tem muitos métodos. Como posso obter um ponteiro para um objecto?

https://www.mql5.com/ru/articles/1334#summary Penso que é tudo.
Рецепты MQL5 - Реализуем ассоциативный массив или словарь для быстрого доступа к данным
Рецепты MQL5 - Реализуем ассоциативный массив или словарь для быстрого доступа к данным
  • www.mql5.com
Эта статья описывает удобный класс для хранения информации - ассоциативный массив или словарь. Благодаря этому классу можно получать доступ к информации по ее ключу. Ассоциативный массив напоминает обычный массив, однако вместо индекса он использует некий уникальный ключ, например, перечисление ENUM_TIMEFRAMES или какой-либо текст. Что...
 
Juer:

... A tarefa consiste em encontrar uma instância com um valor devolvido por um dos métodos igual ao dado (offset). Faço-o com força bruta, o que leva muito tempo, devido ao enorme número de elementos na matriz. ...

É fácil de o fazer em C#:

Encontrar (x=>x.método()==valor)

E nem sequer importa se a lista está ordenada ou não.

E em C#, será que esta expressão lambda, com a ajuda de alguma magia, funciona de forma simples?

Se método() devolver o mesmo valor - pesquisar através do dicionário. Se o valor for diferente de cada vez - apenas uma pesquisa completa de cada vez.

 
Vasiliy Sokolov:

E em C#, será que esta expressão lambda, com a ajuda de alguma magia, funciona de forma simples?

Se método() devolver o mesmo valor - pesquisar através do dicionário. Se o valor for diferente de cada vez - apenas uma pesquisa completa de cada vez.

Bem, sim, existe um Linq. Valores idênticos. Sim, estou a apanhar um acidente com uma das minhas máquinas. O código é o mesmo em todo o lado.

Ao adicionar m_dict.AddObject(str_array[0],field);

GN      2       18:25:19.855    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00   Access violation at 0x00007FF7EA6B79CF read to 0x000001EA0000006E
IO      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7940 48895 C2408        mov        [rsp+0x8], rbx
JN      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7945 57                push       rdi
FQ      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7946 4883 EC20          sub        rsp, 0x20
MK      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B794A 488 B4108          mov        rax, [rcx+0x8]
NG      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B794E 33 DB              xor        ebx, ebx
NF      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7950 488 BF9            mov        rdi, rcx
FF      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7953 4885 C0            test       rax, rax
OM      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7956 740 E              jz         0x7ff7ea6b7966
LS      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00   
LF      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7958 48395808          cmp        [rax+0x8], rbx
GK      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B795C 7568              jnz        0x7ff7ea6b79c6
MQ      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00   
FK      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B795E 488 B00            mov        rax, [rax]
LF      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7961 4885 C0            test       rax, rax
MG      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7964 75 F2              jnz        0x7ff7ea6b7958
OQ      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00   
EH      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7966 488 D15932A1800    lea        rdx, [rip+0x182a93]
HE      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B796D B918000400        mov        ecx, 0x40018
HK      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7972 E8919CE8FF        call       0x7ff7ea541608  ; #12238 (metatester64.exe)
DQ      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7977 4885 C0            test       rax, rax
RM      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B797A 750 B              jnz        0x7ff7ea6b7987
QE      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00   
ML      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B797C 488 B5C2430        mov        rbx, [rsp+0x30]
NO      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7981 4883 C420          add        rsp, 0x20
OR      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7985 5 F                pop        rdi
OD      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7986 C3                ret        
GH      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00   
OR      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7987 895810            mov        [rax+0x10], ebx
KN      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B798A 4 C8D4014          lea        r8, [rax+0x14]
GJ      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B798E 488 B4F08          mov        rcx, [rdi+0x8]
KF      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7992 8 BD3              mov        edx, ebx
FD      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7994 488908            mov        [rax], rcx
NK      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B7997 48894708          mov        [rdi+0x8], rax
IO      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B799B 0 F1F440000        nop        [rax+rax+0x0]
DQ      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79A0 498918            mov        [r8], rbx
DO      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79A3 4 D8D8000010000    lea        r8, [r8+0x100]
QO      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79AA 4863 CA            movsxd     rcx, edx
IF      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79AD 488 D5814          lea        rbx, [rax+0x14]
KJ      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79B1 48 C1E108          shl        rcx, 0x8
KF      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79B5 FFC2              inc        edx
EH      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79B7 4803 D9            add        rbx, rcx
KS      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79BA 81 FA00040000      cmp        edx, 0x400
IM      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79C0 72 DE              jb         0x7ff7ea6b79a0
RM      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00   
PE      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79C2 48895808          mov        [rax+0x8], rbx
GL      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79C6 488 B5008          mov        rdx, [rax+0x8]
OS      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79CA 488 B5C2430        mov        rbx, [rsp+0x30]
KS      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00      crash -->  00007 FF7EA6B79CF 488 B0A            mov        rcx, [rdx]
CL      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79D2 48894808          mov        [rax+0x8], rcx
JJ      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79D6 488902            mov        [rdx], rax
ND      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79D9 FF4010            inc        dword [rax+0x10]
JK      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79DC 488 D4208          lea        rax, [rdx+0x8]
QQ      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79E0 4883 C420          add        rsp, 0x20
LL      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00                 00007 FF7EA6B79E4 5 F                pop        rdi
MR      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00   
CK      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00   00: 0x00007FF7EA6B79CF
FH      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00   01: 0x000001EA99EB0478
KL      2       18:25:19.862    CandleTypeStrategy (GBPUSD,M30) 2016.01.01 00:00:00   02: 0x0000000000000001