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

  1. 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.
  2. 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);

Kapcsolódó cikkek