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

Ahojte,
mohol by mi prosim niekto skuseny poradit? Snazim sa naprogramovat posunutie SL na BE ak som v otvorenom zisku 50 tickov. Zatial som sa s pomocou supportu Ninjatraderu dostal sem:

protected override void OnBarUpdate()
{
// Resets the stop loss to the original value when all positions are closed
if (Position.MarketPosition == MarketPosition.Flat)
{
SetStopLoss(CalculationMode.Ticks, 22);
}

// If a long position is open, allow for stop loss modification to breakeven
else if (Position.MarketPosition == MarketPosition.Long)
{
// Once the price is greater than entry price+50ticks, set stop loss to breakeven
if (Close[0] > Position.AvgPrice + 50 * TickSize)
{
SetStopLoss(CalculationMode.Price, Position.AvgPrice);
}
}
}

Dosiahol som to, ze stop loss sa sice posunie na BE ale nie pri profite 50*TickSize. Posunie ho kedy chce, respektive neviem podla coho ho posunie na BE, kedze niekedy sa SL posunie na BE aj ked nie je dosiahnuty profit 50*TickSize.

Budem vdacny za akekolvek napady ako to opravit.

Dakujem

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

Skus vyuzit Position.GetProfitLoss(double marketPrice, PerformanceUnit performanceUnit),
marketPrice moze byt Close[0].

Nejak takto:
if( ! mamBENastaveny
&& Position.GetProfitLoss(Close[0], performanceUnit) > {tvoj limit} )
{
SetStopLoss(CalculationMode.Price, {hodnota kde mas BE, a to je +/- par tickov nad/pod otvaracou cenou - podla pozicie});
mamBENastaveny = true;
}

Cize treba vediet (napr. zapamatat si do premennej) na akej cene bol obchod otvoreny aby si vedel, kde mas hodnotu BE.
Premennu mamBENastaveny si treba pri otvoreni pozicie vynulovat.
Je tam nato, aby si BE v ramci jedneho obchodu nenastavoval viackrat.






Link to comment
Sdílet pomocí služby

Diky moc za odpoved BobSk.

Vyskusal som nieco podobne...

// If a long position is open, allow for stop loss modification to breakeven
else if (Position.MarketPosition == MarketPosition.Long)
{
// Once the Profit is greater than 200usd, set stop loss to breakeven
if (!mamBENastaveny && Position.GetProfitLoss(High[0],PerformanceUnit.Currency)>200)
{
SetStopLoss(CalculationMode.Price, Position.AvgPrice);
mamBENastaveny=true;
}
}

Avsak ani to nefunguje, stale si posuva BE ako chce.
Neviem celkom presne ako mam do tohto zakomponovat to mamBEnastaveny, skusal som to aj bez neho, ale je to stale rovnake.
Neviem, kde robim chybu, podla toho co som cital na roznych forach, tak by to malo fungovat, ale nefunguje :S

Link to comment
Sdílet pomocí služby

No ta premenna mamBENastaveny sluzi prave na to, aby si pri jednom obchode nastavil BE prave raz.
Pri otvoreni obchodu treba tuto hodnotu nastavit na false = pretoze pri novom obchode BE nastaveny nemas,
a ked dojde k profitu, tak sa BE nastavi a premenna mamBENastaveny si to zapamata. Cize v jednom obchode SL prikaz "skakat" dalej nemoze.

Link to comment
Sdílet pomocí služby

Dnes jsem si zkoušel a oťukával NT7 a po té, co mi neseděly výsledky backtestu jedné jednoduché strategie v NT a v platformě, kterou jinak používám jsem začal hledat rozdíly a různě upravovat... Přišel jsem na několik znepokojivých věcí. 1. NT nepoužívá nejpřesnější data, co má k dispozici, ale vždy jen timeframe zvolený pro backtest. Když mám například strategii, která na daily grafu zadá limitní vstup a PT+SL se vyplní v rámci dne, tak NT příkazy vyplní náhodně. I Přesto, že minutová data má. Zkusil jsem to řešit použitím více timeframů ve strategii. 2. Po doplnění druhého timeframe (je na to i sample strategie) se naplno ukáže jak chaoticky je řešena simulace příkazů. Výstup se může vyplnit i dříve, než vstup. A cena je zcela mimo graf.

15318

Link to comment
Sdílet pomocí služby

to BobSk alebo ktokolvek iny, kto bude vediet.
Podarilo sa mi naprogramovat posun SL na BE a ked som ho potom chcel pri vyssom zisku zmenit na trailing SL tak som zistil, ze sa to neda.
Skusam teda naprogramovat 2. posun SL, tak aby pri urcitej vyssej hodnote zisku posunul SL z BE napriklad na BE+30ticks.
Nedari sa mi to, tak by som chcel poprosit niekoho ci by nevedel poradit ako priblizne postupovat. Uz som skusil asi vsetko :)
Diky moc

Link to comment
Sdílet pomocí služby

NT7 som tiež predčasom skúšal, ale rýchlo som sa vrátil k 6.5 - nejak ma neoslovil, zakiaľ je to beta, tak to nechám tak, a keď to nebude beta tak počkám asi tak rok, kým sa na NT7 znova pozriem, či už je dokončený. :-)

Asklepios, trailing SL vlastnoručne napísaný už je trošku zložitejší. NT má ale príkaz SetTrailStop, ktorý slúži na tento účel. Skús to s ním - viď dokumentácia. Ale pozor, SetTrailStop sa neznáša so SetStopLoss-om, treba v stratégii použiť buď jeden, alebo druhý.

Link to comment
Sdílet pomocí služby

BobSK
prave tento problem sa snazim vyriesit tym, ze si chcem nastavit aj druhy, pripadne aj treti posun stop lossu pri pouziti SetStopLoss. Zatial som neprisiel na to ako to spravit, ked to napisem do scriptu, tak sa vykona vzdy iba prvy posun na BE a dalsie uz nie. Dufam teda, ze sa to da. Nemas o tom nejake informacie?

Link to comment
Sdílet pomocí služby

Dobrý den všem, tradingu (spíš jeho studiu) se věnuji velice krátce. Velice záhy jsem se vrhnul na backtesty. Musím říct, že to přepisování hodnot do Excelu mě k smrti nebavilo (nerad dělám něco zbytečně). Protože pracuji v banži, požádal jsem svého dvorního programátora (můj syn) o realizaci sběru dat myší. Na obrázku vidíte první verzi. Zbývá dodělat pouze vzhodnocování SL/PT. Není to problém technický (naprogramovat), spíš se zatím neumím rozhodnout jak by to mělo správně fungovat.

15394

Link to comment
Sdílet pomocí služby


×
×
  • Vytvořit...