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

Doporučené příspěvky

Odesláno

DarkMan a ostatní: díky.

Ještě mírně plavu v globálních/statických proměnných... Globální/lokální jsou asi jasné (v rámci intencí TP, C++ apod.) ale statické proměnné? (už ten protichůdný název ;) Co se stane s jednotlivými typy proměnných, když ukončím EA/MT4?

Dále: Existuje nějaká f-ce na zjištění maximálního indexu pole s definovanou hodnotou? Něco jako ubound(Pole)... Nebo to musím procházet cyklem dokud nenarazím na NULL? Díky za pomoc, tyhle detaily v manuálu nejsou a MQL je takový děsný hybrid :-( - syntaxe zbytečně složitá ve tvaru C++, datové typy téměř na úrovni Basicu a do toho finanční funkce :D

Poslední z této dávky dotazů: proč nemůžu definovat hodnoty pole v globálním rozsahu? Konkrétně v bloku definice vstupních hodnot (před blokem f-ce Init) mám toto:

int HH_TP[4]; // 4 hodnoty - index 0-3
HH_TP[0] = 55; // zde to háže error 'HH_TP' - expression on global scope not allowed

Díky moc předem za odpovědi, potřebuju se jen zorientovat v zákonitostech MQL... ;-)

  • Odpovědí 4,3k
  • Vytvořeno
  • Poslední

Nejaktivnější diskutující

Nejaktivnější diskutující

Publikované obrázky

Odesláno

kubrt:

Mozna jsem te trosku zmatl zkusim trosku objasnit.....

MT ma 4 moznosti jak definovat promenou

1) Globalni - ja ji budu rikat Uplne Globalni :)) za chvili bude jasne proc ta se nastavuje pres fce GlobalVariableSet() hodnota z ni se ziskava pres GlobalVariableGet() atp... tyto typy promenych jsou primarne urceny k vymene dat mezi jednotlivymi EAs - cili pokud chces aby jedna EA cetla promene z jine EA pouzijes tento typ (v MT kdyz das F3 vydis definovane globalni promene)

2) Globalni v ramci EA - to jsou promene ruznych dat. typu ktere jsou definovany mimo bloky start(), init(), deinit() cili v globalnim rozsahu, na tyto promene se lze odkazovat ve vsech funcich, myslim ze neni treba dal rozvadet....

3) Staticke promene - se definuji v ramci funkce pomoci magickeho sluvka [bold] static [/bold], a jsou pristupne pouze v teto funkci .... touto deklaraci docileme toho ze si tato promena pamatuje svou hodnotu i pri kazdem novem volanim fce
priklad....

int start(){
static string Text;
if(DayOfWeek()==5) Text = "Datum posledniho patku bylo "+TimeToStr(TimeCurrent());
Print(Text); //Kazdym tickem mi to zapise do logu datum posledniho patku
}

4) Klasicke promene v ramci funkce - neni treba popisovat....


Co se tyce fce na zjisteni indexu pole s null hodnotou tak se obavam ze nic takoveho neni, kdysi jsem neco takoveho resil prave pres smycku a porovnanim hodnot...
A to ze nejde prirazovat hodnoty v globalnim rozsahu, tak s tim se proste smir :) zacalo to delat nedavno.... ale proste je to tak a zda se mi i to cistejsi od toho je tam blok init.....

MT se zda ze zacatku jako pekna pakarna ale nakonec zjistis ze je to easy, aspon samotna syntace co se tyce nekterych sotku ktere MT umi tak to je jina to nekdy zustava rozum stat :)



Mira

Odesláno

DarkMan: díky za detailní vysvětlení, myslím, že to pomůže nejen mi, ale i ostatním.

Vrátím-li se tedy k problematice uchovávání více objednávek stylem (globalniho/statického) pole s obsahem ticketu... Co se stane, naplním-li pole hodnotama a vypnu MT4 a za pár minut/hodin/dnů ho zase zapnu? Zůstanou některé z nich zachovány? A co když např.změním timeframe nebo měnový pár (to by se měl spuuštět EA znovu, včetně f-ce Init, jestli jsem to dobře pochopil)? Co se stane s těmi proměnnýnm?

Díky, snad už dám pokoj a budu schopen něco naprogramovat ;-) Kubrt

Odesláno

Zdravím příznivce Forexu,
už nějakou dobu používám MT4 a jejich platforma se mi zdá skvělá, asi budu jediný ale musím se přiznat že jsem zkoušel i VT ale naprogramovat tam AOS pro mě bylo velice složité (témeř nad moje síly) :) .
Dejvi

Odesláno

DarkMan & All:

Pozor na staticke promenne... - pokud statickou promennou definujete ve funkcni - rekneme start() a zaroven ji inicializujete, NIKDY VICE neprobehne inicializace... a to dokonce ani pri novem spusteni (instancovani - viz zalozka Expert) takove EA! (pro mne na staticke promenne nezvykle chovani, no budiz)

Vychodiska jsou dve:

- definovat promennou taktez staticky, ale na globalni urovni a teprve v init() ji inicializovat hodnotou (vzdy provest prirazeni)

- definovat promennou pouze globalne a dle toho s ni nakladat - as ussually

(Koukam do jedne z mnou vytvorenych EA a zrejme preferuji 2. zpusob)

Odesláno

Zdravím vespolek,
prosím zkušené kolegy o radu: jak dostat 3-4 indikátory (MACD, CCI, STOCH, VOL) do jednoho okna aby bylo víc místa pro graf? Už to řeším několik dní a nemůžu na to přijít. Jde to vůbec?
Dík za radu.
Kwido

Odesláno

Kwido:
Zobrazíš si panel Navigator, v něm jednotlivé indikátory a pak ten, který chceš normálně "vemeš" myší a přemístíš na graf. Další indikátor zase úplně stejně přemístíš do toho prvního.

Odesláno

Zdar všem,

tak mám hotový nějaký první jakž takž funkční EOS a potýkám se s jednou věcí, na kterou jsem narazil při testování, a sice rollovers. V testeru je to jako swap close a swap open. Opravdu to tak funguje i v reálu? Že se o půlnoci všechny pozice zavřou a znovu otevřou [bold]S JINÝM ČÍSLEM TICKETU a s NOVĚ definovanou hodnotou OrderOpenPrice ???? [/bold](programuju něco jako Vegase a potřebuju posouvat SL podle prvotní OpenPrice a tohle mi tam dělá pěkné zmatky. Docela dlouho trvalo, než jsem na to přišel... Není problém to programově ošetřit, jen bych nerad něco programoval, aby to v reálu bylo jinak... Díky za odpovědi, Kubrt.

[ital] PS: Pozn.: Mám v reálu Saxo a ti řeší rollovery tak, že posouvají původní open cenu o swap, takže např. reálně otevřu long pozici za 1,2000 a druhý den vidím, že ji mám otevřenou např. za 1,2004. [/ital]

Návštěvník
Téma je uzavřené.

×
×
  • Vytvořit...