Forex programozás Fórum Kérdések az MQL4 programozási nyelvvel kapcsolatban terminal .exe meghívása .ini vel és a "/skipupdate"

Címkézve: 

13 bejegyzés megtekintése - 1-13 / 13
  • Szerző
    Bejegyzés
  • filewalker
    Tag
    Bejegyzések száma: 19

    Sziasztok, szia Radu!

    Az a kérdésem, hogy hogyan tudnám letiltani a frissítést, amikor .ini fájllal indítom el a terminált?
    Pl.: „d:\Program Files (x86)\MetaTrader 4 Admiral Markets AS\terminal.exe” valami.ini /skipupdate

    Na ez nem tuti… Időnként kilép hirtelen halállal. Ha megcserélem a két switch-et akkor is. Vagy így működnie kellene?
    Tudtok egy jó módszert az automatikus frissítés megakadályozására?
    Miért is: Ha így indítom („d:\Program Files (x86)\MetaTrader 4 Admiral Markets AS\terminal.exe” valami.ini) és nem kapcsoltam ki azt az áldott értékes automatikus update funkciót, akkor frissítéshez kilép az mt4, egyből indulás után. Aztán persze vissza, DE az .ini beállítások nélkül! Én meg nem értem miért is nem sikerült végrehajtani a folyamatot. Szóval kifejezetten károsnak tartom ezt a frissítést. Legalább rákérdezne, vagy lehetne időzíteni.
    Hétvégén indítom, tehát minden hétvégén beleszaladok.

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Sajnos nem biztos, hogy ezt a problémát át tudod majd hidalni.

    Amúgy a saját ini fájlt az melyik meglévő ini fájlra alapozva hoztad létre? Mi célból? Gondolom könnyebb így pár direktívát irányítani.

    Had’ tanuljak én is :)

    filewalker
    Tag
    Bejegyzések száma: 19

    Szia!

    Legvégső esetben arra gondoltam, hogy korlátozom a létrehozó tulajdonos hozzáférési jogát a biztonsági házirendben. Csak éppen ezt nem tartom szerencsésnek, mert kizárom a user-t is, és elég macerás visszakapcsolni. Mellesleg, meg egy idő múlva a terminál frissítési figyelmeztetéssel kilép. Ezértlett volna jó egy másik megoldás.
    Gondoltam még arra, hogy minden indítás előtt egy .bat fájllal vagy makróval kitöröltetem a webinstall tartalmát (ha nincs benne fájl, nem frissít…), de azt sem tartom elegánsnak. Ez a /skipupdate meg tök jó lenne, ha nem akadna össze az .ini-vel. Idönként elindul és nem frissít, máskor meg indítás után kilép, és nem indul újra.

    Ami az ini-t illeti, a felhasználók keze eléggé meg van kötve. Az alábbiakat engedi manipulálni:
    Common settings:
    pl.:

    ; common settings
    Profile=test 3
    MarketWatch=set.set
    Login=12345
    Password=xxxxxx
    Server=MetaQuotes-demo
    AutoConfiguration=false
    DataServer=192.168.0.1:443
    EnableDDE=true
    EnableNews=false
    Proxy Server Settings

    expert beállítás:

    ; experts settings
    ExpertsEnable=true
    ExpertsDllImport=true
    ExpertsDllConfirm=true
    ExpertsExpImport=true
    ExpertsTrades=true
    ExpertsTradesConfirm=false

    expert script, vagy template indítása parancsfájllal:

    ; open chart and run expert and/or script
    Symbol=EURUSD
    Period=H4
    Template=popular.tpl
    Expert=MACD Sample
    ExpertParameters=macd.set

    Én ezt használom:

    ;start strategy tester
    ExpertsEnable=false
    TestExpert=robotom.ex4
    TestExpertParameters=robotom.set
    TestSymbol=EURUSD
    TestPeriod=15
    TestModel=1
    TestRecalculate=false
    TestOptimization=true
    TestDateEnable=true
    TestFromDate=2014.11.28
    TestToDate=2015.04.10
    TestReport=Report_EURUSDmicro_2015.04.10.htm
    TestReplaceReport=true
    TestShutdownTerminal=true
    TestSpread=16.00

    stb…

    A részletes infó itt található.
    http://metatrader.helpmax.net/en/tools/configuration-at-startup/

    Szóval nem egy extra. Viszont ezek mind megszűnnek létezni amikor az mt4 kitalálja hogy most aztán frissít egy jót.
    És persze én hiába is írok nekik, le sem …. amit írok. Egyszer sem jeleztek vissza, és nem is tettek semmit, pedig az ő nyelvükön szólt az üzenet. Úgy gondolom, hogy ez egy hiba, és nem okozhatna gondot beírni a kódba, hogy ha ini-vel indítják el, ne frissítsen. Szerintem ez tök elvárható lenne. A terminál ki is írja sikeres indulás után, hogy „parancsfájllal” indult, log-olja is. Mégis kilép…
    Ha te írsz nekik, azt elolvassák? Ha igen, nem javasolnád nekik?

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Köszönöm a részletes választ!

    Nekem van 6 hibajegyem, amire tavaly június óta nem sikerült választ adniuk. Sajnos azt kell mondjam: reménytelenek. Csak a „mainstream” hibákkal foglalkoznak, azokkal is minimális hatásfokkal.

    Én abba az irányba indulnék el, amit már te is írtál: Feladatütemezőből rendszeresen futtatott WebInstall törlés.

    A frissítésre történő figyelmeztetés az milyen formában jön elő? Felugró ablak, vagy mi?

    Egyébként ezt az ini fájlt nem tudod az eredeti helyére rakni? Az nem megfelelő megoldás?

    filewalker
    Tag
    Bejegyzések száma: 19

    „Mellesleg, meg egy idő múlva a terminál frissítési figyelmeztetéssel kilép.”
    Értem ez alatt, hogy akár fél évig is működik az adott verzió, de egy idő múlva kényszerít a frissítésre és az adott verzió nem is lesz tovább használható. Erre gondoltam.

    „Feladatütemezőből rendszeresen futtatott WebInstall törlés.”
    Azt hogyan kell? Ez valami nagyon egyszerű és kézenfekvő megoldás lehet, mert eddig ez nekem nem jutott az eszembe (jellemzően mindig a legkomplikáltabb megoldást választom mert nem vagyok okos)! XD
    Már itt is valami kódon, vagy hozzáférés korlátozáson gondolkoztam…

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    A WebInstall helyét tudod, a törlést meg tudod oldani rekurzív könyvtárkereséssel és törléssel. Rendszergazdaként rögzíts egy feladatot a Feladatütemezőben! Ilyet még én sem csináltam, de szerintem a Google ebben is a segítségedre lehet.

    Egyébként hol van ez a gép? Mi a cél? Már csak hogy értsem, miért és milyen felhasználókat kell korlátozni:)

    filewalker
    Tag
    Bejegyzések száma: 19

    Köszönöm az infót, ezt fogom alkalmazni!

    „Egyébként hol van ez a gép? Mi a cél? Már csak hogy értsem, miért és milyen felhasználókat kell korlátozni:)”
    Ha korlátozom a mappához való hozzáférést a system (ill. a létrehozó tulajdonos) számára akkor semmi sem fog hozzáférni (vagyis fájlokat másolni) a webinstall tartalmához tehát soha sem fog frissíteni (ez a célom). De ez a megoldás nem jó, mert engem is akadályoz, a hozzáféréshez (bonyolult vissza csinálni, ha mégis frissítenem kell). Nem a felhasználó korlátozás a cél.
    A gép otthon van és nincs egyéb funkciója. Nem is fér hozzá más (fizikailag :) ).

    Köszi még egyszer!

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Már többször kérdeztem, de mindig másról írtál: mi a végcélja ennek az egyéni ini -s indításnak? Miért nem lehet ezeket a beállításokat a megszokott – saját helyükön lévő – ini fájlokkal vezérelni? Nem tiszta, hogy mi ennek az egész problémának az eredője.

    filewalker
    Tag
    Bejegyzések száma: 19

    Tulajdonképpen én korábban már bemásoltam azt a konfigurációt amit használok.
    „;start strategy tester”
    Ez egy teszter. Egy stratégia optimalizáció. Az eredményt pedig a Metatrader egy .htm fájlban tárolja az optimalizáció végeztével. Ebből lehet kinyerni az adatokat, és pl. exel táblázatban szűrve a legjobb paraméterekkel futtathatjuk a robotunkat. Nem kell a gép előtt ülni, csak ha már kész van ( vasárnap este…).
    Itt a forrás: http://forum.mql4.com/33965

    Automatikusan indítja a robot a másik mappába telepített terminal-t ahová már be is másolta az ini fájlt, és amikor kész akkor elküldi e-mail-ben az eredményt (külső dll segítségével), vagy küld egy értesítést hogy kész. Esetleg egy online fájl szinkronizációval (dropbox, cubby, drive stb…) a gépedre is varázsolja.
    Az ini fájl ott van a terminal.exe mellett. Tehát nem adok meg neki bonyolult útvonalakat. így néz ki: „C:\………\Terminal\…\terminal.exe optimise.ini” . (Nyilván a Windows csodája miatt a rendszer mappája nem mindig a Program Filesben van, de ez nem érdekes.)
    Mi (értsd te és én már leveleztünk korábban priviben akkor konkrétan elküldtem neked egy expertet is ami akkor még nem működött… (Igen… tudom… XD)) már megbeszéltük kb. egy éve, hogy az automatikus optimalizáció egy bonyolult dolog, és legjobb az ilyet c-ben megírni… De végül megoldódott a dolog, és mq4-ben is működik.

    Sajna eléggé elmentünk a témától, nem azzal volt gondom, hogy indul-e az ini-vel hanem az, hogy az update sok újabb kis bug-ot tol minden héten az arcomba. És mellesleg teljesen értelmetlenül. Amikor konfigurációs fájllal indítom el, nem is szabadna restartolnia! Persze én hiába is írok nekik. Nem akarom elhinni, hogy ilyen logikai hiba senkinek nem böki a szemét rajtam kívül. Gondolom nem akarsz újabb hibajegyet generálni erről is… :)
    A kérdésemre viszont kaptam egy elég jó ötletet, amit köszönök szépen.

    Félek bármennyire is igyekszem nem sikerül minden kérdésedre maximálisan megfelelnem, talán esetleg félre értettem a kérdést, vagy csak másra fókuszáltam írás közben.
    Ha vannak kérdéseid ezzel kapcsolatban, szólj (szájba rágósan írj (!) mert nem biztos, hogy egy rugóra jár…), és írok neked (akár privátot is).

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Köszi a választ. Magyarul az ini fájlt egy másik expertből írod, és ezzel indítja az az expert az MT4-et – gondolom többször, egymás után. A frissítés ebbe kavar be.

    Talán a frissítéskor elhasaló példányt kellene újra elindítani, elvégre az hogy frissített ezt a funkciót – mármint az iniből indítást – nem érinti. Magát az ini fájlodat pedig nem hiszem hogy törli, vagy mégis?

    Egyelőre nincsen további ötletem ezzel kapcsolatban, sajnálom.

    filewalker
    Tag
    Bejegyzések száma: 19

    Az ini-t nem törli. Ha frissít akkor kilép és újra indul, de akkor már az ini nélkül (mintha csak ráklikkelnél az ikonra). Tehát nem tölti be még egyszer az ini-t. Nem volna semmi gondom akkor sem, ha frissítene és amikor elindítja az új verziót akkor azokkal a paraméterekkel indítaná el ahogy eredetileg kellett volna.
    Sajnos nem tudtam eddig olyan kódot beírni ami ellenőrizné, hogy az adott terminál azt teszi-e amit kell.
    Ha már fut, akkor nem lehet újra elindítani, előbb be kell zárni. Ezzel meg az a gond, hogy nem tudja hogy a két terminál közül melyiket kell bezárni.

    Azon már végig mentem fejben hogy működhet-e az, hogy elindítja a robot a másik terminált, vár egy kicsit aztán leállítja, és újra elindítja de már az ini-vel együtt. Viszont a leállítást nem tudom kivitelezni. Esetleg azt is egy ini-vel ami leállítja a terminált, viszont ha frissít és újraindul, akkor megint csak ott van nekem egy futó terminál (ami nem csinál semmit), amit nem tudok bezárni (mivel másodszorra megint csak ini nélkül indult el).

    Ez a számítógép amin fut leginkább egy szerverre hasonlít, és nincs rajta monitor sem. Tehát RDP-vel, vagy vnc-vel tudok ránézni (ha bezárom az ablakot (rdp, vnc, stb. :) ), akkor kijelentkezteti a Windows a felhasználót az Active session-ból…). Makrót nem tudok olyan gépen futtatni amelyikből épp kijelentkezett a felhasználó, tehát ott kellene ülnöm a gép előtt… Vagyis folyamatosan bejelentkezve kellene maradnom ami nem lehetséges az időkorlátok miatt. Meg a két gép működtetése mégis csak értelmetlen.
    Ha létrehozok egy virtuális gépet a „szerveren” belül, akkor futnak a makrók amik elindítanák/leállítanák a terminálokat, viszont olyan memória címre próbál írni az mt4 a vm-ben, amit akadályoz a Windows és „Az alkalmazás leállt” típusú hibaüzenetet kapok minden terminál indításkor (A terminál üresen nem áll le, de ha a robottal indul, akkor jönnek a problémák). Arról nem is beszélve, hogy ahhoz mindennek a vm-en belül kellene futnia. Tehát elég erős gép kellene hozzá. A MacroScheduler nevű program pedig nem biztos hogy tudja azt ami nekem kell, és ahhoz elég drága, hogy egyszer kipróbáljam (azt írják, hogy bejelentkeztet egy usert, tehát szerintük tudja).
    Szóval a legjobb megoldás a frissítés akadályozása, vagy a terminál robottal való bezárása lenne vagy az, hogy a Metaquotes kijavítaná ezt a problémát.
    Köszi még egyszer!

    Radulovic Attila
    Tag
    Bejegyzések száma: 653

    Bezárást tudsz intézni EA-ból: MetaTrader4 terminál bezárása a TerminalClose() függvény segítségével.

    Méghozzá a következőképpen:

    • van egye a szokásos beállítás (mezei ini fájlok a programkönyvtárban) illetve a speciális (általad létrehozott ini fájl)
    • a „szokásos” beállításban valami nagyon egyszerű, de ritkán használt tulajdonságot beállítanék a MT4-ben
    • az expert – amit fel tudsz ugye helyeztetni ini-ből egy chartra – ellenőrizné ezt a beállítást; ha megegyezik a központi ini beállításával, akkor TerminalClose(), ha nem akkor nem csinál semmit.

    Beállítás alatt pl. chart színre, profilra, stb. gondolok – ezeket az új MT4 nyelvben lekérdezhetővé tették. Légy kreatív, szerintem megoldható a dolog. Nyilván egyfajta patkolás, de mégis menni fog.

    filewalker
    Tag
    Bejegyzések száma: 19

    Köszönöm!
    Ezt ki fogom próbálni.

13 bejegyzés megtekintése - 1-13 / 13
  • Be kell jelentkezni a hozzászóláshoz.