[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 72

 

http://www.soft-sib.ru/articles/programs/10/

Ein weiterer Vorteil der Verwendung von DBMS und der Client-Server-Architektur gegenüber dem Dateiserver-Ansatz ist die Möglichkeit, einen transaktionalen Datenmanipulationsmechanismus zu verwenden. Dieser vom Datenserver bereitgestellte Dienst ermöglicht es, mehrere Datenänderungsaktionen zu einer unteilbaren Operation (Transaktion) zusammenzufassen . Die Verwendung von Transaktionen gewährleistet einen zuverlässigen Schutz der Informationen vor Hardware- und Softwarefehlern sowohl auf der Client- als auch auf der Serverseite des IS.

 
Ja, entweder bin ich unsichtbar oder niemand will oder kann mir helfen((
 
PerlOF:


Das Handbuch und das Tutorial weisen auf die Notwendigkeit hin, sich mit einem Server zu verbinden (für den EA, Skripte, Indikatoren).

Ist es möglich, spezielle Funktionen aufzurufen, ohne sich mit dem Server zu verbinden (im Prinzip)?


Ja, das ist sie. Der Server wird nämlich benötigt, um ein Häkchen zu erhalten, das die Funktion start() auslöst.

start() - Hauptfunktion. Sie wird bei Experten nach dem Empfang des nächsten Ticks aufgerufen. Bei benutzerdefinierten Indikatoren wird sie während der Neuberechnung nach dem Anhängen des Indikators an den Chart, beim Öffnen des Client-Terminals (wenn der Indikator an den Chart angehängt ist) sowie nach dem nächsten Tick aufgerufen. In Skripten wird es sofort nach dem Anhängen an das Diagramm und der Initialisierung ausgeführt. Wennim Modul keine start()-Funktion vorhanden ist, kann dieses Modul (Expert Advisor, Skript oder benutzerdefinierter Indikator) nicht gestartet werden.

Das Skript kann in einer Endlosschleife laufen und benötigt daher keine Ticks, Ticks werden für Indikatoren und Expert Advisors benötigt (in der Standardkonfiguration, da Expert Advisors auch in einer Endlosschleife laufen können).

Aber die Zecken können künstlich erzeugt werden - mit VINAPI. Darüber hinaus gibt es eine Standardfunktion wie den Strategietester (der auch Ticks erzeugen kann).

Sie müssen nur Ihr Gehirn benutzen und auf der Website (FORUM) suchen.

Und nicht die Vor- oder Nachteile der Dateiserver-Technologie einbringen.

 
MXDEEM:

Hallo, ich habe diesen Code, überprüfen Sie für das Vorhandensein von Aufträgen, wenn ich einen offenen Auftrag haben, dann wieder überprüfen und so weiter, bis der Auftrag erreicht 0. Aber der Experte eindeutig ignoriert diesen Code und öffnet eine unendliche Anzahl von Aufträgen, bitte beraten, was ist der Fehler?

int FunctionBUYnext()
{
int b=Auftragssumme();
wenn (b>0)
{FunctionBUYnext();}
sonst {FunctionSELL();}
}



MQL4 Community Forum Navigator
RegelnSucheWie man postetVerwaltung des ForumsMissbrauch meldenTelepathen-Club
Fragen, die Sie nicht stellen sollten
Wie man die richtigen Fragen stellt
Nützliche LiteraturNützliche SoftwareSuche nach einem Indikator (Expert Advisor oder Skript)
 

In einem Trading Expert Advisor muss mit der Funktion iCustom eine Linie gezeichnet werden.
Ich habe ZigZag als Test verwendet:

for(int cnt=0; cnt<10000; cnt++) {
   double zigzag1=iCustom(NULL,0,"ZigZag",15,0,3,  0,cnt+1);
   if( zigzag1!=0 ) 
      break;
}


Da iCustom in meinem Fall nur dazu dient, eine Linie
zu zeichnen (die Daten des Indikators werden nicht im Expert Advisor verwendet), habe ich beschlossen, den Code in deinit() zu integrieren. Aber es funktioniert dort nicht und bringt nichts ein.
Bei start() ist alles in Ordnung.
1. Warum funktioniert es nicht in deinit()?
2. Sie müssen vermeiden, dass der obige Code beim Testen und Optimieren von
sinnlos ausgeführt wird (um keine CPU-Zeit zu verschwenden), und ihn nur auf dem letzten Balken des getesteten Verlaufs laufen lassen.
- Wie kann dies erreicht werden?
Ich danke Ihnen!
 
Roll:

Code ist absurd.

WARUM? ALLES WIE GEBRAUCHT
 
MXDEEM:

WARUM? ALLE WARUM?

Es ist seltsam, wie man Ihnen beigebracht hat...

Wo werden die Funktionen aus dem Hauptteil Ihres "Codes" aufgerufen?

Der "Code" selbst ist auch ziemlich lustig...

int FunctionBUYnext()
{
int b=OrdersTotal();
if (b>0)
{FunctionBUYnext();}
else {FunctionSELL();}
} 

Mit einem Aufruf an sich selbst... Warum wird FunctionBUYnext() nicht einfach beendet, wenn es keine Aufträge gibt?

Weiterhin - keine Prüfung auf Auftragsart, keine Prüfung auf Symbol und Magie...

Ich würde deinen "Lehrer" in die Klapse schicken...

 

Konfrontiert mit einem Problem...

Das Skript arbeitet mit der Funktion MessageBox() in dieser Form

//+------------------------------------------------------------------+

#include <WinUser32.mqh>
#import "user32.dll"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   int result = MessageBox("Are you ok?", "Caption",MB_YESNO|MB_ICONQUESTION);
   if(result != IDYES) Alert("Кнопка да не нажата");
//----
   return(0);
  }
//+------------------------------------------------------------------+

Aber es schlägt komplett fehl, wenn Sie die undokumentierte Funktion MessageBoxTimeoutA() verwenden:

//+------------------------------------------------------------------+

#include <WinUser32.mqh>
#import "user32.dll"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   int result = MessageBoxTimeoutA(0, "Are you ok?", "Caption",MB_YESNO|MB_ICONQUESTION, 0, 10000);
   if(result != IDYES) Alert("Кнопка да не нажата");
//----
   return(0);
  }
//+------------------------------------------------------------------+

Selbst ein Meldungsfenster mit Ja/Nein-Schaltflächen wird nicht angezeigt.

Wer ist ihm begegnet - sag mir, wo der Hund begraben ist?

 
artmedia70:

Es ist seltsam, wie man Ihnen beigebracht hat...

Wo werden die Funktionen aus dem Hauptteil Ihres "Codes" aufgerufen?

Der "Code" selbst ist auch ziemlich lustig...

Mit einem Aufruf an sich selbst... Warum wird FunctionBUYnext() nicht einfach beendet, wenn es keine Aufträge gibt?

Weiterhin - keine Prüfung auf Auftragsart, keine Prüfung auf Symbol und Magie...

Ich würde deinen "Lehrer" in die Klapse schicken...

ICH ERKLÄRE DIE BEDEUTUNG, RUFT SICH, WEIL SIE EINE ÜBERPRÜFUNG IN DIESEM TEIL BENÖTIGEN, WENN SIE EINE RÜCKNAHME WIRD ES WIEDER AUF DIE AUSFÜHRUNG BEGINNEN, ICH BRAUCHE ES NICHT, DAS SYMBOL UND MAGIER SIND NICHT BERÜCKSICHTIGT, MEIN LEHRER INTERNET)))) WENN ES NICHT SCHWIERIG IST, SENDEN SIE MIR BITTE ETWAS ÄHNLICHES, ABER ARBEITEN, DIE WICHTIGSTE IDEE - NICHT AUF, WENN ES EINEN AUFTRAG, WENN NICHT DANN ZU EINER BESTIMMTEN FUNKTION ZU ÜBERSPRINGEN.

 
MXDEEM:

ICH ERKLÄRE DIE BEDEUTUNG, RUFT SICH, WEIL WIR EINE PRÜFUNG IN DIESEM TEIL BRAUCHEN, WENN SIE BEENDEN ES WIRD WIEDER AUF DIE AUSFÜHRUNG BEGINNEN, ICH BRAUCHE ES NICHT, DAS SYMBOL UND DER MAGIER SIND NICHT BERÜCKSICHTIGT, MEIN LEHRER INTERNET))) WENN SIE NICHTS DAGEGEN HABEN, ETWAS ÄHNLICHES ZU SENDEN, ABER ARBEITEN, DIE WICHTIGSTE IDEE - NICHT ZU LASSEN, WENN DER AUFTRAG, WENN NICHT, DANN ZU EINER BESTIMMTEN FUNKTION ZU ÜBERSPRINGEN.

Oh, schrei nicht so ... Ich glaube, bei Ihnen klemmt die CapsLock-Taste... Die Schriftgröße sollte verdoppelt werden, und es wäre fett...

Es ist nur ein... eine Nebenbemerkung.

Lassen Sie es mich Ihnen erklären:

Ich erkläre Ihnen, worum es geht. Indem Sie einen rekursiven Aufruf machen, bringen Sie Ihren EA dazu, genau zu diesem Teil zu schleifen... Das heißt, wenn es irgendwelche Aufträge oder Marktpositionen gibt, sollte der EA hängen und nichts tun (nur hängen), bis Sie manuell alle Aufträge löschen und Positionen schließen? Was ist dann der Sinn eines solchen automatisierten Handels, wenn der EA ohne Ihr Zutun dort hängen bleibt?

Überdenken Sie Ihren Ansatz zur EA-Logik