Logik lernen - Seite 13

 
xrust:

immer die Logik einer solchen Konstruktion in zyklischen Operanden getötet:

Mich haben verschachtelte if's schon immer gestört - warum eine solche Verschachtelung in einem leeren Raum?

völlig unverständlich ...

Wenn Sie das nicht verstehen, kann ich das nur nachempfinden.

Wenn Sie mich fragen, ist die Standardlogik klarer und verständlicher:

Ihre Logik ist nicht Standard. Das ist falsch.
 
xrust:

Ich finde es viel logischer, Klammern entweder in eine Zeile oder in eine Spalte zu setzen. Es ist sehr schwierig, Code zu verstehen, bei dem nicht klar ist, wo ein Block beginnt oder endet. Nun, wenn der Zweck einer solchen Formatierung darin besteht, den Sinn des Codes vor Feinden zu verbergen, dann ist das Ziel erreicht.
 
TheXpert:
Mich haben verschachtelte if's schon immer gestört - warum sollte man solche Verschachtelungen an der Quelle vornehmen?

Wenn das nicht klar ist, kann ich das nur verstehen.

Ihre Logik ist nicht Standard. Das ist falsch.

Korrektur, es ist nur eine Phrase, die heraussticht :-)

--

Eine unkonventionelle Logik bedeutet nicht, dass sie falsch ist.

--

wenn der Weg der Nicht-Standard-Logik kürzer ist als der der Standard-Logik -- bei gleichen Eingangs- und Ausgangsbedingungen --

dann zum Teufel mit den Normen!

Dann bin ich für eine nicht standardisierte Logik.

--

ja, der Crunch-Code ist schwer zu lesen...

... obwohl ich sehr kurzen und schwer lesbaren Code gesehen habe ...

für die Wartung - die Replikation dieses Codes ist nicht ideal.

Wenn Sie es für den Umlauf schreiben, kümmern Sie sich normalerweise um Ihre Mitarbeiter, um es zu erhalten.

wenn Sie Code mit der Erwartung schreiben, dass jemand ihn kaputt macht!

Im Idealfall ist es LOGISCH, sich die Mühe zu machen - man schreibt zwar korrekt, aber macht einen Code, der nicht lesbar ist.

 
drknn:

Ich verstehe nicht, wo die Panne ist? Und warum die zweite? Wenn es der zweite ist, wo ist dann der erste?

Der Code, der gescholten wurde, ist wirklich nicht super, er ist perfekt, um zu verwirren!

 

2 Vinin . Victor, warum rufen Sie die Auftragsauswahlfunktion immer wieder auf? Es ist einfacher, alle Variablen in einer Schleife einzugeben.

 

Ich denke, das ist ziemlich gut:

int time;
int FindLastOpenTime(int type, int imagic)
{
  
  for(int i = OrdersTotal() -1 ;i>=0;i--)
  {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        if(OrderSymbol()==Symbol() && OrderType()==type && OrderMagicNumber()==magic && OrderOpenTime()>time)
                 {     
                    time=OrderOpenTime();
                 }
  }
  return(time);
}  
 

In MQL verhalten sich die Operatoren && und || anders als in C++, daher ist es sinnvoll, die Bedingungen zu trennen.

FION:

2 Vinin - Victor, warum rufen Sie die Funktion zur Auswahl der Bestellung immer wieder auf? Es ist einfacher, alle Variablen in einer Schleife zu füllen.

Das ist jedem selbst überlassen.
 
TheXpert:

...Es kommt darauf an.


Das ist klar. Welchen Sinn hat die Code-Optimierung überhaupt? Bei der Reduzierung der Anzahl der Zeilen? Ich sehe den einzigen Sinn darin, die Geschwindigkeit des Codes zu erhöhen, was z.B. durch die Verringerung der Anzahl von Aufrufen zyklischer Funktionen erreicht werden kann. Oder durch Ausschluss von Wiederholungen der Indikatorberechnung. Ungefähr so.
 
FION:

Ich sehe nur den Sinn darin, die Geschwindigkeit des Codes zu erhöhen

Im Großen und Ganzen ist die Geschwindigkeit in 90 % der Fälle nicht entscheidend. Es geht darum, den Code zunächst so zu gestalten, dass er so einfach wie möglich zu erstellen und zu lesen ist.

Wenn dann die Zeit entscheidend ist, optimieren wir die Geschwindigkeit.

 

Übertragung von hier nach dort

int AnaliseFunc (string sy, int tf)
{
   
   CurAsk   =MarketInfo(Symbol(),MODE_ASK);
   CurBid   =MarketInfo(Symbol(),MODE_BID);
   OpnPrice =iOpen(NULL,PERIOD_M5,0);
   OpnPrice1=iOpen(NULL,PERIOD_M5,1);
   ClsPrice1=iClose(NULL,PERIOD_M5,1);
         
   if (sy=="" || sy=="0") sy=Symbol();
double
   BB_1  =iCustom(sy,tf,"BB_MA",13,1,1,1),
   BB_2  =iCustom(sy,tf,"BB_MA",13,1,1,2),
   BB_3  =iCustom(sy,tf,"BB_MA",13,1,1,3),
   AO1   =iAO(sy,tf,1),
   AO2   =iAO(sy,tf,2),
   AO3   =iAO(sy,tf,3),
   AC1   =NormalizeDouble(iAC(sy,tf,1),8)*1000,
   AC2   =NormalizeDouble(iAC(sy,tf,2),8)*1000,
   AC3   =NormalizeDouble(iAC(sy,tf,3),8)*1000,
   AC4   =NormalizeDouble(iAC(sy,tf,4),8)*1000,
   AC5   =NormalizeDouble(iAC(sy,tf,5),8)*1000,
   SpMan1=iCustom(sy,tf,"SpearmanRankCorr",14,1000,30,true,0,1),
   SpMan2=iCustom(sy,tf,"SpearmanRankCorr",14,1000,30,true,0,2),
   DeM_1 =iDeMarker(sy,tf,14,1),
   DeM_2 =iDeMarker(sy,tf,14,2),
   Mom_1 =iMomentum(sy,tf,14,PRICE_CLOSE,1),
   Mom_2 =iMomentum(sy,tf,14,PRICE_CLOSE,2),
   Mom_3 =iMomentum(sy,tf,14,PRICE_CLOSE,3);
   
//---------------- Проверка на разворот BB_MA -------------------------------------------------------   
   
   if (BB_1>BB_2 && BB_2<=BB_3 && BB_1<0)                               // Найден разворот BB вверх
      {
      switch (tf)
         {
            case 1:     TrBBTurnUP_M1 =true;  TrBBTurnDN_M1=false;      // Флаг разворота вверх на М1
            case 5:     TrBBTurnUP_M5 =true;  TrBBTurnDN_M5=false;      // Флаг разворота вверх на М5
            case 15:    TrBBTurnUP_M15=true;  TrBBTurnDN_M15=false;     // Флаг разворота вверх на М15 
            case 30:    TrBBTurnUP_M30=true;  TrBBTurnDN_M30=false;     // Флаг разворота вверх на М30 
            case 60:    TrBBTurnUP_H1 =true;  TrBBTurnDN_H1=false;      // Флаг разворота вверх на H1
            case 240:   TrBBTurnUP_H4 =true;  TrBBTurnDN_H4=false;      // Флаг разворота вверх на H4
            case 1440:  TrBBTurnUP_D1 =true;  TrBBTurnDN_D1=false;      // Флаг разворота вверх на D1
            case 10080: TrBBTurnUP_W1 =true;  TrBBTurnDN_W1=false;      // Флаг разворота вверх на W1
            case 43200: TrBBTurnUP_MN =true;  TrBBTurnDN_MN=false;      // Флаг разворота вверх на MN
         }
      }
   if (BB_1<BB_2 && BB_2>=BB_3 && BB_1>0)                               // Найден разворот BB вниз
      {
      switch (tf)
         {
            case 1:     TrBBTurnUP_M1 =false;  TrBBTurnDN_M1=true;      // Флаг разворота вниз на М1
            case 5:     TrBBTurnUP_M5 =false;  TrBBTurnDN_M5=true;      // Флаг разворота вниз на М5
            case 15:    TrBBTurnUP_M15=false;  TrBBTurnDN_M15=true;     // Флаг разворота вниз на М15 
            case 30:    TrBBTurnUP_M30=false;  TrBBTurnDN_M30=true;     // Флаг разворота вниз на М30 
            case 60:    TrBBTurnUP_H1 =false;  TrBBTurnDN_H1=true;      // Флаг разворота вниз на H1
            case 240:   TrBBTurnUP_H4 =false;  TrBBTurnDN_H4=true;      // Флаг разворота вниз на H4
            case 1440:  TrBBTurnUP_D1 =false;  TrBBTurnDN_D1=true;      // Флаг разворота вниз на D1
            case 10080: TrBBTurnUP_W1 =false;  TrBBTurnDN_W1=true;      // Флаг разворота вниз на W1
            case 43200: TrBBTurnUP_MN =false;  TrBBTurnDN_MN=true;      // Флаг разворота вниз на MN
         }
      }
//---------------------- Проверка на разворот Momentum -----------------------------------------------
   
   if (Mom_1>Mom_2 && Mom_2<=Mom_3 && Mom_1<100.0)
      {
      switch (tf)
         {
            case 1:     TrMomTurnUP_M1 =true;  TrMomTurnDN_M1=false;      // Флаг разворота вверх на М1
            case 5:     TrMomTurnUP_M5 =true;  TrMomTurnDN_M5=false;      // Флаг разворота вверх на М5
            case 15:    TrMomTurnUP_M15=true;  TrMomTurnDN_M15=false;     // Флаг разворота вверх на М15 
            case 30:    TrMomTurnUP_M30=true;  TrMomTurnDN_M30=false;     // Флаг разворота вверх на М30 
            case 60:    TrMomTurnUP_H1 =true;  TrMomTurnDN_H1=false;      // Флаг разворота вверх на H1
            case 240:   TrMomTurnUP_H4 =true;  TrMomTurnDN_H4=false;      // Флаг разворота вверх на H4
            case 1440:  TrMomTurnUP_D1 =true;  TrMomTurnDN_D1=false;      // Флаг разворота вверх на D1
            case 10080: TrMomTurnUP_W1 =true;  TrMomTurnDN_W1=false;      // Флаг разворота вверх на W1
            case 43200: TrMomTurnUP_MN =true;  TrMomTurnDN_MN=false;      // Флаг разворота вверх на MN
         }
      }
      
   if (Mom_1<Mom_2 && Mom_2>=Mom_3 && Mom_1>100.0)
      {
      switch (tf)
         {
            case 1:     TrMomTurnUP_M1 =false;  TrMomTurnDN_M1=true;      // Флаг разворота вверх на М1
            case 5:     TrMomTurnUP_M5 =false;  TrMomTurnDN_M5=true;      // Флаг разворота вверх на М5
            case 15:    TrMomTurnUP_M15=false;  TrMomTurnDN_M15=true;     // Флаг разворота вверх на М15 
            case 30:    TrMomTurnUP_M30=false;  TrMomTurnDN_M30=true;     // Флаг разворота вверх на М30 
            case 60:    TrMomTurnUP_H1 =false;  TrMomTurnDN_H1=true;      // Флаг разворота вверх на H1
            case 240:   TrMomTurnUP_H4 =false;  TrMomTurnDN_H4=true;      // Флаг разворота вверх на H4
            case 1440:  TrMomTurnUP_D1 =false;  TrMomTurnDN_D1=true;      // Флаг разворота вверх на D1
            case 10080: TrMomTurnUP_W1 =false;  TrMomTurnDN_W1=true;      // Флаг разворота вверх на W1
            case 43200: TrMomTurnUP_MN =false;  TrMomTurnDN_MN=true;      // Флаг разворота вверх на MN
         }
      }