Jump to content
Co nového? Mé kurzy
Komunita:
Diskuze Sledované příspěvky Žebříčky

Ninja Trader - programování (strategie)


Jezinka

Doporučené příspěvky

dobrý večer,

měl bych prosbu týkající se úpravy indikátoru "Auto Trend Line". Mohl bych poprosit zkušenější programátory, zda by šlo upravit tento indikátor a to tak, aby trendové linky, které se automaticky vykreslí, zůstaly a nemizely, když se vykreslí nové? Zkrátka aby, to co se vykreslí, zůstalo v grafu. Zkoušel jsem pár zásahů do indikátoru, ale bohužel bezvýsledně.

děkuji.
Zdeněk

Link to comment
Sdílet pomocí služby

  • Odpovědí 718
  • Vytvořeno
  • Poslední

Nejaktivnější diskutující

Nejaktivnější diskutující

Publikované obrázky

dobrý večer,
je zapotřebí změniť jednoznačný identifikátor objetku, který je vykreseln.
A to tak, že si deklarujete novou paměťovou proměnou, třeba číselnou, která se inkrementuje po každém vykreslení linky a bude použita jako ID linky, tudíž ID linek bude pokaždé jiné..

private int _id;


{ //tady se vykresluje linka..

DrawLine("id"+_id, ...ostatní atributy);
_id++;

}


Marek Lorenc.

Link to comment
Sdílet pomocí služby

to Zdeněk:

ano, to je proměná - místo v operační paměti určené pro dočasné odkládání hodnot různých datových typů a struktur.
Když upravujete ten indikátor přímo od NinjaTraderu tak tam jsou proměné (Variables) uzavřené do regionu Variables.
To jsou globální proměné,.. protože kdyby jste to vložili do samotné funkce OnBarUpdate (jako lokální proměnou, která je tedy viditelná pouze zevnitř této funkce), tak by se pokaždém novém ticku, baru, znovu alokovala paměť a deklarovala proměná na počáteční hodnotě, takže by její inkrementace byla bezvýsledná.

S pozdravem,
Marek Lorenc.

Link to comment
Sdílet pomocí služby

to Zdeněk,

pardon, zapoměl jsem se vyjádřit jěšte k jedné věci:

"A místo toho "id" dám číslo, třeba 1?"

Ne, pro deklaraci proměné bude kód vypadat takto:
private int _id = 1;
Místo jedničky tam můžete klidně dát i nulu anebo cokoliv jiné.
Protože vlastně vaše id pro kreslený objekt potom bude konečná množina, která bude vypadat:

id0
id1
id2
id3
...

takže každý její další člen je jiný, než všichni jeho předchůdci, a toto mu zaručuje jeho unikátnost.
Ovšem datový typ integer je omezený - dovolená velikost je určená procesorem. 32bitový procesor Vám alokuje myslím 2byte pro číslo, což znamená něco kolem 65tisíc čísel. Rozdělených osou na kladné a záporné to tedy znamená 32tisic pro kladne a 32tisic pro zaporne. Po přetečení datového typu se ale stejně přejde na záporná, takže i s inkrementem by jste využil všech 65tisic čísel... ale já teď nevím přesně, zda je int pro 32bit procesor 2byte anebo ne náhodou 4.. ale to je tuším až long. (pokud to chcete vědět přesně tak určitě naleznete v dokumentaci MSDNA pro C#)
Takže pokud si plánujete tam mět těch čárek zakreslených najednou v celém chartu víc než 65tisic. tak bych jako jednoznačný identifikátor doporučil kombinaci sekvence čísel a aktuálního datumu YY.MM.DD.cislo zapsany ve Stringu.

Nevím jak moc vidíte do programování a zvlášte pak do toho pro obchodní software, takže si teď nejsem jist, zda sem Vás zbytečne nezahltil informacemi, které budete chtít použít.

S pozdravem,
Marek Lorenc.

Link to comment
Sdílet pomocí služby

to Marek Lorenc:

právě že do programování moc nevidím, řekl bych, že vůbec :-)

takže jestli jsem to správně pochopil, tak jediný, s čím já ve zdroji pracuju, je region "variables" kam přidám nový řádek
"private int id = 0;". Je potřeba ještě za to něco přidat?

díky za pomoc (tu)
Zdeněk

Link to comment
Sdílet pomocí služby

to Maxx:

>> takže jestli jsem to správně pochopil, tak jediný, s čím já ve zdroji pracuju, je region "variables"
>> kam přidám nový řádek "private int id = 0;". Je potřeba ještě za to něco přidat?

ano, jěšte v metodě OnBarUpdate() najděte funkci, která vykresluje ty linky, které chcete aby se nepřekreslovali a toto id přidejte k idčku linky..

Najdete funkci něco jako DrawLine("line", ..., ... ,... ...);
a uděláte s ní DrawLine("line"+id, ..., ... ,... ...);

a potom, hned vedle této funkce napíšete id++;

takže to bude vypadat takhle:
DrawLine("line"+id, ..., ... ,... ...); id++;

S pozdravem,
Marek Lorenc.

Link to comment
Sdílet pomocí služby

To Marek Lorenc:

díky za detailnější popis. Z tohoto mi vzešel řádek:

private int id = 0; // DrawLine("UpTrendLine"+id, upTrendStartBarsAgo, startBarPrice, upTrendEndBarsAgo, endBarPrice, UpTrendColor, DashStyle.Solid, LineWidth); id++;

Toto jsem zkoušel aplikovat, ale bohužel se nic nezměnilo, linky stále mizí a zůstává pouze aktuální linka.

Mohl bych Vás poprosit o kontrolu, zda výše uvedná věta odpovídá Vašemu popisu?

Protože se vykreslují uptrendové linky i downtrendové linky, je potřeba přidat ještě jeden řádek značící vykreslování downtrendové linky nebo stačí napsat "line"?

Ještě jednou díky za Vaši trpělivost a pomoc. (tu)
Zdeněk

Link to comment
Sdílet pomocí služby

to Maxx:

no tak jsem se na to díval, byla to opravdu jednoduchá úprava, hodil jsem vám to na rapidshare.
rapidshare.com/files/237972715/AutoTrendLineEDITED.zip.html
nevím, kam jinam bych Vám to mohl uploadovat a přitom bych nedělal reklamu.. :)

S pozdravem,
Marek Lorenc.

P.S.: Upravil jsem to jěšte tak, že ty linky již nejsou nekonečné, ale jsou to konečné vektory. Aby se v tom dalo vyznat a nebyla z toho čmáranice ;)

Link to comment
Sdílet pomocí služby

Marek Lorenc:

prosím, přestaňte vkládat do příspěvků vaše kontaktní údaje..diskuse není inzertní prostor, kde můžete získávat nové klienty..pokud toto nechcete ani nadále respektovat a nemáte jiný než obchodní zájem pro přispívání do diskuse, pak si, prosím, raději najděte jiný web..

PS. pročtěte si, prosím, pravidla diskuse: viz. www.financnik.cz/komodity/zkusenosti/pravidla-diskuze.html

michal

Link to comment
Sdílet pomocí služby

Dobrý den všem,

napsal jsem včera jeden takový velice jednoduchý ale hezký indikátor, tak se s Vámi o něj podělím, možno na něj najdete nějaké využití..

Stáhnout jej múžete zde uloz.to/1848704/lorenchammer.zip

Pravidla indikátoru, popis:
Když máme svíčku, která má tělo menší (nanejvíš rovné) polovině velikosti celé svíčky, tělo je [bold]zelené[/bold] (tedy zavírací cena je větší než otevírací cena), a toto tělo se nachází v [bold]horní[/bold] polovině svíčky, je označené jako long svíca - zelená šipka.
Naopak, když máme svíčku, která má tělo menší (nanejvíš rovné) polovině velikosti celé svíčky, tělo je [bold]červené[/bold] (tedy zavírací cena je menší než otevírací cena), a toto tělo se nachází v [bold]dolní[/bold] polovině svíčky, je označené jako short svíca - červená šipka.

Našel jsem to kdesi jako nějaký Hammer pattern (přesně si nespomenu), tak jsem to naprogramoval a kouknul jsem se na to, možná vám to někomu něco řekne a možná se to někomu i hodí. Je to zcela jednoduchý indikátor, ale připadal mi užitečný :)

S pozdravem,
Marek Lorenc.

Link to comment
Sdílet pomocí služby


×
×
  • Vytvořit...