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

Ahoj Alexiku,

tobe fungovala detekce klavesy nebo mysi? Me to porad nejede. Close cenu zjistis prikazem Close[0], Open cenu zjistis prikazem Open[0]. Jestli to chces kvuli backtestovani tak je rychlejsi hodnoty zapisovat rovnou do nejakeho excelu nez jenom na prejeti mysi.

[bold]protected override void OnBarUpdate() {
if(ToTime(Time[0]) == 153000) {
using(System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\Alexik\Desktop\backtest.csv", true)) {
file.WriteLine(Time[0].ToString("yyyy-MM-dd") + ";" + Time[0].ToString("HH:mm:ss") + ";" + Close[0]);
}
}
}[/bold]

Tento kód ti zapíše do souboru backtest.csv datum, čas a close cenu úsečky a další libovolné hodnoty, které zadáš (mým posledním počinem je metoda na zjišťování MAE MFE od vstupu do trhu, pokud chceš tak ji sem nahraju) avšak pouze v případě že je splněna podmínka (v tomto případě je to první minuta seance, ale můžeš si naprogramovat pomůcku na nejrůznější patterny včetně FinWinu). Bohužel tímto způsobem se dá backtestovat jen čistě mechanicky, protože podmínka je pevně daná, proto jsem chtěl podmínku nahradit stiskem klávesy - dělo by se to samé co teď, ale pouze u mnou vybraných vstupů a nezdržovalo by mě přepisování hodnot do excelu. Pokud se ti to povedlo prosím zkus sem nahrát kód. Dí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

Ahoj JirkoGeorgi,
jo, mne to chodi, hodim Ti sem kod.
Close[0] a obdobne Open[0] je cena posledniho zobrazeneho/zpracovavaneho (napr. pri podmince) Baru ! Ale kdyz prejizdis treba myskou po plose, tak je treba index toho Baru nejak spocitat (zrejme, pokud to teda nevraci nejaka funkce kde podle X souradnice mysky vrati BarIndex - neco jako BarIndexByX).
Ja jsem si prave napsal indikator pro pattern FinWinu a udelal jsem si ukladani techto vyskytu do .csv souboru prakticky stejne jako popisujes, zapisuji k tomu i EMA34 + EMA204, Hi dne a Lo dne apod. Pak jsem to prochazel po jednotlivych zaznamech a rucne dopisoval MFE a MAE.

Ale pokud lze nejak urcit BarIndex podle X souradnice mysky, bylo by to jeste lepsi - napr. 1. click nacti Close, Open + dalsi - 2. click je hodnota MFE - 3. click je MAE + zapis zaznamu do .csv. Tim by backtest byl mnohem rychlejsi.

Pripadne obdobne precist X souradnici mysky a udelat to, co jsem psal napr. na stisk mezerniku.

Mozna uz jsem na dobre stope jak ten BarIndex spocitat. Pokud vim, jak jsou Bary na obrazovce siroke a jak jsou daleko od sebe a vim ze Bar uplne vpravo ma index 0, pak by to melo jit:) Pokud se mi to podari nebo to nekde najdu, tak to sem dam. Nebo nejaka dobra duse to uz vi a poradi:)

Link to comment
Sdílet pomocí služby

Slibeny kod:
.
.
.
using System.Windows.Forms;
.
..
ve variables mam
private ChartControl _chartControl = null;
.
.
.
protected override void OnBarUpdate()
{
if (this.ChartControl != _chartControl) {
if (_chartControl != null) {
_chartControl.ChartPanel.KeyDown -= new KeyEventHandler(OnKeyDown);
}

_chartControl = this.ChartControl;

if (_chartControl != null) {
_chartControl.ChartPanel.KeyDown += new KeyEventHandler(OnKeyDown);
}
}
....
}
.
.
.
public override void Dispose()
{
base.Dispose ();
if (_chartControl != null) {
_chartControl.ChartPanel.KeyDown -= new KeyEventHandler(OnKeyDown);
}
_chartControl = null;
}

.
.
.
private void OnKeyDown(object sender, KeyEventArgs e)
{
Print(e.KeyCode);
}



Ale v C# nejsem moc kovanej, tak nevim, jestli to dobre uvolnuju. Nicmene tohle mi chodi

Link to comment
Sdílet pomocí služby

Ahoj Alexiku,

diky moc za kod. Uz vim proc jsi chtel zjistovat hodnoty baru na prejeti mysi. Co takhle to vubec neresit a proste jet backtest bar po baru tim padem budes mit na pravem okraji obrazovky vzdy usecky s indexem [0] a kdyz kliknes, nebo stisknes klavesu tak se ti zapisi hodnoty? Takhle by ti odpadlo zjistovani hodnot na pozici mysi - vzdy by to byl bar s indexem [0]. MAE MFE jsem taky zapisoval rucne k mechanicky nasbiranym hodnotam, ale napsal jsem si pro to metodu. Neni to nic sloziteho, dlouho jsem na to nemohl prijit, pote jsem zjistil, ze lze zjistovat indexy baru od vstupu nejen nazpet [1], [2], [3] atd., ale i vpřed [-1], [-2], [-3]...

//MAE MFE
vstup = Close[0];
mae = vstup;
mfe = vstup;
index = 1;
stop = 0;
if(Close[0] > Open[0]) { //MAE MFE PRO LONG
while(stop == 0) { //PROJIZDEJ TRH DOKUD PLATI PODMINKA
if((Math.Abs(mae-vstup) >= 1.2) || (Math.Abs(mfe-vstup) >= 4)) {
stop = 1; // ZASTAVI SE POKUD JE MAE VETSI NEZ $120 NEBO MFE VETSI NEZ $400 }
if(mae > Low[(-1)*index]) { //POKUD JE SOUČASNÉ MAE VĚTŠÍ NEŽ LOW NADCHAZEJÍCÍ SVÍČKY ZAPIŠ LOW NADCHÁZEJÍCÍ SVÍČKY
mae = Low[(-1)*index];
}
if(mfe mfe = High[(-1)*index];
}
index ++;
}
} else { //MAE MFE PRO SHORT
while(stop == 0) {
if((Math.Abs(mae-vstup) >= 1.2) || (Math.Abs(mfe-vstup) >= 4)) {
stop = 1;
}
if(mae mae = High[(-1)*index];
}
if(mfe > Low[(-1)*index]) {
mfe = Low[(-1)*index];
}
index ++;
}
}
//ZDE MAM NAPLNENE HODNOTY MAE MFE A MOHU JE ZAPSAT DO SOUBORU, SAMOZREJME SI MUZES HODNOTY NA KTERYCH SE PROJIZDENI ZASTAVI UPRAVIT PODLE VLASTNICH POTREB

Link to comment
Sdílet pomocí služby

No ja jsem nakonec zjistil, ze barIndex = 0 nema Bar "na konci obrazovky" ale posledni bar grafu...a prvni bar grafu ma index = CurrentBar. Cili mi to neslo, tak jak pises. Ja jsem to nakonec behem dneska vyresil a rekl bych, ze to funguje spolehlive. Udelal jsem to tak, ze kdyz stisknes Ctrl+Enter, tak telo indikatoru si zapisuje pozici mysky a ceka az stisknes mezernik. Kdyz ho zmacknes, tak si ulozi index baru a cenu zobrazi na obrazovce pravo dole u grafu (viz obrazek), pak prejedu myskou na bar,kde je ma MFE a zmacknu znova mezernik, pak prejedu na MAE, zase mezernik a ulozi se potrebne informace do souboru - vlastne pak uz co chces, protoze vis indexy. Atd. atd. Po stisku Ctrl+Enter se to zase zneaktivni. Jestli by Te to zajimalo, rad Ti poslu zdrojak. Za Tvuj zdrojak taky moc dekuju, urcite to prubnu ! Muzu se zeptat jakej trh se snazis backtestovat ? Ja si hraju s NQ, ale mam pocit, ze to asi nebude v realu prilis obchodovatelny kvuli nizkemu volume.

14985

Link to comment
Sdílet pomocí služby

Taky dobry zpusob jak si ulehcit prepisovani hodnot do excelu. S trhem Nasdaq nemam zadne zkusenosti, ale obecne zname, ze je to jeden z klidnejsich trhu.
Co se tyce meho backtestovani tak jde vyhradne o trh TF. V srpnu 2010 jsem zacal obchodovat zive, ale po par tydnech se ukazalo, ze muj zcela mechanicky system neni uplne to prave. Pote jsem zacal posuzovat trh vice diskrecne a zjistil jsem, ze je to mnohem efektivnejsi nez ciste mechanicky system a equity se zacala obracet vzhuru. Posledni tri mesice obchoduji v takovem provizoriu, ale kupodivu se mi nedari uplne spatne a na to ze obchoduji zatim v podstate bez planu tak se mi podarilo skoncit v zisku cca $1000 coz povazuji za velmi dobre.
Ted tedy davam dohromady novy plan, ktery je obdobou stareho mechanickeho planu (take pattern 0/v, 1min timeframe atd.), jen uz vim ze zive obchodovani je trochu o necem jinem nez jsem si myslel pri stavbe puvodniho planu. Najednou se clovek zacne v backtestu zamerovat na uplne jine veci. Mnohem mene ted resim vstupy (proste smysluplny 0/v pri slusne volatilite, nejlepe na S/R urovni a to je vse, zadna veda). Nyní beru vstup uz pouze jako zpusob jak se dostat do pozice - to hlavni se odehrava az pote. Pomoci mechanickych indikatoru jsem si velmi rychle a spolehlive ziskal obrovske mnozstvi dat z trhu na zaklade kterych jsem vytvoril mnoho zajimavych studii. Nejvice se ted zameruji na vystupy a risk. To je asi take hlavni vec ve ktere se bude novy plan lisit od stareho. To vsechno uz ale asi patri do jineho vlakna.
Asi nejlepsi bude hodit sem odkaz na hotovy indikator nez cely kod zkopirovat. Rozhodne jsem na tvoji praci zvedavy :)

Link to comment
Sdílet pomocí služby

Tyjo, tak to ja jsem proti Tobe totalni zelenac:) Ale moc by me zajimalo, jakym zpusobem prave obchodujes. Taky jsem se snazil vsemozne najit pro me vyhovujici zpusob vicemene mechanickeho obchodovani a dosel jsem po cca 5ti mesicich prace k zaveru, ze tudy pro me cesta nepovede. Cili presne to same zjisteni jako Ty. Vim, ze je o tom mrak clanku, ale clovek si to proste musi osahat sam a to je podle me nejlepsi cesta. Nerad neco slepe prebiram. Pattern 0/V me taky hodne zajima. Byl bys ochoten mi k tomu rict vic ? Ja bych strasne potreboval jednu vec. Kdybych sem hodil par screenu, kde se 0/V vyskytly, tak by me moc zajimalo a pomohlo, kdyby nekdo zkusenejsi popsal proc ten signal vzit nebo nevzit a samozrejme podle ceho se pak drzet v pozici a dle ceho vystupovat. Nejsem uplne zacatecnik, abych o tom nevedel nic, ale spousta veci mi jasna neni.
Nechci, aby mi nekdo prozradil svou strategii:)), ale spis bych se ptal ja a nekdo by rekl, to je blbost, takhle neuvazuj nebo ano, timhle stylem muzes jit. Kazdemu stejne sedi neco jineho, ale na druhou stranu jsou jisty veci, ktery je treba dodrzet.
Zatim dik.
Alex

Link to comment
Sdílet pomocí služby

ahoj,
měl bych takový jednoduchý dotaz pro vás.
Jak se nastaví denní graf futures kontraktu např pro TFko? Mně se pouze zobrazuje vždy aktuální kontrakt a nevím, jak nastavit např. viditelnou roční historii. Poskytovatele dat mám IB. Když dám kontrakt ##-##, tak se mi nenačte nic.
Předem díky

Link to comment
Sdílet pomocí služby

TomTailor:

Podmínku na MACD napíšeš takhle:

protected override void OnBarUpdate() {
if(MACD(12,26,9).Diff[0] > 0.1) {
//Co se stane po splneni podminky
}
}

Snad jsem ti pomohl...

LordBerry:

V Ninjovi mi denní graf taky nejde zobrazit, tak to řeším tak, že zvolím timeframe 1440 minut (1 den). Funguje to spolehlivě.

Zatím....

Link to comment
Sdílet pomocí služby

TomTailor:

zkus toto:
if ( CrossAbove(MACD(12,26,9).Diff,0,1) && MACD(12,26,9).Diff[0]>=0.1 ) {
.
.
.
}

CrossAbove znamena ze indikator prekracuje od spodu 0. Jednicka na konci znamena vzdalenost. Cili kdyz tam das 5, tak to znamena, ze v poslednich 5ti barech (vzdalenost) prekrocil inidkator 0 (nebo nejakou hodnotu).
Alex

Link to comment
Sdílet pomocí služby

  • 4 týdny později...

Hezký den všem,
chci vyřešit uzavíraní otevřené pozice, včetně SL vlastní strategí. Chci ať to funguje tak, že do grafu kde již mám otevřenou pozici a zadaný SL zadám na určité ceně čekají alert, který po zasažení uzavře otevřenou pozice a zruší SL.
Zkoušel jsem upravit indikátor PriceAlert přidání příkazů ExitLong() a ExitShort() ale toto mi nefunguje.

Tento problém by šlo vyřešit spojením příkazů OCO vazbou, ale toto řešení nelze použit jelikož mám free verzi kde OCO příkazy nejsou povoleny ale hlavně OCO vazba je držena na lokálním PC a případě výpadku by zůstal na burze nazajištěný příkaz.

Děkuji za jakékol nasměrování
Petr

Link to comment
Sdílet pomocí služby


×
×
  • Vytvořit...