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

 
nikkola >> :

Ich habe es nicht dekompiliert, so habe ich es bekommen...

Das macht absolut keinen Unterschied.

 
Seltsam, es ging von alleine weg, aber dank TheXpert weiß ich jetzt, wo der Fehler liegt
 
nikkola >> :

Ich habe es nicht dekompiliert, so habe ich es bekommen...

Und im Allgemeinen sind Experten dieser Art sogar auf diese Ressource in Massen und mit offener Quelle. Es war eine Art Pflaumen-EA, der an der Schnittstelle zwischen Preis und Winken arbeitete. Ich habe ihn durch einen anderen Indikator ersetzt, und das ist alles. Und stieß auf dieses Problem.

 
und noch eine Frage, weiß jemand, ob die Zitate in archivierter Form verfügbar sind, denn mir geht das Internet aus ^_^
 
nikkola >> :

Hallo, bitte um Hilfe, ich verstehe nicht... Ich habe einen EA, der auf Oszillatorsignale reagiert und Positionen nach dem Nulldurchgang öffnet. Ich möchte, dass er eine Position öffnet, wenn der aktuelle Balken geschlossen ist und sich das Signal gebildet hat. Er kann eine Position ein paar Mal in einer Minute öffnen und schließen :) Bis sich das Signal einstellt.

Hier ist der Code:


extern double Lot = 0.1;
extern double Per = 14;
bool gi_84 = TRUE;
int gi_88 = 366;
double gd_92 = 0,02;
double gd_100 = 0,2;
int g_period_108 = 14;
int gi_112 = 50;
int g_slippage_116 = 0;



void start() {
int l_cmd_52;
int l_ticket_56;

string l_symbol_0 = Symbol();
double l_isar_8 = iCustom(NULL,0, "daytrend-t01",Per,0,0);
double l_isar_9 = iCustom(NULL,5, "daytrend-t01",Per,0,0);
int l_cmd_40 = -1;
int l_ord_total_44 = OrdersTotal();
Lot = MathMax(Lot, MarketInfo(l_symbol_0, MODE_MINLOT));
for (int li_48 = l_ord_total_44; li_48 > 0; li_48--) {
if (OrderSelect(li_48 - 1, SELECT_BY_POS) == TRUE) {
l_cmd_52 = OrderType();
if (OrderSymbol() != l_symbol_0 || l_cmd_52 < OP_BUY || l_cmd_52 > OP_SELL) continue;
l_ticket_56 = OrderTicket();
RefreshRates();
if (l_cmd_52 < OP_SELL) {
if (l_isar_8 > 0) {
while (OrderClose(l_ticket_56, Lot, Bid, g_slippage_116) == 0) FunError(gi_112);
l_cmd_40 = -1;
weiter;
}
} sonst {
if (l_isar_8 < 0 ) {
while (OrderClose(l_ticket_56, Lot, Ask, g_slippage_116) == 0) FunError(gi_112);
l_cmd_40 = -1;
weiter;
}
}
l_cmd_40 = l_cmd_52;
}
}
if (l_cmd_40 < OP_BUY && g_period_108 == 0 || DayOfYear() < gi_88) {
RefreshRates();
if (l_isar_8 < 0 && l_isar_9 < 0 ) while (OrderSend(l_symbol_0, OP_BUY, Lot, Ask, g_slippage_116, 0, 0) == 0) FunError(gi_112);
sonst
if (l_isar_8 > 0 && l_isar_9 > 0 ) while (OrderSend(l_symbol_0, OP_SELL, Lot, Bid, g_slippage_116, 0, 0) == 0) FunError(gi_112);
}
}

void FunError(int ai_0) {
Sleep(ai_0);
RefreshRates();
}

void deinit() {
}

Ich verwende dazu den folgenden Code:


bool Fun_New_bar()
/*
soll erkennen, ob ein neuer Takt vorhanden ist,
wenn neuer Balken gefangen wird "true" sonst "false".
===========
Variablen:
===========
Test_Time - Testzeit
*/
{
static datetime Test_Time=0;
if(Test_Zeit!=Zeit[0])
{
Test_Zeit=Zeit[0];
return(true);
}
return(false);
}


Auf meine Frage bitte helfen Sie mir, wenn ich weiß, oder sagen Sie mir, wenn es unmöglich ist, dies zu tun... ich bin für eine Antwort für 3 Tage und immer noch kein Glück suchen. :-(

 
betmen >> :

Für meine Frage bitte helfen, wer weiß, oder sagen Sie mir, wenn es unmöglich ist, dies zu tun ... Ich habe für eine Antwort für 3 Tage und bis jetzt ohne Erfolg gesucht. :-(

Die benutzerdefinierte Benutzeroberfläche wird zur Anpassung der Einstellungen verwendet. Das heißt, ein Fenster, das speziell für eine bestimmte Aufgabe (für bestimmte Indikatoren) entwickelt wurde. Es gibt keine Möglichkeit, solche Fenster in Metatrader zu erstellen. Das bedeutet, dass sie an anderer Stelle mit einer ausführbaren Datei erstellt werden müssen. Die ausführbare Datei kann entweder Exe oder Dll sein. Dll kann am Anfang eines Indikators/Skripts aufgerufen werden, was eindeutig praktischer ist.

 
jartmailru >> :

Die benutzerdefinierte Benutzeroberfläche wird zum Einstellen der Parameter verwendet. D.h. ein Fenster, das speziell für eine bestimmte Aufgabe (für bestimmte Indikatoren) entwickelt wurde. Es gibt keine Möglichkeit, solche Fenster in Metatrader zu erstellen. Das bedeutet, dass sie an anderer Stelle mit einer ausführbaren Datei erstellt werden müssen. Die ausführbare Datei kann entweder Exe oder Dll sein. Sie können die Dll beim Start des Indikators/Skripts aufrufen, das ist bequemer.

Ich danke Ihnen!!!

Wenn Sie mir den Artikel, in dem das beschrieben wird, zur Verfügung stellen möchten, wäre ich Ihnen sehr dankbar... :-)

 
betmen >> :

Ich danke Ihnen!!!

Die Frage ist, wie die Schnittstelle zwischen Objekten auf "Hauptformular" und Variablen in MQL4 zu konfigurieren, wenn Sie mit mir einige Links zu Artikeln darüber teilen, ich werde einfach mit Dankbarkeit explodieren... :-)

Mein Eindruck ist, dass es am besten ist, die Dll zu ignorieren,

modal anzeigen kann gefährlich sein (es ist ein Indikator auf UI-Thread, Sie können Folgen bekommen)-.

oder vielleicht auch nicht... Im Allgemeinen kann das Formular in einer separaten Umgebung ausgeführt werden - mit Wtl hat alles wunderbar geklappt.

Der Indikator wartet auf ein Kennzeichen, dass er arbeiten darf, und fragt dieses Formular ab.

Und dann - wenn das Formular fertig ist - gibt es verschiedene Funktionen wie get(int & to[]), mit Zeigern/Referenzen,

die verschiedene Daten übermitteln werden. Mit Strings könnte es Probleme geben...

Und Sie werden den Link zu dem Artikel mit mir teilen ;-).

 
jartmailru >> :

Nun, ich habe den Eindruck, dass es am besten ist, die Dll zu ignorieren,

modal anzeigen könnte gefährlich sein (es ist auf UI-Thread, Sie könnten Konsequenzen bekommen)-

oder vielleicht auch nicht... Im Allgemeinen kann das Formular in einer separaten Umgebung ausgeführt werden - mit Wtl hat alles wunderbar geklappt.

Der Indikator wartet auf ein Kennzeichen, dass er arbeiten darf, und fragt dieses Formular ab.

Und dann - wenn das Formular fertig ist - gibt es verschiedene Funktionen wie get(int & to[]), mit Zeigern/Referenzen,

die verschiedene Daten übermitteln werden. Mit Strings könnte es Probleme geben...

Sie können den Link zu dem Artikel mit mir teilen ;-).

Die Frage war, wie die Standard-Indikatoren zeichnen eine neue Registerkarte "Parameter" bei der Auswahl der Einstellungen des Indikators Betrieb selbst, mit der Möglichkeit, die Zahlen mit etwas mehr lesbar zu ersetzen.

Wenn Sie zum Beispiel die MA anrufen:


im Code des Indikators ist es die Variable "MA_Method" und die Auswahl der Methode erfolgt durch die Bedingung


switch(MA_Methode)
{
case 1 : short_name="EMA("; draw_begin=0; break;
case 2 : short_name="SMMA("; break;
case 3 : kurz_name="LWMA("; break;
Standard:
MA_Methode=0;
short_name="SMA(";


Sie schlagen vor, eine aus einer anderen Umgebung kompilierte Exe-Datei während der Initialisierung auszuführen. Es ist tatsächlich möglich, eine Exe-Datei während der Initialisierung auszuführen, aber dann gibt es ein anderes Problem - wie kann man Daten aus dem Programm an Variablen des Indikators selbst übergeben?

Wie kann man z.B. den Wert von combobox1.text in eine Zahl umgewandelt an MA_Method übergeben?

Es ist nicht ästhetisch durch eine Datei und es scheint, dass MetaTrader und meine "test.exe" keinen gemeinsamen Speicherplatz haben.

 
Rita писал(а) >>

Ich danke Ihnen. Ich werde es jetzt ausprobieren.

//------------------------------------------

Ja, es hat funktioniert. Die Experten sind im Einsatz.

Und es hat bei mir nicht funktioniert :-( Ich bekomme immer noch die Fehlermeldung und schließe MT