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

Programování v EasyLanguage


goody

Doporučené příspěvky

V tom případě máte problém s logikou, zdá se mi, že používáte Entryprice, přestrože pozice není definována a to bude dělat problém, zkuste něco takového (přidal jsem nákupní příkaz):

Inputs: Pocet_akcii(100),PT_procent(2),SL_procent(2);
Variables: SL(0),PT(0);

If H > H[1] and MarketPosition = 0 then begin
buy Pocet_akcii shares next bar market;
SL = SL_procent/100 * Pocet_akcii * C;
PT = PT_procent/100 * Pocet_akcii * C;
end;

SetStopLoss(SL);
SetProfitTarget(PT);

Tj. hodnotu SL a PT si určete přímo v baru, kde jdete na trh od daného close. Pokud jste mimo pozici, můžete si hodnoty vynulovat, ale je to zbytečné. Doporučuji si kontrolovat hodnoty proměnných pomocí Commentary, dobrá pomůcka, pokud nemůžete přijít na chybu, stačí dát na konec kódu toto:


if AtCommentaryBar then
Commentary(
"SL = ", SL, NewLine,
"PT = ", PT, NewLine,
);

Poté si kliknete v toolbaru na ikonku commentary a kliknete myší na bar, kde chcete zjistit hodnoty proměnných.

Link to comment
Sdílet pomocí služby

Honza K.:
Díky moc, už tomu rozumím. Že tomu zatím moc nerozumím a mám se ještě co učit ;-).
Takhle mi ten kód taky chodí.
Kód pro komentář a zobrazení proměnných je určitě šikovný. Díky.

Ještě se zeptám na pár detailů:
Moje myšlenka byla kód rozdělovat na samostatný vstupní signál a samostatný výstupní signál. Ale teď mi příjde, že je lepší psát vždy rovnou strategii do jednoho kódu pro vstup+výstup. Jak to řešíte vy??

Když rozeberu tenhle kód a budu chtít mít přesto výstupní signál v samostatném kódu, tak mě napadá takovéto řešení:
Vidíte na něm nějaká úskalí??
Inputs: Pocet_akcii(100),PT_procent(2),SL_procent(2);
Variables: SL(0),PT(0);

SL = SL_procent/100 * Pocet_akcii * O[BarsSinceEntry];
PT = PT_procent/100 * Pocet_akcii * O[BarsSinceEntry];

SetStopLoss(SL);
SetProfitTarget(PT);

Ještě jednou díky za řešení a ochotu ;-)
Renda

Link to comment
Sdílet pomocí služby

O[BarsSinceEntry] bych vám nedoporučoval používat, dostáváte se do podobného problému jako při Entryprice, musíte si ověřit, že jste v pozici, jinak se vám bude stop a PT měnit podle aktuálního baru.
Osobně preferuji mít kód pohromadě, tj. vstupy i výstupy jsou řešeny v jednom kódu, ušetříte si tak hodně "omáčky" kolem vstupů a výstupů. Nicméně v rámci kódu buduju "logické celky" tak, abych části mohl lehce najít, případně použít jinde.

Link to comment
Sdílet pomocí služby

  • 3 týdny později...

Zdravím,
opět chci požádat o radu.
Mám kód napsaný pro timeframe 3min. V kódu potřebuji pracovat i s klouz. průměrem 20day. Jak ho tam dostat?

Tento zápis nefunguje, nelíbí se mu tam fce=CloseD:
Variables: MA20(0);
MA20 = XAverage(CloseD, 20);

Napadá mě vložit do grafu 2. datovou řadu, kde nastavím timeframe na 1day, a pak bych napsal toto:
MA20 = XAverage(Close Data(2), 20);

Dotaz zní, jestli lze vložit MA20 (day) jiným zápisem bez použití vložení 2.datové řady ???
Díky moc za info. Soft MCH8.
Renda

Link to comment
Sdílet pomocí služby

Díky moc za rychlé odpovědi.
Já to právě chtěl pokud možno bez použití DATA2. Pokud to vůbec lze. Mám to v grafu, kde už mám DATA3 a musel bych přidat DATA4 - není to moc přehledné ani praktické.
Když pracuju na stejném TF a vyhodnocuju 3 denní High, Low zpět bez použití DATA2, tak se to dalo obejít takto:
Variables: High3D(0);
High3D = MaxList(HighD(1),HighD(2),HighD(3));

napadá mě toto, když to bude jednoduchý MA:
MA20 = CloseD(1)+CloseD(2)+CloseD(3)+CloseD(4)+................+CloseD(20) / 20;

tohle už mi, ale příjde dost krkolomný...
Rád bych využil fci CloseD(n), ale nevím jak...
Renda

Link to comment
Sdílet pomocí služby

Mě přijde daleko jednodušší mít data4 než se patlat složitě s tím, co chcete pomocí closeD, je to poměrně neefektivní funkce. Možná by stálo za to zamyslet se, jestli potřebujete 4 timeframes v grafech, netuším, co všechno využíváte pro strategii, ale řada věcí jde určitě zjednodušit.

Link to comment
Sdílet pomocí služby

tomnes: díky, s Arrays nemám zkušenosti, podívám se i na to...

Honza K.: Souhlas. Pomocí strategií se snažím otestovat staré myšlenky. Bohužel zjišťuju, že to o čem jsem si myslel, že je fční, tak dlouhodobě fční není. Proto k tomu zkouším přidat nějaké jednoduché filtry trendu. Beru to jako proces učení. Vesměs všechny staré myšlenky zahazuju. Pro mě paradoxně zjišťuju, že nejlepší strategie jsou ty pracující na timeframech 1Day.

Renda

Link to comment
Sdílet pomocí služby

Problémem denních grafů je, že zkrátka máte málo dat :) Takže ano, ideální timeframe pro "nejlepší strategie" jsou denní, týdenní a měsíční grafy. Je to pak ale podobné tomu, jako když si pro testování intradenních strategií zvolíte třeba 2 týdny. No schválně, zkuste si to, udělejte si nějaký jednoduchý kód strategie, třeba křížení MA, dejte si do inputs hodnoty obou MA a optimalizujte. Vyleze vám určitě výsledek, že budete mít skvělý profit factor, nádherný zisk a drawdown nebude stát za řeč. Až tohle budete mít, pusťte si tuto optimalizovanou strategi na 6 měsících dat bez toho, aniž byste tato data předtím viděl a použil... Asi to nebude zrovna moc pěkný pohled.

Většina těch, kteří obchodují denní grafy proto berou signál TA spíše jako konfirmační signál jejich širších analýz trhu. Abych mluvil za sebe - žádná z mých AOS není "dělaná" pro denní grafy a i když výsledky některých z nich jsou potenciálně výborné, neobchoduji je, není to můj styl obchodování, který bych preferoval.

Link to comment
Sdílet pomocí služby

Honza K:
Určitě souhlas. Asi jsem to napsal nesrozumitelně. Pro mě je právě zklamání, že mi "vychází" jen ty strategie s Day timeframe.
Preferuji ID systémy na 3minutových a vyšších TF. Ale budu muset ještě sakra pohledat. Starší, pro mě "profitabilní" myšlenky, když teď dám do kódu, se ukáží jako katastrofy. Pokud máte pro mě tip, nechám si rád poradit, co je pro Vás zajímavý směr na trhy ES, NQ ;-).

Link to comment
Sdílet pomocí služby

S těmi katastrofami - narážíte zkrátka na problém, že vizuálně v grafech vidíte ty dobré obchody velmi lehce a naopak prakticky přehlédnete naprostou většinu falešných signálů, které se vám jakoby v grafech "ztratí". Nicméně kód jede striktně podle pravidel a pak se situace otáčí. Je to jeden z důvodů, proč naprostá většina začátečníků v live obchodování má problém. Studiem grafů zkrátka získají pocit, že trhy začínají dobře číst a že jsou schopní si najít přesně ty situace, které jim nejvíc vydělají. Udělají si z nich pak systém typu "když close baru zavře nad touhle úrovní a zároveň je nějaký indikátor přeprodaný, tak je to long signál". Na historických datech je pak takových situací poměrně hodně, třeba desítky nebo stovky, takže to vypadá jako "jasnačka". Jenže ouha, takových situací je ve skutečnosti tisíce, jenom je jaksi nevidíte, v grafu jsou jakoby těžko rozeznatelné a narazíte na ně až v reálu, protože zkrátka graf napravo vám chybí.

Dále pak můžete být chycen do řady jiných pastí - jenom namátkou:

1) dělá váš kód opravdu přesně to, co chcete aby dělat?
2) Jsou vaše data správná a bez chyb?
3) Kalkulujete správně slippage, poplatky a jiné náklady?

Každý z těchto bodů by mohl vydat na několik přednášek.

Link to comment
Sdílet pomocí služby

×
×
  • Vytvořit...