Bibliotheken: Symbol - Seite 11

 

Die Herausforderung

CLONE(SYMBOL_FORMULA)

ist fraglich. Normalerweise berechnen benutzerdefinierte Symbole in MQL5 selbst Balken und Ticks, und die Übertragung der Formel macht es unmöglich, ein neues Symbol zu verwalten. Die Idee (Fix-Request) ist, ein benutzerdefiniertes Symbol aus einem synthetischen mit einer Formel zu erstellen.

Ich habe dieses Klonen jetzt auskommentiert, aber obwohl die Formel jetzt nicht mehr in den Eigenschaften sichtbar ist, scheint das resultierende benutzerdefinierte Symbol immer noch die synthetischen Balken in irgendeiner verstümmelten Form zu klonen. Ich verstehe noch nicht, was da los ist.

ZЫ. Ich habe mein Generatorprogramm entfernt, aber das von ihm erzeugte benutzerdefinierte Symbol wird weiterhin durch Ticks synchron mit den synthetischen Balken, auf deren Grundlage es erstellt wurde, aktualisiert. Poltergeist. Es gibt eine Terminalstörung.

 
Stanislav Korotky #:

Die Herausforderung ist fraglich. Normalerweise berechnen benutzerdefinierte Symbole in MQL5 selbst Balken und Ticks, und die Übertragung der Formel macht es unmöglich, ein neues Symbol zu verwalten. Die Idee (Fiche-Anfrage) ist, ein benutzerdefiniertes Symbol aus einem synthetischen mit einer Formel zu bauen.

Es lohnt sich vielleicht tatsächlich nicht, ein vollständiges Klonen durchzuführen.

Ich habe das Klonen jetzt auskommentiert, aber obwohl die Formel jetzt nicht mehr in den Eigenschaften sichtbar ist, scheint das resultierende benutzerdefinierte Symbol immer noch die synthetischen Balken in einer Art verstümmelter Form zu klonen. Ich verstehe noch nicht, was da los ist.

ZЫ. Ich habe mein Generatorprogramm entfernt, aber das von ihm erzeugte benutzerdefinierte Symbol wird weiterhin durch Ticks synchron mit den synthetischen Balken, auf deren Grundlage es erstellt wurde, aktualisiert. Poltergeist. Es gibt eine Terminalstörung.

Leider gibt es dort eine Menge Fehler.

 

@fxsaber

Manchmal öffnet der Tester nach dem Neustart des Terminals keine Positionen mehr für ein benutzerdefiniertes Symbol.

Oder er zählt null Gewinn.

Womit kann das zusammenhängen?

Dateien:
4y48yl.PNG  32 kb
y4xlvu2.PNG  35 kb
 

Schauen Sie sich die Währungen des Symbols VOR und NACH dem Neustart des Terminals an...

Ich musste einmal einen Dienst schreiben, um benutzerdefinierte Währungen automatisch wiederherzustellen.

 
fxsaber #:

Betrachten Sie die Währungen des Symbols VOR und NACH dem Neustart des Terminals....

Ich musste einmal einen Dienst schreiben, um benutzerdefinierte Währungen automatisch wiederherzustellen.

Selbst wenn ich nun alle erstellten benutzerdefinierten Symbole aus dem Terminal lösche und den Ordner mit den benutzerdefinierten Basen lösche, wird immer noch ein fehlerhaftes benutzerdefiniertes Symbol erstellt.

Ich erstelle ein benutzerdefiniertes Symbol mit diesem Code

// Erstellen Sie eine Kopie des Symbols, um den Tester zu beschleunigen
#property script_show_inputs

#include <Symbol.mqh>

void OnStart()
{
  const SYMBOL Symb("TESTER_" + _Symbol); // Erstellt ein Symbol

  if (Symb.IsExist()) // Wenn das Symbol erstellt wird
  {
    Symb = _Symbol; // Kopieren Sie alle Eigenschaften und den Balkenverlauf (+ Tickverlauf, falls benutzerdefiniert) vom Hauptsymbol - Klonen

    // Die Währungen des Symbols zur Währung des Kontos machen
    Symb.SetProperty(SYMBOL_CURRENCY_PROFIT, AccountInfoString(ACCOUNT_CURRENCY));
    Symb.SetProperty(SYMBOL_CURRENCY_MARGIN, AccountInfoString(ACCOUNT_CURRENCY));

    if (Symb.On()) // Enthalten in der Marktbeobachtung
      ChartOpen(Symb.Name, PERIOD_CURRENT); // Öffnete eine neue Symboltabelle
  }
}

Wenn Ihr Dienst die Lösung für das Problem ist - bitte teilen Sie ihn mit

 

Jetzt habe ich Terminal auf einer neuen Virtualisierung installiert und das Problem ist das gleiche.

Vielleicht gibt es etwas in den neuesten Builds?

 

Ich glaube, ich habe das Problem gefunden.

Wenn Sie ein Symbol mit dem Namen

EURUSD_1

ist alles in Ordnung.

Wenn Sie ein Symbol mit dem Namen

1_EURUSD

dann passiert der Teufel.

Dateien:
1.PNG  90 kb
2.PNG  91 kb
 
EgorKim benutzerdefinierten Symbolwährungen nach dem Neuladen des Terminals.
// Der Dienst korrigiert die Währungen aller benutzerdefinierten Zeichen.
#property service

bool CorrectCurrency( const string Symb, const string Currency )
{  
  return(SymbolInfoInteger(Symb, SYMBOL_CUSTOM) && 
         CustomSymbolSetString(Symb, SYMBOL_CURRENCY_BASE, Currency) &&
         CustomSymbolSetString(Symb, SYMBOL_CURRENCY_MARGIN, Currency) &&
         CustomSymbolSetString(Symb, SYMBOL_CURRENCY_PROFIT, Currency));
}

void CorrectSymbols( void )
{
  const string Currency = AccountInfoString(ACCOUNT_CURRENCY);
  
  for (int i = SymbolsTotal(false) - 1; i >= 0; i--)
    CorrectCurrency(SymbolName(i, false), Currency);
    
  return;
}

void OnStart()
{
  CorrectSymbols();
}
 
EgorKim #:

1_EURUSD

dann ist die Hölle los.

Dies ist, wenn das Symbol der Marge wie auf Forex berechnet wird, in anderen Varianten der Marge Berechnung ein benutzerdefiniertes Symbol kann aufgerufen werden, was Sie wollen.