Robostroy - írja a kereskedési robot c #
A közelmúltban egyre gyakrabban hallok sok kereskedő alkalmazás, ami nagyon jó tudni, hogy egy programozási nyelv, és hogy írjon robotok. Sokan próbálják nehéz tanulmányozni divat az utóbbi időben a C # nyelvet. Azonban egy kezdő a semmiből, hogy írjon minden érdemleges alkalmazás lesz elég nehéz. Ebben a cikkben megpróbálom, hogy minimális ismerete programozási nyelv, hogy bemutassák a logika az épület az alkalmazás, design és kezdjen el kereskedni robot QUIK terminál.
A korai nézd milyen források kerülnek bemutatásra ebben a pillanatban, a fejlesztési robotok és megteremti az automatizált algoritmikus kereskedési rendszerek:
1) Eszközök ágyazott a terminál
- Qpile - beépített nyelv a legnépszerűbb kereskedelmi terminál Kártyamásol, a nyelv meglehetősen egyszerű. Azonban ez az egyszerűség mellett nyilvánvaló előnye a tüdő fejlődését, vannak nyilvánvaló hátránya korlátozott funkcionalitással, összetettsége hibakeresés.
- LUA - egy másik egyszerű nyelvet QUIK terminál. Ez több funkciót Qpile. Azonban az egyre növekvő népszerűsége még nem szerzett. A kód maga fut közvetlenül a QUIK terminál.
2) Külső doboz termékek - nagyon hasonló funkciókat: a lehetőséget, vizsgálat történelmi adatok, az írás a kereskedési rendszerek a nyelv a .NET (általában a C #), az integráció a kereskedelmi terminál.
3) Külső programok függetlenül fejlődött. Ebben az esetben, akkor bármilyen programozási nyelv, amely a személy tudja. Néhány évvel ezelőtt volt egy népszerű csomó Kártyamásol terminál és Excel a robot, Visual Basic nyelven íródott. Abban a pillanatban, akkor elég erős és rugalmas könyvtár írásához robotok Stock #, de nem a programozó nagyon nehéz lesz megérteni.
A fejlesztés a robot „a semmiből” meghatározása egy listát a feladatok:
1) végrehajtása ból származó import QUIK terminál programunkban
2) kereskedési algoritmus programozása
3) létrehozása mechanizmus kéréseket küldjön elvégzésére kereskedelmi műveletek, a terminál
Ez a lista lehet osztani több al-elem, amely azt fogja megfogalmazni megvalósítása során ezeket a lépéseket.
Mielőtt kezdik felismerni az import adatokat a terminál QUIK a programunkba, emlékszem a programozás alapjaival. Ne kapcsolja ki a cikket egy másik unalmas tankönyv programozás, leírja az alapvető tervezési nyelvet, amit csak fel kell fejleszteni a programot.
C #, kétféleképpen építésére kliens alkalmazások interfészek. Az első -, hogy egy Windows Forms - technológiai épület alkalmazások, amely már több mint 10 éve, használják a design a vizuális interfész. Második - Windows Presentation Foundation (WPF) - egy egészen új rendszert építeni egy interfész képes létrehozni tetszetős elemeit használó 3D-grafika használ MVC-megközelítés azonban többre van szükség, mint a számítógép erőforrásait WinForms. Mivel a Windows Forms könnyebb és kevésbé erőforrás igényes fogjuk használni ezt a technológiát.
Ábra. 1. létrehozása Windows Forms alkalmazás
Megalakulása után, azt látjuk, formák - ez a vizuális elemek és a könyvtárakon elérhető lesz, beleértve a kódot fájlt (2. ábra, 3.). Hogy megy az alkalmazás kódját, meg kell nyomni az F7 billentyűt.
Ábra. 3. Az alkalmazás kódját
Ha megnézzük a kódot, amely azért jött létre a Visual Studio, azt látjuk, hogy a platform mi automatikusan létrehozott egy Form objektum osztály. Osztály - logikus szerkezet lehetővé teszi, hogy saját egyéni típusok csoportosításával változók más típusú, módszerek, és az eseményeket. Az osztály olyan, mint egy rajz. Ez határozza meg, hogy milyen típusú adatok és a viselkedést. Osztály és az objektum - ezek különböző dolog, bár esetenként egymással felcserélhetők. Az osztály határozza meg, hogy milyen típusú objektum, de nem maga a tárgy. Object - egy adott anyag alapján az osztályban, és néha egy példányát.
Azt is meg kell emlékezni, hogy ez változó. A deklaráljuk az alábbiak szerint:
int i = 10; // egész változó
húr st = "text"; // változó string típusú
bool flag = true; // logikai típusú változó mindössze értékek, igaz vagy hamis
A változó egy szám vagy egy karakterlánc vagy objektumot. A tárolt érték változó lehet változtatni, de a név ugyanaz marad.
Hasonlóképpen kijelölt és tömbök, hogy képviselje egy adathalmaz az azonos típusú.
Mielőtt elkezdené írni a kódot importálni az adatokat, meghatározza, hogy milyen adatokat kell importálni Kártyamásol a programunkba. Egy egyszerűsített változata nekünk lesz a legfontosabb történelmi és a jelenlegi árak gyertyák forgalmazott eszköz.
Ábra. 4. Töltse portfolió
Ábra. 5. megnyitása és elindítása portfolió
6. ábra. Az eredmény a nyitás a portfolió
Most gondoljon, hogyan juthat az adatokat a terminál QUIK. Kártyamásol adat nyerhető három módja van:
1) export adatok ODBC-n keresztül
2) export adatokat DDE
3) hogy az adatokat közvetlenül a memória
A harmadik módszer nagyon munkaigényes programozás, bár ez a leggyorsabb, hogy az adatokat. Adat kimenet keresztül ODBC, a fejlesztők Quik írási lassabb kimenethez DDE. Ezért fogjuk használni a legegyszerűbb módja - a visszavonását DDE.
Konfigurálása azonnal QUIK adatokat ad a kimenetére (ábra. 7). Ehhez válassza ki a kívánt táblát, majd a menü Adat export - Következtetés a DDE. DDE szerver, meg kell adnia a nevét «DDEServer». Ennek munkafüzet meg kell határozni a következőket:
1) a tábla történelmi gyertyák - «gyertyák»
2) az asztalra idézetek és eszközök - «idézetek»
3) alkalmazások az asztalra - «megrendelésre»
Ne felejtsük el, hogy állítsa be a checkbox „Display a Ctrl + Shift + L».
Ábra. 7. konfigurálása DDE kimeneti tábla
Ennek eredményeként QUIK ablak jelenik meg az alábbiak szerint:
Importálásához a DDE, szükségünk van:
1) Az osztály XLTable valósítja hozza az adatokat az Excel formátumban a normál nézet (az összes szükséges fájlt a melléképületben a cikkhez)
2) NDde.dll könyvtár létrehozásához DDE Server
Ahhoz, hogy hozzá egy dinamikus könyvtár, amely tartalmazza a szükséges készlet jellemzői a mi alkalmazás, akkor válassza ki az „Add a link” a Solution Explorerben, és nyissa meg a fájlt NDde.dll (4.).
Ábra. 9. DLL Import
Mi lesz csoportját alkotják együttműködni a DDE szerver:
osztály MyDDEServer. DdeServer
nyilvános MyDDEServer (string szolgáltatás). bázis (szolgáltatás)
Ebben az osztályban a minimális készletét funkciók kell megadni:
1) Server Regisztráció
2) szerver Kilépés
3) kiváltó esemény időzítő új adatok fogadása
4) feldolgozásának módja a kapott adatokat
Hozzáadás a tárgy alakja, amely az események (5.).
Ábra. 10. A gombok formájában
Most hozzá a „Start” Esemény kattintva az egér dupla kattintással a gomb a tervező és hozzá a kódot futtatni a DDE szerver:
private void buttonRunDDEServer_Click (tárgy feladó, EventArgs e)
szerver = új MyDDEServer ( "DDEServer"); // Létrehozunk egy objektumot DDE szerver
server.Register (); // regisztrálni
Ebben az esetben hoztunk létre MyDDEServer objektumot, majd hívja a módszer az objektum Register (). Az osztály konstruktor veszi egy érték - egy string változót, amely utal a neve a mi szerver. A végrehajtás MyDDEServer osztály konstruktor, akkor használja az időzítőt, amely feladata lesz értesítést, ha új adat:
System.Timers.Timer _Timer = új System.Timers.Timer ();
nyilvános MyDDEServer (string szolgáltatás). bázis (szolgáltatás)
_Timer.Elapsed + = this.OnTimerElapsed; // feliratkozás elfogadására vonatkozó adatok esemény
_Timer.Interval = 100; // Az időzítő intervallum ms
Nézzük egy eljárást adatok segítségével DDE:
protected override PokeResult OnPoke (DdeConversation beszélgetés, string elem byte [] adatai, int formátum)
XLTable táblázatban = új XLTable (adatok);
// Az adatok és címek asztalok
dupla [,] impdata = új dupla [table.Rows, table.Columns];
string [,] imptitles = new string [table.Rows, table.Columns];
// átalakítani az adatok tisztán látható
XLTable.BytesToMatrix (adatok, Ref impdata, ref imptitles);