Welcome to NexusFi: the best trading community on the planet, with over 150,000 members Sign Up Now for Free
Genuine reviews from real traders, not fake reviews from stealth vendors
Quality education from leading professional traders
We are a friendly, helpful, and positive community
We do not tolerate rude behavior, trolling, or vendors advertising in posts
We are here to help, just let us know what you need
You'll need to register in order to view the content of the threads and start contributing to our community. It's free for basic access, or support us by becoming an Elite Member -- see if you qualify for a discount below.
-- Big Mike, Site Administrator
(If you already have an account, login at the top of the page)
Welche Auswirkung haben diese DLL Files und wie funktionieren sie genau?
Konkrete Fragen:
a) Wird der Code jedes Mal bei Ninjatrader Initialisierung vom Server geladen?
b) Koennen sie andere auf dem PC vorhandenen Indikatoren (inkl. Code) extern senden?
Danke im Voraus.
Can you help answer these questions from other members on NexusFi?
Eine DLL-Datei ist eine bereits kompilierte und damit lauffähige Datei. Ich werde es einmal am Beispiel eines Indikators erörtern.
Open Source Indikator
Ein offener Indikator kommt bei NinjaTrader als .cs Datei daher. Der Code kann mit einem Editor aufgerufen werden. Du kannst also genau prüfen, was der Indikator im einzelnen macht. Wenn Du den Zip File via File -> Utilities -> Import NinjaScript nach NinjaTrader importierst, dann
- wird der Indikator in das Verzeichnis Dokumente -> NinjaTrader 7 -> bin -> Custom -> Indicator kopiert
- und anschließend (zusammen mit allen anderen Indikatoren, Strategien und benötigten Dateien) kompiliert
Anstelle des Importvorgangs kann man auch einfach die .cs-Datei in das oben genannte Verzeichnis kopieren und dann mit dem Editor irgendeinen Indikator öffnen und kompilieren. Das geht deshalb, weil NinjaTrader beim Kompilieren immer alle Indikatoren gleichzeitig initialisiert.
Der Vorteil des Open Source Indikators ist, dass man genau weiß was der macht.
Lauffähige DLL-Datei
Man kann aber anstelle des Source Codes auch gleich eine kompilierte lauffähige Datei in NinjaTrader einbringen. In diesem Fall wird die DLL-Datei neben der bereits vorhandenen NinjaTrader.Custom.dll im Verzeichnis Dokumente -> NinjaTrader 7 -> bin -> Custom abgelegt. Zusätzlich muss dann noch auf diese DLL-Datei verwiesen werden, was durch eine sogenannte "Reference" erfolgt. Beim Import einer DLL-Datei wird neben dem Kopieren der Datei auch diese Referenz erzeugt.
Bei einer lauffähigen DLL-Datei weiß man nicht, was das Programm eigentlich macht. Der Code ist nicht-öffentlich um das Urheberrecht zu schützen und zu verhindern, dass Raubkopien verbreitet werden. Zusätzlich werden bei der Erzeugung von DLL-Dateien auch Tools einesetzt die das Dekompilieren (Reverse Engineering des Source Code) verhindern oder erschweren.
Jetzt zu Deinen Fragen: Bei einer DLL weiß man im Grunde nicht, was genau sie tut. Sie kann theoretisch chinesische Server anwählen, der NSA Grußbotschaften schicken oder Viren freisetzen. Daher sollte man nur DLLs verwenden, deren Ursprung genau bekannt ist. Wenn es sich um eine lizenzierte Software handelt, dann wird die DLL auch eine Lizenzabfrage an die NinjaTrader Lizenzserver generieren.
Antworten
a) Der Code wird nicht jedes Mal vom Server geladen, sondern liegt in der Regel in lauffähiger Form vor. Allerdings wird bei jedem Neustart von NinjaTrader eine Lizenzabfrage generiert, das heißt es wird überprüft, ob für den PC auf dem der Indikator betrieben wird auf einem der beiden NinjaTrader Lizenzserver eine gültige Lizenz vorliegt.
b) Es wäre technisch machbar über eine DLL andere Indikatoren extern zu senden. Du solltest daher nur DLLs einsetzen, deren Ursprung bekannt ist, und die von Firmen kommen, deren Geschäftsmodell Du nachvollziehen kannst. Für jedes auf Deinem Computer installierte Programm trifft diese Aussage auch zu. Alle unter Windows lauffähigen Programme sind letztendlich DLLs.
Danke fuer deine ausfuehrliche Antwort. Dachte ich mir, dass es eine ernsthafte Angelegenheit ist.
Habe allerdings weitere Fragen:
c) Ich nehme an, dass die Bedrohung der dll Indikatoren erst wirksam wird, wenn
I) der Indikator erstmalig importiert wird
II) der Indikator im Chart aktiv ist
also sozusagen NICHT, wenn es nur im NT Verzeichnis liegt - stimmt das?
d) Ausgehend vom Grundsatz, dass es sich um einen rein dll Indikator handelt, also keine Virusfreisetzung - sind die dll Dateien tatsaechlich in der Lage (neben diesen Lizenzabfragen, welche ich annehme, dass es ueber eine einfache HTTP GET Methode erfolgt) andere Indikatoren (vollstaendige Dateien) an den Server zu senden, OHNE dass das Antivirusprogramm es merkt? Ich kenne mich mit C++ sehr wenig aus, allerdings muessen sie nicht eine kompilierte CGI Serverumgebung oder client http object library (forms), usw. haben um eine POST Methode ausfuehren zu koennen?
Es ist nicht nötig, dass der Indikator im Chart aktiv ist. Wenn die DLL-Datei importiert wurde, also im entsprechenden Verzeichnis liegt und die References gesetzt wurden, ist der Indikator oder die Strategie praktisch schon aktiv. Zumindest der Code in der Intialize-Section von Indikator oder Strategie wird schon beim Start von NinjaTrader ausgeführt. Sonst könnte man ja einen Indikator gar nicht per Indikator-Box dem Chart hinzufügen. Man könnte also einen Virus in der Initialize Section verstecken.
Einige kommerzielle Indikatoren laden Daten von Servern herunter, also sollte es auch ein leichtes sein, Daten zu versenden oder von der Festplatte Deines PCs zu kopieren.