Subiect: Calculul imprastierii
Vă rugăm să ajutați la scrierea unui script pe LUA, care ar calcula rata medie zilnică pe aceste sau alte valori mobiliare.
Ar trebui să funcționeze în conformitate cu acest algoritm:
1. Stabiliți lista valorilor mobiliare monitorizate. De exemplu, "GAZP, RASP, LKOH, TGKE"
2. Odată ce într-un interval de timp (de exemplu, 10 minute), răspândirea pe formula (ask-bid) * 100 / bid este calculată pe acestea și scrisă într-un fișier.
3. Pe măsură ce valorile se acumulează în fișier (sau o dată la sfârșitul zilei), fiecare lucrare ia în considerare media răspândirii sale și se transmite undeva, de exemplu, la un dosar învecinat.
Aș aprecia cu adevărat orice ajutor!
"Odată ce într-o perioadă de timp (de exemplu, 10 minute), o răspândire se calculează pe ele" - în sensul de interes numai acele valori care au fost 1 timp în aceste 10 minute? și anume doar într-un anumit moment au luat o răspândire și-l amintesc? Sau în toate aceste 10 minute, răspândirea trebuie, de asemenea, medie medie peste toate valorile în general? nu este clar din descriere.
În acest timp, numărarea nu se efectuează.
Odată la fiecare 10 minute, se face o tăietură. Și astfel toată ziua de tranzacționare.
10 minute reprezintă o opțiune, timpul poate fi mărit sau micșorat.
Re: Numararea raspandirii
pentru fiecare hârtie este considerată media răspândirii sale și este produsă undeva, de exemplu, în fișierul următor.
sau în tabelul din coada propriu-zisă.
De asemenea, ar fi frumos să predați acest script pentru a urmări valorile extreme:
-cea mai mare raspandire pentru o zi de tranzactionare
-cea mai mică diferență pentru o zi de tranzacționare.
Re: Numararea raspandirii
Voi pune la dispoziție ceea ce am, voi adăuga și câteva altele mai târziu.
La începutul fișierului constante, ele trebuie stabilite pentru a vă potrivi.
Rezultatele sunt scrise într-un fișier. Deși se presupune că scenariul va funcționa toată ziua, la repornire, va începe să se numere din nou peste tot. După un timp, o voi adăuga astfel încât atunci când începe, va citi fișierul de ieșire și, astfel, va primi datele anterioare pentru această zi.
Limitări și condiții de utilizare:
Hârtia și clasa sunt specificate, dar toate tickerele trebuie să fie diferite;
Ochelarii pentru instrumente care trebuie monitorizați trebuie să fie deschise; dacă Tskan nu este deschis - răspândirea nu este monitorizată și nu este înregistrată;
dacă sticla este goală sau există doar o cerere în ea sau doar oferta - răspândirea pe acest instrument nu este înregistrată.
Salvăm textul în fișierul spread-logger-1.lua și îl executăm. Ieșirea va fi scrisă în fișierul spread-logger-1.lua.log din același director din care este rulat scriptul.
Liniile de fișiere de ieșire sunt salvate în acest format:
Întrebări, sugestii, revendicări - scrieți, nu ezitați.
Re: Numararea raspandirii
Este relevantă posibilitatea unei reporniri corecte a scriptului în interiorul zilei (cu citirea datelor acumulate anterior din fișier)?
Vizualizarea (placa) - este necesară? (în ce formă)
Cu ocazia repornirii, ar fi destul de bine.
Tableta. dacă este posibil. Dar totul este clar din dosar.
Este încă foarte interesant faptul că scenariul a dat valori extreme - cea mai mică și cea mai largă răspândire pentru timpul pe care la urmărit această acțiune.
Și că putea să monitorizeze documentele cu coduri de clasă diferite dintr-un scenariu.
Re: Numararea raspandirii
Reporniți cu citirea din jurnal nu a fost făcută niciodată. Este necesar să se creadă că pentru ETGO este necesar, dacă datele suficiente sunt suficiente.
Pentru repornirea corectă din informațiile de jurnal este necesară:
1) timpul de înregistrare a răspândirii (astfel încât să puteți prinde periodicitatea, dacă aceasta este critică)
2) Instrumentul și clasa de bilete
3) Numărul de spread-uri salvate (câte înregistrări au fost înregistrate pentru acest instrument)
4) Media curentă
Dacă toate aceste date vă împiedică să utilizați datele pentru prelucrare ulterioară, atunci este posibil să faceți acest lucru: un fișier log (să spunem tehnic) este scris pentru a face posibilă reluarea, al doilea a fost scris într-un format convenabil pentru dvs.
Re: Numararea raspandirii
-- local qt = getQuoteLevel2 (clasa, sec) - eliminați apelul la sticlă
-- if ((qt.bid_count + 0> 0) și (qt.offer_count + 0> 0)), apoi - îndepărtați prin condiții
-- licitație locală = qt.bid [qt.bid_count + 0] .price - eliminați primirea ofertei din sticlă
-- oferta locală = qt.offer [1] .price - eliminați primirea turtă de argint din sticlă
oferta locală = getParamEx (clasa, sec, "suma licitată")
oferta locala = getParamEx (clasa, sec, "oferta")
locale p_spread = (ofertă-ofertă / ofertă) * 100
cheie locală = sec. "". clasă
elem local = se răspândește [cheie]
dacă elem == atunci nu
se distribuie [key] =
elem = se împrăștie [cheie]
altfel
elem.Spread = p_spread
elem.Avr = (elem.Avr * elem.Count + p_spread) / (elem.Count + 1)
elem.Count = elem.Count + 1
dacă elem.Min> p_spread apoi elem.Min = p_spread end
dacă elem.Max
fișier: scrieți ("AVR_" sec. "=". tostring (elem.Avr). "". "\ n")
fișier: scrie ("[". tostring (elem.Count) "]" "sec.": "class." = "tostring (p_spread) = ". tostring (elem.Min)." max = ". tostring (elem.Max)".
-- sfârșitul - eliminați verificarea finală a stării
Re: Numararea raspandirii
Instrumentele mele sunt setate în această ordine:
SEC ["APTK"] = "EQNL"
SEC ["AVAZP"] = "EQNL"
SEC ["BSPB"] = "EQNL"
SEC ["GAZP"] = "EQNE"
SEC ["HYDR"] = "EQBR"
SEC ["KMAZ"] = "EQBS"
SEC ["LKOH"] = "EQBR"
SEC ["LSNG"] = "EQNL"
SEC ["MAGN"] = "EQNL"
SEC ["MRKK"] = "EQNL"
SEC ["MSRS"] = "EQBR"
SEC ["OGKB"] = "EQBR"
SEC ["OPIN"] = "EQNL"
SEC ["RASP"] = "EQNL"
SEC ["RTKM"] = "EQBR"
SEC ["SBER"] = "EQBR"
SEC ["SNGS"] = "EQNL"
SEC ["SNGSP"] = "EQNL"
SEC ["SYNG"] = "EQNL"
SEC ["TGKA"] = "EQBR"
SEC ["TGKE"] = "EQNL"
SEC ["TGKF"] = "EQNL"
SEC ["TRMK"] = "EQBR"
SEC ["URKA"] = "EQBR"
SEC ["VTBR"] = "EQNL"
SEC ["VZRZ"] = "EQBS"
De ce se descurcă în dosarul final?
AVR_APTK = 0.2068627406292
AVR_OGKB = 0.16652977902568
AVR_VZRZ = 0.32100360912737
AVR_RASP = 0.11919033845793
AVR_URKA = 0,058398588662547
AVR_LKOH = 0,024594674588463
AVR_AVAZP = 0.27888853122047
AVR_SNGSP = 0,05923011085541
AVR_LSNG = 0.70180301215612
AVR_TGKE = 0.53887543384184
AVR_TGKA = 0.32988383264019
AVR_TRMK = 0.44494026965039
AVR_MSRS = 0.86604488170569
AVR_TGKF = 0.5589009518343
AVR_OPIN = 1.5116186775737
AVR_MAGN = 0,068115489441876
AVR_HYDR = 0,029428833146793
AVR_VTBR = 0.027005381309969
AVR_SYNG = 0.8848156772472
AVR_RTKM = 0.066976460702493
AVR_SBER = 0.013652757755115
AVR_BSPB = 0.14493702671554
AVR_SNGS = 0.049061792735469
AVR_KMAZ = 0.34151044356869
AVR_GAZP = -0.00053292169463214
Cum sa-i faca sa mearga in ordinea in care i-am intrebat?