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

Doporučené příspěvky

Odesláno

To MarekSK:

Nevim jak je to u VT, ale v MT se promenna nuluje po kazdem ticku, pokud neni specialne definovana.. Proto se ti podle me pocet_splnenych_podminek nekumuluje, ale vzdy zacina od nuly. Zkus tu podminku vyresit otazkou na pocet otevrenych pozic..

Mirek

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

Nejaktivnější diskutující

Nejaktivnější diskutující

Publikované obrázky

Odesláno

MarekSK:
To, že se proměnná nuluje při každém spuštění programu, což u VT probíhá na konci každé svíčky, u MT při každém ticku, je naprosto normální a je třeba se s tím vyrovnat. Kdyby se hodnota nenulovala, nebyla by to proměnná, ale konstanta. Ale u VT přece si můžeš převádět stav z minulého suštění programu pomocí funkce PREV, např.:
K:=Prev(K,-1);
if(podmínka platí,K=1,K=0);

U MT máš úplně jiné možnosti, MQL je skutečný programovací jazyk, lze využívat globální proměnné apod.
Milan

Odesláno

to marekSK
skus si dat na zaciatku pocet_splnenych_podminek do nejakej pomocnej premennej napr. pom
pom:=pocet_splnenych_podminek
a na konci vypoctu to daj opacne
pocet_splnenych_podminek:=pom

mam taky dojem ze pokial das napr
i:=i
i:=i+1
i:=i+1
i:=i+1
tak v i budes mat stale povodnu hodnotu cize 0

ale pokial urobis
j:=i
j:=j+1
j:=j+1
j:=j+1
i:=j
tak to zafunguje
treba vyskusat

Odesláno

Lidi,děkují vám všem MOC a MOC. Co se týče klasického programování, v tom bych nováček nebyl. A právě proto mě někdy VT tak trochu dostává na lopatky. Ještě jednou díky.
Prosím ještě o objasnsnění podrobněji příkazu PREV. Všechny příkazy pomocí helpVT jsem snad pochopil, ale i s pomocí překladače a slovníku nejsem schopen pochopit tento příkaz.

Ale jestli načítání proměných z poslední svíce formou PREV bude fungovat, pak jste mi vážně přidali úsměv na moji tvář. (tu)

Odesláno

To:bacak
Takže na názorném příkladu jsem napsal toto:(stále to nefunguje)-nechápu
Chci po VT, aby našel cross(Ma1 a MA2) jen jednou a více ne. Chci to použit v principu do svých AOS, kdy najde nákupní podmínku, tu si zapamatuje a čeká až nanajde prodejní podmínku, kdy udělá výpočet pro profit displey a pak zase čeká na další nákupní podmínku. A tak stále dokola.


pocet_splnenych_podminek:=pocet_splnenych_podminek2;

{Technické nástroje-začítek}
MA1:=mov(C,MA1_perioda,MA1_jaky);
MA2:=mov(C,MA2_perioda,MA2_jaky);
{Technické nástroje-konec}

podminka:=if(cross(MA1,MA2),if(pocet_splnenych_podminek=0,1,0),0);
pocet_splnenych_podminek:=if(cross(MA1,MA2),pocet_splnenych_podminek+1,pocet_splnenych_podminek);
pocet_splnenych_podminek2:=pocet_splnenych_podminek;

To:all
Jinak jsem to zkoušel také z prev(proměnná,-1) ale nefunguje, např:
bars:=cum(1); ----- Každá svíčka dostane své číslo
pocet:=if (bars=1,1,prev(pocet)); ---- měl by na první svíčce přidělit pocet=1 a pak i když nastane další a další svíčka, pak by už měla být hodnota pocet=1, a MĚLA BY ZŮSTAT.NEFUNGUJE
(td) (td) (td)

Odesláno

MarekSK:
A co myslíš, že znamená funkce CUM? Je to kumulace od začátku grafu, tímpádem nemůže být hodnota pořád stejná ale navyšuje se na každé další svíčce. Nestálo by za to přečíst si programovací manuál? Myslím, že je tu i český překlad, ale nechtěj po mě adresu.
Milan

Odesláno

to marekSK
neviem sice presne ako to chces ale skus toto:

MA1:=mov(C,MA1_perioda,MA1_jaky);
MA2:=mov(C,MA2_perioda,MA2_jaky);

pocet_splnenych_podminek:=if(cross(MA1,MA2),pocet_splnenych_podminek+1,pocet_splnenych_podminek);

Odesláno

To:volf
Tak teď nevím jestli jsem nemehlo nebo co. :)
Asi jsi mne špatně pochopil. Co se týče CUM, tento příkaz má jen přiřadit nové čístlo za každou novou svíci na grafu. A ten druhý řádek má udělat to, že na první svíci přiřadí proměnné pocet číslo 1 a pak už ta proměnná "pocet" má držet tuto hodnotu,tedy č.1. Chci tím vyzkoušet, aby se hodnota v proměnné "držela" i po započatí nových svící....
Mám tam ale malou chybu, tak tedy opravuji:
bars:=cum(1);
pocet:=if (bars=1,1,prev(pocet,-1));

Nechci se dělat jako že vím, ale myslím. Mám programovací manuál ORIGINÁL v angličtině, který probírám stále dokola. Na tvůj popud se ani neptám, zda-li existuje kompletní český. Ale raději jdu hledat po netu. Díky za připomínku.

Odesláno

TO:Bacak
Ano, tady je důkaz, že si VT pamatuje proměnou i po započatí nové svíčky. Mě to spíš připadá, že si některé proměnné pamatuje a některé ne. Už začínám pochybovat o svých programátorských schopnostech.Fakt. :S

No, abych tady nezaplácal vlákno nesmyslnými otázkami, tak jdu dál hledat a zkoušet.

Skusím to tedy naposledy. O CO MI V JÁDRU JDE: Chci mít ve svých AOS profit Displej. A chci aby mi moje AOS našel příležitost k obchodu, tu označily a zapamatovaly. Kdyby ale nastali další nákupní podmínky, než se objeví výstupní podmínka, pak je musí ignorovat....A čekal tak dlouho, až narazí na situaci (úplně jiné podmínky než při vstupu) aby ukázal konec obchodu a spočítal profit display. JE tady ALE. Možná že to je stupidní otázka, ale už mě prostě řešení, které by fungovalo nenapadá! No nic, jdu studovat dál, možná že to beru ze špatných konců. Každopádně díky všem..!!

Odesláno

MarekSK:
Nejlepší bude, když při každém spuštění programu, tzn. jednou na každé svíčce budeš testovat všechny podmínky, které mají platit pro vstup. A ne, že někdy dřív platila jedna a teď už platí i druhá. Tzn. nebudeš všechny podmínky psát jako cross, ale např. MA1>MA2 AND CROSS(MA3,MA4); Maximálně jeden Cross v podmínce, lépe vůbec žádný. Přenášet hodnoty z minulých svíček jde, ale proč?
Milan

Odesláno

MarekSk:
je tady ve vláknech spousta fungujících systémů, které splňují to, co požaduješ - pokud jsem to tedy dobře pochopil :).
Tak si nějaký vem a rozpitvej ho - nejjednodušší cesta jak se poučit... Když u nich fungují nákupy a prodeje tak, jak ty požaduješ a jede jim funkční profit display, tak proč vymýšlet něco, co už je dávno vymyšlené? Stačí nahradit vstupní a výstupní podmínky.
Petr

Odesláno

Děkuji všem za pomoc. No nic,jdu nadále studovat. Stejně mi někdy připadá, že si to VT dělá co chce,asi podle venkovní teploty... :D No nic,s úsměvem na tváři jdu pokračovat...

Odesláno

To:Namodro
Ano, je to ten nejlepší způsob,rozpitvat si to, kdo už něco vymyslel. Ale pokaždé, když něco začnu rozpitvávat, tak mi tam něco nesedí, nebo někdy je těžké pochopit několika řádkám-funkcím v programu, co tím chtěl básník a skladatel říci.

Ale přeci mi to nedalo a tak dlouho jsem nad tím seděl až mě z toho bolela hlava.ALE TÍMTO PŘINESLO MÉ POČÍNÁNÍ SVÉ OVOCE. Možná, že to víte, možná že je to fakt pořádná pitomost, ale sdělím Vám to, protože mi připadá, že VT má slabinu. Je to těžké to vysvětlit, ale pokusím se,takže:

Je to v podmínce, v příkazu-- If(podmínka, pokud ano tak,pokud ne tak)
Na příkladu vysvětlím,třeba: a:=if(podmínka,e,a);
Tento příkaz by měl do proměnné "a" přiřadit při při splnění podmínky hodnotu z proměnné "e" a pokud splněná podmínka nebude - zůstane hodnota na své původní hodnotě. To by bylo všechno v pořádku a ono to funguje.Ale poďme dál.
Dejme tomu, že s hodnotou "a" se bude dál v programu pracovat a znova se změní její hodnota. Pak dojde program na konec a čeká se na novou svíci. Pak při nové svíci se program spustí znova a hodnota "a" zůstane taková jako při skončení programu na minulé svíci.To je snad jasné. Ale, když program narazí znova na příkaz výše popsaný (ta podmínka nahoře), a podmínka nebude splněná, měla by hodnota "a" zůstat stále stejná. ALE NEZŮSTANE A ZMĚNÍ SE NA PŮVODNÍ HODNOTU, KTERÁ BYLA PŘED POSLEDNÍ ZMĚNOU NA SVÉ MINULÉ SVÍCI. Je to zmatené, byť jsem se to snažil vysvětlit, jak nejlépe umím.
A to bylo jádro mého problému a překážkou v mém programování. :)

Odesláno

To marekSK
to je už pomalu zralé na sólo vlákno - MarekSK a jeho problémy s VT.. :). Pokud máš pocit, že VT má "slabinu" doporučuji se obrátit přímo na VT fórum a nick Cskidmore, nikoho fundovanějšího přes VT neznám... A tam mu vysvětli o co go..Tady se jen dokola opakuje podmínka-nepodmínka, cross-necross, zůstane-nezůstane atd. atp...a 100x nic umořilo i osla.. :)
SID

Odesláno

MarekSK:
Slabiny VT určitě má, stejně jako každý jiný program, ale toto nebude ten případ. Tvůj výraz
a:=if(podmínka,e,a);

je nesmysl, protože při každém spuštění má každá proměnná znova nulovou hodnotu. Ty si to pořád nějak nechceš uvědomit. Pokud chceš, aby ti to trochu fungovalo dle tvého popisu, musíš to napsat asi takto: a:=if(podmínka,e,Prev(a,-1));

Milan


×
×
  • Vytvořit...