C-4: Weiß jemand, ob der Compiler eine Taste hat, um Meldungen über unbenutzte Funktionen und Variablen zu erhalten, wie es in MQL4 gemacht wird?
Wie wird dies in mql4 durchgeführt?
Auf die Frage, ob keine Warnungen über nicht verwendete Funktionen angezeigt werden, antwortete Renat, dass dies nicht der Fall sei. Im Zusammenhang mit der Verwendung von steckbaren Bibliotheken. Das war schon in der alten Version so. Jetzt ist das nicht mehr der Fall. Es ist sehr umständlich, im EA-Körper nach Funktionen zu suchen, die nicht verwendet werden. Er spricht nur von unbenutzten Variablen, wenn er sie im Körper einer Funktion findet, nicht in start() oder OnTick()
Auf die Frage, ob keine Warnungen über nicht verwendete Funktionen angezeigt werden, antwortete Renat, dass dies nicht der Fall sei. Durch die Verwendung von Plugin-Bibliotheken. Das war schon in der alten Version so. Jetzt ist das nicht mehr der Fall. Es ist sehr umständlich, im EA-Körper nach Funktionen zu suchen, die nicht verwendet werden. Er spricht nur von unbenutzten Variablen, wenn er sie im Körper einer Funktion findet, nicht in start() oder OnTick()
Denn in OOP sind es keine Funktionen, sondern Methoden. Jede Bibliothek kann eine Reihe von Klassen mit vielen Methoden haben, von denen einige nicht verwendet werden. Darüber hinaus verweisen Klassen auch auf andere Bibliotheken, deren Methoden zum Teil ebenfalls nicht verwendet werden. Dies kann zu einem riesigen Durcheinander an ungenutzten Methoden führen.
Nach der Menge des kompilierten Codes zu urteilen, eliminiert der Compiler automatisch ungenutzte Methoden. Das heißt, es macht keinen Sinn, sie selbst zu suchen, da diese Arbeit vom Compiler erledigt wird.
Denn in der OOP sind es nicht Funktionen, sondern Methoden. Jede Bibliothek kann eine Reihe von Klassen mit vielen Methoden haben, von denen einige nicht verwendet werden. Darüber hinaus verweisen Klassen auch auf andere Bibliotheken, deren Methoden zum Teil ebenfalls ungenutzt sind. Dies kann zu einem riesigen Stapel ungenutzter Methoden führen.
Nach der Größe des kompilierten Codes zu urteilen, eliminiert der Compiler automatisch ungenutzte Methoden. Das heißt, es macht keinen Sinn, selbst nach ihnen zu suchen, da der Compiler diese Aufgabe übernimmt.
Das ist nicht das Problem. Das Problem besteht genau darin, nicht verwendete Methoden in Ihren Klassen zu finden. Ich habe mehr als fünfhundert eigene Methoden. Die Zusammenhänge sind sehr komplex. Laufzeitcode ist unvermeidlich. Es könnte sehr nützlich sein, einen kurzen Blick darauf zu werfen, was nicht mehr verwendet wird.
Denn in OOP sind es keine Funktionen, sondern Methoden. Jede Bibliothek kann eine Reihe von Klassen mit vielen Methoden haben, von denen einige nicht verwendet werden. Darüber hinaus verweisen Klassen auch auf andere Bibliotheken, von denen einige Methoden ebenfalls ungenutzt sind. Dies kann zu einem riesigen Stapel ungenutzter Methoden führen.
Nach der Größe des kompilierten Codes zu urteilen, eliminiert der Compiler automatisch ungenutzte Methoden. Das heißt, es macht keinen Sinn, selbst nach ihnen zu suchen, da der Compiler diese Aufgabe übernimmt.
Juri, das ist ganz natürlich. Aber wenn Sie den Quellcode an einen Kunden weitergeben, wollen Sie ihn bereinigen. Und so beginnt der mühsame Prozess. Es gibt nicht viele Vorlagen - mehrere für bestimmte TK-Klassen. Ich muss Funktionen bereinigen, die mit diesem Fall nichts zu tun haben. Ich würde gerne eine "magische Schaltfläche" haben, die nur auf nicht verwendete Funktionen und Variablen im EA-Body verweist.
Ich hoffe, die Diskussion über die vorherige Frage ist beendet. Es ist schwierig zu erkennen, wann das Thema abgeschlossen ist und Sie Ihre Frage stellen sollten. Können Sie mir einen Tipp geben? Ich kann nicht herausfinden, wie ich ein 2D-Array mit den Ergebnissen derSt_handle- undMA_handle-Berechnungen füllen kann, ich kann sie nur an ein eindimensionales Array übergeben.
/+------------------------------------------------------------------+
//| 11.mq5 |//| Copyright 2014, MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2014, MetaQuotes Software Corp."#property link"http://www.mql5.com"#property version"1.00"#property indicator_separate_window#property indicator_minimum0#property indicator_maximum100#property indicator_buffers1#property indicator_plots1//--- plot Label1#property indicator_label1 "Label1"#property indicator_type1 DRAW_LINE#property indicator_color1 clrRed#property indicator_style1 STYLE_SOLID#property indicator_width1 1//--- input parametersinputint Input1=0;
inputint Input2=0;
//--- indicator buffersdouble Label1Buffer[];
double MA[10000][400];
int St_handle;
int MA_handle;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mappingSetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---int Kp =51; // с Kp начанается К% на Kp_end заканчиваетсяint Kp_end =400;// с Kp начанается К% на Kp_end заканчиваетсяint MAp =2; // с MAp начанается D% на MAp_end заканчиваетсяint MAp_end=31; // с MAp начанается D% на MA_end заканчиваетсяENUM_STO_PRICE price_field=1; // цена расчета стохастика 0 Low/High 1 Close/Close
St_handle=iStochastic(NULL,0,Kp,1,1,MODE_EMA,price_field);
for(MAp=2;MAp<MAp_end;MAp++)
{
MA_handle=iMA(NULL,0,MAp,0,MODE_EMA,St_handle);
}
//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+
C-4: Das ist nicht das Problem. Das Problem besteht genau darin, nicht verwendete Methoden in Ihren Klassen zu finden.
Was meinen Sie mit: nicht verwendete Methoden in Ihren Klassen? Dies ist in der OOP nicht der Fall. Ein normaler OOP-Programmierer erstellt im Gegensatz zur algorithmischen Programmierung Klassen mit allen notwendigen Feldern und Methoden, wie man so schön sagt, für alle Fälle, denn dieselbe Klasse kann später in anderen Anwendungen verwendet werden oder Teil einer Klassenbibliothek werden. Ganz zu schweigen von der Tatsache, dass es selbst innerhalb eines Projekts besser ist, vollständige Klassen zu erstellen und nicht nur abgespeckte, damit Sie nicht den Quellcode durchsuchen und später die erforderlichen Felder und Methoden hinzufügen müssen.
In der OOP kann sich jede Sparsamkeit, an die sich viele Menschen bei der algorithmischen Programmierung gewöhnen, später als nachteilig erweisen. Alles, was nicht verwendet wird, muss vom Compiler und nicht vom Programmierer aus dem Code ausgeschlossen werden.
Natürlich führt OOP im Vergleich zur algorithmischen Programmierung zu einem größeren Quellcode. Dies ist jedoch kein Nachteil, sondern ein Vorteil, denn ein Großteil des "zusätzlichen" Codes in diesem Projekt kann in anderen Projekten wiederverwendet werden.
C-4:
Ich habe über fünfhundert eigene Methoden. Die Zusammenhänge sind sehr komplex. Rudimentärer Code ist unvermeidlich. Es ist sehr nützlich, um schnell zu sehen, was nicht mehr verwendet wird.
Sie sollten nicht versuchen, ein Rätsel zu machen, d.h. alles in eine Klasse zu packen. Sie müssen Klassenbibliotheken erstellen, d. h. die Funktionalität in einzelne Klassen aufteilen, und vergessen Sie nicht, diese Dinge mit Kommentaren zu versehen, dann wird sich alles von selbst regeln. Als ich nach Pascal anfing, Java zu lernen, versuchte auch ich, alles in einem Stück zu machen, d.h. statt OOP zu verwenden, erstellte ich eine Klasse mit allem, was ich für eine bestimmte Aufgabe brauchte, genau wie in der algorithmischen Programmierung. Das Ergebnis war ein nicht universelles Durcheinander, das später nirgendwo mehr angewendet werden konnte, ganz zu schweigen davon, dass es schwierig war, einen solchen Code zu verstehen.
Können Sie mir einen Tipp geben? Ich kann nicht herausfinden, wie ich ein zweidimensionales Array mitSt_handle undMA_handle Berechnungsergebnissen füllen kann, ich kann sie nur an ein eindimensionales Array übergeben.
Was ist der Grund? Warum also einen Buckel machen, anstatt Occams Rasiermesser zu benutzen? Was ist der Vorteil eines zweidimensionalen Arrays gegenüber zwei eindimensionalen Arrays? Schließlich muss man zuerst etwas aus zwei eindimensionalen, durch Standardindikatoren erstellten, in einen zweidimensionalen Raum schieben und dann etwas aus diesem herausnehmen. Sie machen unnötige Arbeit und versuchen, andere mit hineinzuziehen.
Wenn es ein Problem mit eindimensionalen Arrays gäbe, dann wäre es die Mühe wert.
Nachdem ich im Forum herumgestöbert habe, bin ich darauf gestoßen, wie viel Speicherplatz dies beansprucht, nämlich eine Menge! Ich habe beschlossen, ein eindimensionales Array zu füllen, darin nach einem Signal zu suchen, es zu überschreiben und erneut nach einem Signal zu suchen. Ich will immer noch 10K Zyklen. Zum Beispiel so. Ein oder zwei Suchvorgänge pro Stunde sind für mich ausreichend.
St_handle=iStochastic(NULL,0,Kp,1,1,MODE_EMA,price_field); // создание хэндла стохастика for(MAp=1;MAp<MAp_end;MAp++) //перебор сглаживаний
{
MA_handle=iMA(NULL,0,MAp,0,MODE_EMA,St_handle); // создание хэндла сглаженного стохастикаCopyBuffer(MA_handle,0,0,400,MA); // заполнение одномерного массива значениями стохастикаif(MA[1]>6) Alert(MA[1]); // начинается поиск сигнала
}
Hallo!
Ich kann nicht herausfinden, in welchem Intervall ein grafisches Objekt angezeigt werden soll
für alle Zeiträume.
Ich danke Ihnen.
OBJ_ALL_PERIODS=2097151
Weiß jemand, ob der Compiler eine Taste hat, um Meldungen über unbenutzte Funktionen und Variablen zu erhalten, wie es in MQL4 gemacht wird?
Wie wird dies in mql4 durchgeführt?
Auf die Frage, ob keine Warnungen über nicht verwendete Funktionen angezeigt werden, antwortete Renat, dass dies nicht der Fall sei. Im Zusammenhang mit der Verwendung von steckbaren Bibliotheken. Das war schon in der alten Version so. Jetzt ist das nicht mehr der Fall. Es ist sehr umständlich, im EA-Körper nach Funktionen zu suchen, die nicht verwendet werden. Er spricht nur von unbenutzten Variablen, wenn er sie im Körper einer Funktion findet, nicht in start() oder OnTick()
Wie wird das in mql4 gemacht?
Auf die Frage, ob keine Warnungen über nicht verwendete Funktionen angezeigt werden, antwortete Renat, dass dies nicht der Fall sei. Durch die Verwendung von Plugin-Bibliotheken. Das war schon in der alten Version so. Jetzt ist das nicht mehr der Fall. Es ist sehr umständlich, im EA-Körper nach Funktionen zu suchen, die nicht verwendet werden. Er spricht nur von unbenutzten Variablen, wenn er sie im Körper einer Funktion findet, nicht in start() oder OnTick()
Denn in OOP sind es keine Funktionen, sondern Methoden. Jede Bibliothek kann eine Reihe von Klassen mit vielen Methoden haben, von denen einige nicht verwendet werden. Darüber hinaus verweisen Klassen auch auf andere Bibliotheken, deren Methoden zum Teil ebenfalls nicht verwendet werden. Dies kann zu einem riesigen Durcheinander an ungenutzten Methoden führen.
Nach der Menge des kompilierten Codes zu urteilen, eliminiert der Compiler automatisch ungenutzte Methoden. Das heißt, es macht keinen Sinn, sie selbst zu suchen, da diese Arbeit vom Compiler erledigt wird.
Denn in der OOP sind es nicht Funktionen, sondern Methoden. Jede Bibliothek kann eine Reihe von Klassen mit vielen Methoden haben, von denen einige nicht verwendet werden. Darüber hinaus verweisen Klassen auch auf andere Bibliotheken, deren Methoden zum Teil ebenfalls ungenutzt sind. Dies kann zu einem riesigen Stapel ungenutzter Methoden führen.
Nach der Größe des kompilierten Codes zu urteilen, eliminiert der Compiler automatisch ungenutzte Methoden. Das heißt, es macht keinen Sinn, selbst nach ihnen zu suchen, da der Compiler diese Aufgabe übernimmt.
Denn in OOP sind es keine Funktionen, sondern Methoden. Jede Bibliothek kann eine Reihe von Klassen mit vielen Methoden haben, von denen einige nicht verwendet werden. Darüber hinaus verweisen Klassen auch auf andere Bibliotheken, von denen einige Methoden ebenfalls ungenutzt sind. Dies kann zu einem riesigen Stapel ungenutzter Methoden führen.
Nach der Größe des kompilierten Codes zu urteilen, eliminiert der Compiler automatisch ungenutzte Methoden. Das heißt, es macht keinen Sinn, selbst nach ihnen zu suchen, da der Compiler diese Aufgabe übernimmt.
Ich hoffe, die Diskussion über die vorherige Frage ist beendet. Es ist schwierig zu erkennen, wann das Thema abgeschlossen ist und Sie Ihre Frage stellen sollten. Können Sie mir einen Tipp geben? Ich kann nicht herausfinden, wie ich ein 2D-Array mit den Ergebnissen derSt_handle- undMA_handle-Berechnungen füllen kann, ich kann sie nur an ein eindimensionales Array übergeben.
Das ist nicht das Problem. Das Problem besteht genau darin, nicht verwendete Methoden in Ihren Klassen zu finden.
Was meinen Sie mit: nicht verwendete Methoden in Ihren Klassen? Dies ist in der OOP nicht der Fall. Ein normaler OOP-Programmierer erstellt im Gegensatz zur algorithmischen Programmierung Klassen mit allen notwendigen Feldern und Methoden, wie man so schön sagt, für alle Fälle, denn dieselbe Klasse kann später in anderen Anwendungen verwendet werden oder Teil einer Klassenbibliothek werden. Ganz zu schweigen von der Tatsache, dass es selbst innerhalb eines Projekts besser ist, vollständige Klassen zu erstellen und nicht nur abgespeckte, damit Sie nicht den Quellcode durchsuchen und später die erforderlichen Felder und Methoden hinzufügen müssen.
In der OOP kann sich jede Sparsamkeit, an die sich viele Menschen bei der algorithmischen Programmierung gewöhnen, später als nachteilig erweisen. Alles, was nicht verwendet wird, muss vom Compiler und nicht vom Programmierer aus dem Code ausgeschlossen werden.
Natürlich führt OOP im Vergleich zur algorithmischen Programmierung zu einem größeren Quellcode. Dies ist jedoch kein Nachteil, sondern ein Vorteil, denn ein Großteil des "zusätzlichen" Codes in diesem Projekt kann in anderen Projekten wiederverwendet werden.
Ich habe über fünfhundert eigene Methoden. Die Zusammenhänge sind sehr komplex. Rudimentärer Code ist unvermeidlich. Es ist sehr nützlich, um schnell zu sehen, was nicht mehr verwendet wird.
Können Sie mir einen Tipp geben? Ich kann nicht herausfinden, wie ich ein zweidimensionales Array mitSt_handle undMA_handle Berechnungsergebnissen füllen kann, ich kann sie nur an ein eindimensionales Array übergeben.
Was ist der Grund? Warum also einen Buckel machen, anstatt Occams Rasiermesser zu benutzen? Was ist der Vorteil eines zweidimensionalen Arrays gegenüber zwei eindimensionalen Arrays? Schließlich muss man zuerst etwas aus zwei eindimensionalen, durch Standardindikatoren erstellten, in einen zweidimensionalen Raum schieben und dann etwas aus diesem herausnehmen. Sie machen unnötige Arbeit und versuchen, andere mit hineinzuziehen.
Wenn es ein Problem mit eindimensionalen Arrays gäbe, dann wäre es die Mühe wert.
Tut mir leid, wenn dies nicht zum Thema passt ...
Hilfe, wer kann ...
in delphi 7 dll Verfahren...
procedure test1(var data: array of Double); stdcall;
begin
ShowMessage('Entered ');
Ende;
in mt4 :
#import "gayss.dll"
void test1( double &data[] );
#import
ArrayResize(data, 6);
data[0]= 2;
data[1]= 4;
data[2]= 8;
data[3]= 16;
data[4]= 21;
data[5]= 3;
test1(Daten);
und eine Fehlermeldung erscheint... 2014.02.06 17:39:04.241 Stapel beschädigt, DLL-Funktionsaufruf in 'SOG_2014.mq4' prüfen (80,7)
Wer weiß, wie man es richtig macht...