Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 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:

Dies scheint der Fall zu sein:

SZY: Hilfe hat damit nichts zu tun. Das hat nichts mit Logik zu tun.

Erklären Sie, wo die Operation C=C vorkommt

ZS. Logik funktioniert aus irgendeinem Grund nicht)

 
Tango_X:

Erklären Sie, wo die Operation C=C vorkommt

ZS (Die Logik funktioniert aus irgendeinem Grund nicht)

So wie ich Artem kenne, habe ich keinen Zweifel daran, dass er es richtig geschrieben hat, ich möchte nur versuchen, es auf eine etwas andere Weise zu erklären.

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

Wie ich Artyom kenne, zweifle ich nicht daran, dass er Recht hat, ich möchte nur versuchen, es auf eine etwas andere Art zu erklären.

Ich danke Ihnen!

 
Tango_X:

Erklären Sie , wo die Operation C=C vorkommt

ZS. Logik funktioniert aus irgendeinem Grund nicht)

In diesem:

C = (i>0) ? (A>B) ? 1 : (A<B) ? 2 : C: 0;
ZS. Es funktioniert.
 
Artyom Trishkin:

In diesem Fall:

ZS. Es funktioniert.

Ich danke Ihnen!

 

Wie kann ich in einem Objekt-Array suchen?

Hier ist, wie ich durch mein Objekt Array CArrayObj suchen. Die Aufgabe besteht darin, eine Instanz zu finden, deren von einer der Methoden zurückgegebener Wert gleich dem angegebenen Wert (Offset) ist. Ich tue es mit voller roher Gewalt, was sich als sehr langwierig erweist, da die Anzahl der Elemente im Array sehr groß ist. Wie macht man es richtig?

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;
  }

In C# ist dies einfach:

Find (x=>x.method()==value)

Und es spielt nicht einmal eine Rolle, ob die Liste sortiert ist oder nicht. Aber wie kann man das hier tun? Ich habe auch keine fertigen Methoden in CList gefunden.

 
Juer:

Wie durchsucht man ein Array von Objekten?

Hier ist, wie ich mein Array von CArrayObj-Objekten suchen. Die Aufgabe besteht darin, eine Instanz zu finden, deren von einer der Methoden zurückgegebener Wert mit dem angegebenen Wert (Offset) übereinstimmt. Ich tue dies mit der vollständigen Suche, die wegen der großen Anzahl von Elementen im Array sehr lang ist. Was muss ich richtig machen?

In C# ist dies einfach zu bewerkstelligen:

Finde (x=>x.methode()==wert)

Dabei spielt es nicht einmal eine Rolle, ob die Liste sortiert ist oder nicht. Wie geht das hier? Ich habe auch keine fertigen Methoden in CList gefunden.

Der Ausgleich, den ich hier habe, ist einzigartig. Würde mir CHashMap helfen? Aber es ist so kompliziert... :(

Aber es ist immer noch nicht klar. Mein Objekt hat eine Reihe von Methoden. Wie erhalte ich einen Zeiger auf das Objekt?

 
Juer:

Das Offset, das ich hier habe, ist einzigartig. CHashMap wird mir wahrscheinlich helfen? Aber es ist kompliziert... :(

Aber es ist immer noch nicht klar. Mein Objekt hat eine Vielzahl von Methoden. Wie kann ich einen Zeiger auf ein Objekt erhalten?

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

... Die Aufgabe besteht darin, eine Instanz zu finden, deren von einer der Methoden zurückgegebener Wert gleich dem angegebenen Wert (Offset) ist. Ich tue es mit voller roher Gewalt, die eine sehr lange Zeit dauert, aufgrund der großen Anzahl von Elementen in dem Array. ...

In C# ist dies leicht zu bewerkstelligen:

Finde (x=>x.methode()==wert)

Und es spielt nicht einmal eine Rolle, ob die Liste sortiert ist oder nicht. ...

Und in C# funktioniert dieser Lambda-Ausdruck mit Hilfe von etwas Magie ganz einfach?

Wenn method() denselben Wert zurückgibt - das Wörterbuch durchsuchen. Wenn der Wert jedes Mal anders ist - nur jedes Mal eine vollständige Suche.

 
Vasiliy Sokolov:

Und in C# funktioniert dieser Lambda-Ausdruck mit Hilfe von etwas Magie ganz einfach?

Wenn method() denselben Wert zurückgibt - das Wörterbuch durchsuchen. Wenn der Wert jedes Mal anders ist - nur jedes Mal eine vollständige Suche.

Nun, ja, es gibt ein Linq. Identische Werte. Ja, ich erlebe einen Absturz auf einem meiner Rechner. Der Code ist überall gleich.

Beim Hinzufügen 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
Grund der Beschwerde: