Wie programmiert man? - Seite 333

 

Hallo Mladen,

ich habe es getan,

aber wenn ich es in MT4,

erscheint nichts in dem Unterfenster,

Bitte schauen Sie sich diesen Quellcode an.

Danke.

Dateien:
 
luffy:
Hallo Mladen,

Ich habe es getan,

aber wenn ich es in MT4,

erscheint nichts in dem Unterfenster,

Bitte schauen Sie sich diesen Quellcode an.

vielen Dank.

luffy

Zwei Dinge:

1. Fügen Sie if (R!=0) vor S = (Q/ R) ein;

2. Sie durchlaufen eine Schleife durch alle Balken, aber Ihre Arrays enthalten nur 14 Elemente. Wenn Sie Arrays wie Puffer verwenden wollen (mit der gleichen Anzahl von Elementen wie die Balken im Chart), dann sollte die Größe der Arrays immer überprüft und entsprechend angepasst werden). Sie können sich diesen Indikator ansehen: https: //www.mql5.com/en/forum/174961/page22 (die iHull() Funktion), um zu sehen, wie Arrays in solchen Fällen verwendet werden müssen

 

Bitte jemand machen dies zu zeichnen Linien in der Subwindow.

Ich habe es versucht und kann es immer noch nicht dazu bringen, die Linien zu zeichnen.

Bitte um Hilfe.

 
luffy:
Bitte jemand, der dies macht, um Linien im Unterfenster zu zeichnen.

Ich habe es versucht und kann die Linien immer noch nicht zeichnen

Bitte helfen Sie.

luffy

Da du versuchst, diese Arrays als Puffer zu verwenden, deklariere sie im init-Abschnitt alle als Puffer (es gibt im neuen Metatrader 4 kein 8-Puffer-Limit mehr) und es wird funktionieren

Das ist bei weitem die einfachste Lösung

 

Gibt es eine Möglichkeit, wie ich den Code auf einen einzigen Computer beschränken kann?

 
apprentice coder:
Gibt es eine Möglichkeit, den Code auf einen einzigen Computer zu beschränken?

Sie können dies tun, indem Sie sich auf die Seriennummer der C: Paritition beschränken (mit der Windows API-Funktion GetVolumeInformation())

Das Format der Funktion ist das folgende:

BOOL WINAPI GetVolumeInformation(

_In_opt_ LPCTSTR lpRootPathName,

_Out_opt_ LPTSTR lpVolumeNameBuffer,

_In_ DWORD nVolumeNameSize,

_Aus_opt_ LPDWORD lpVolumeSerialNumber,

_Out_opt_ LPDWORD lpMaximumComponentLength,

_Aus_opt_ LPDWORD lpFileSystemFlags,

_Aus_opt_ LPTSTR lpFileSystemNameBuffer,

_In_ DWORD nFileSystemNameSize

);

Sie befindet sich in kernel32.dll. Aber wenn der Benutzer seine C:-Partition formatiert, müssen Sie den Code ebenfalls aktualisieren

 
mladen:
Sie könnten das tun, indem Sie sich auf C: paritition serial number beschränken (mit GetVolumeInformation() windows API function)

Das Format der Funktion ist wie folgt:

Sie befindet sich in kernel32.dll. Aber wenn der Benutzer seine C: Partition formatiert, müssen Sie den Code auch aktualisieren

Danke

Ich werde es versuchen

 
mladen:
Sie könnten das tun, indem Sie die Seriennummer der Paritition auf C: beschränken (mit der Windows API-Funktion GetVolumeInformation())

Das Format der Funktion ist das folgende:

Sie befindet sich in kernel32.dll. Aber wenn der Benutzer seine C:-Partition formatiert, müssen Sie den Code ebenfalls aktualisieren

Leider reicht diese Funktion allein nicht aus. Abgesehen davon, dass ich einige Kunden mit identischer Laufwerksserie sehe, ist die schlimmste Situation die mit Windows-Emulatoren, die auf Macs und Linux laufen, die immer Null für diese Serie zurückgeben. Viele Benutzer verwenden sie.

 
Ovo:
Leider reicht diese Funktion allein nicht aus. Abgesehen davon, dass ich einige Kunden mit identischer Laufwerksserie sehe, ist die schlimmste Situation die mit Windows-Emulatoren, die auf Macs und Linux laufen, die immer Null für diese Serie zurückgeben. Viele Benutzer verwenden sie.

Ich wusste nichts von Emulatoren

Dann scheint der Dongle eine Lösung zu sein, aber ich habe zu viele Dongles geknackt gesehen, also ...

 
mladen:
Wusste nicht, über Emulatoren Dann der Dongle scheint als eine Lösung, aber ich habe gesehen, zu viele Dongles geknackt, so ...

Tatsächlich gibt es mehrere Emulatoren, und nur einige von ihnen geben Null zurück (z.B. wine)

Ich habe meine Statistiken überprüft - 290 von 9000 MT4-Datenbankregistrierungen hatten die Seriennummer gleich Null, also etwa 3%. Im Allgemeinen implementieren die Emulatoren HW-bezogene Funktionen nicht korrekt, und einige Aufrufe frieren sogar das Terminal ein, wenn sie aufgerufen werden. Ich bin mir also nicht sicher, ob der Dongle dieses Problem zuverlässig lösen kann. Bisher habe ich noch keine Lösung gefunden, die auf allen Emulatoren funktioniert.