[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 680

 
boris.45:
Wie kann ich mit Ihnen Kontakt aufnehmen? Ich habe eine Menge Fragen und würde gerne einen Ratschlag erhalten.
Wenn Sie jemandem eine Frage stellen, klicken Sie auf "Antworten" in der unteren rechten Ecke des Beitrags der Person, an die Sie sich wenden. Andernfalls werden sich die Leute fragen, an wen Ihre Frage gerichtet ist... :)
 
Können Sie mir sagen, ob es möglich ist, vom Skript aus einen Trennungsbefehl an den EA zu senden?
 
granit77:
Ich würde einen Schalter durch ein vorgefertigtes Array ersetzen, warum jedes Mal vordefinierte Werte zuweisen?

Danke, aber könnten Sie etwas genauer sein? Weil die vordefinierten Werte hier Zeitrahmen sind, aber der Code nach den Fällen für verschiedene Indikatoren unterschiedlich sein wird... Wahrscheinlich ist es einfacher, ein wenig mehr Code zu schreiben... :) Im Allgemeinen bin ich heute sehr langsam - ich konnte letzte Nacht nicht schlafen und bin immer noch in der Schwebe...

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
         }
      }
//---------------------- Проверка DeMarker на перепроданность/перекупленность ---------
Sehen Sie - es läuft ein absolut identischer Code ab, aber er prüft bereits die Handelskriterien anderer Indikatoren... Ich möchte nur alle Überprüfungen aller Indizes, die im EA verwendet werden, in einen analytischen Block packen, so dass es ihre Werte einmal pro Tick berechnen würde, sie in Variablen setzen und dann Werte der Variablen für Handelsentscheidungen verwenden. Ich weiß nicht, wie ich es mit einem Array vordefinierter Werte anordnen kann...
 
artmedia70:

Danke, aber könnten Sie etwas genauer sein? Weil die vordefinierten Werte hier Zeitrahmen sind, aber der Code nach den Fällen für verschiedene Indikatoren unterschiedlich sein wird... Wahrscheinlich ist es einfacher, ein wenig mehr Code zu schreiben... :) Ich kann heute nicht klar denken - ich konnte letzte Nacht nicht schlafen und bin immer noch in der Schwebe...

Sehen Sie - dort gibt es einen absolut identischen Code, aber er prüft bereits Handelskriterien anderer Indikatoren... Ich möchte einfach alle Prüfungen aller Indizes, die im EA verwendet werden, in einen analytischen Block packen, und dann wird er ihre Werte einmal pro Tick berechnen, sie in Variablen setzen und die Werte der Variablen für Handelsentscheidungen verwenden. Ich weiß nicht, wie ich es mit einem Array vordefinierter Werte anordnen kann...




Vielleicht müssen Sie nur eine Berechnungspriorität auswählen, d.h. es sieht so aus, als hätten Sie

Wenn (BB_1<0 ) die erste obligatorische Bedingung ist, nach der es nicht notwendig ist, andere BB_ zu berechnen, dann machen Sie ein zusammengesetztes if und führen Sie die notwendigen BB_-Berechnungen im zweiten if durch, vorausgesetzt, das erste if wurde durchgeführt, und if ... else ist ziemlich effektiv, während Sie nur if haben

Ich stimme zu, der Code kann größer und weniger lesbar werden, aber die Leistung wird steigen

 
IgorM:


vielleicht müssen Sie nur die Priorität der Berechnung erhöhen, d.h.

Wenn (BB_1<0 ) die erste obligatorische Bedingung ist, nach der es nicht notwendig ist, andere BB_ zu berechnen, dann machen Sie eine zusammengesetzte if und führen Sie die notwendigen BB_ Berechnungen in der zweiten if durch, vorausgesetzt die erste if wurde erfüllt, und if . else ist ziemlich effektiv, während Sie nur if haben

Ich stimme zu, dass Ihr Code größer und weniger lesbar werden kann, aber die Leistung wird steigen.

Danke, Igor, ich werde sehen, was passiert. Das ist nicht das, was ich im Sinn hatte... Ich erinnere mich noch an die Anfänge der Computerisierung, 1991-94, ich weiß nicht mehr genau... Ich habe Assembler-Programmierung für den ZX Spectrum gemacht... der furchtbar langsam und auf 64Kb Speicher begrenzt war... Also gab es einen Befehl an den Prozessor, mit dem Bildschirmspeicherbereich zu arbeiten, um schnell 16386Kb in diesen Bereich auszugeben. Der dokumentierte CPU-Befehl war der schnellste von allen und arbeitete mit einem großen Datensatz. Es gibt nicht viel, was wir tun können, aber... Sie haben einen Weg gefunden, die Ausgangsgeschwindigkeit zu vervierfachen. Es gab Befehle für die Arbeit mit dem Stapel und sie wurden viel schneller ausgeführt. So haben sie es gemacht: Sie haben den Stack in einen unbenutzten Speicherbereich direkt nach dem Bildschirm verschoben, diesen Bereich mit grafischen Daten gefüllt und dann, nachdem sie den Stack auf den Bildschirm verschoben hatten, den im Speicher vorbereiteten Bildschirm mit einem Befehl, der den Stack füllte, schnell in den Bildschirmbereich gesprungen... Für die damalige Zeit einfach ein Wunder, aber für Spectrum war es Magie...

Auch hier bin ich an unkonventionellen Arbeitsweisen interessiert... Zum Beispiel, um zu sehen, welche Befehle in wie vielen Taktzyklen ausgeführt werden, und um etwas Ähnliches zu bauen... Was könnte die logischen Vergleichsbefehle ersetzen, vielleicht Subtraktion oder etwas anderes in der gleichen Vene....

 
artmedia70:

Und hier interessiere ich mich für nicht standardisierte Arbeitsmethoden... Zum Beispiel nachsehen, welche Befehle in wie vielen Taktzyklen ausgeführt werden und etwas Ähnliches konstruieren... Was könnte die logischen Vergleichsbefehle ersetzen, vielleicht Subtraktion oder etwas Ähnliches....


Ich denke, Sie werden es nicht in Mql finden - die Prinzipien von Mql sind sehr ähnlich zu Java mit C-Syntax, versuchen Sie zu sehen, was schneller ist, um Fall oder wenn auszuführen, ich erinnere mich, wenn ich in Turbopascal sah, dass if schneller ist
 
artmedia70:
Willkommen hier.
 
Oper:
Wissen Sie, ob Sie einen Befehl zum Deaktivieren des EA über das Skript senden können?

Sie können. Ich zum Beispiel steuere meinen EA mit Skripten, die globale Variablen in einen bestimmten Zustand versetzen. Die Zustände dieser Variablen

werden sie im Expert Advisor analysiert und die notwendigen Befehle werden ausgeführt.

 
Guten Tag.
 
   SetIndexStyle(2,DRAW_ARROW);
   SetIndexArrow(2,241); 
Können Sie mir sagen, wie man die Größe des Pfeils richtig einstellt, und warum wird er größer, wenn Sie die Farbeinstellungen zurücksetzen, aber kleiner, wenn Sie neu kompilieren?