Úterý 24. prosince 2024 19:51
reklama
Purple ebook obchodování ropy
reklama
Purple webinář Ve vaší režii
reklama
Purple ebook obchodování ropy
reklama
Investingfox Nastroje

EA Filtrování TradingHours

úprava kódu aby neobchodoval 24hod denně

Jste na diskusním fóru jako nepřihlášený uživatel a Vaše funkce jsou tak omezené. Pro neomezený přístup je nutné být registrovaný a přihlášený uživatel. Nejste-li registrován/a klikněte pro bezplatnou registraci. Jednoduchá registrace vám otevře cestu k profesionálním informacím.

Registrací na FXstreet.cz můžete získat:

  • Možnost diskutovat s ostatními tradery.
  • Vkládání nových příspěvků a zakládání nových témat v diskusním fóru.
  • Možnost vyhledávání v tomto velmi rozsáhlém diskusním fóru.
  • Přístup k uzamčeným odborným článkům, sekcím a školy forexu.
  • Ebooky, manuály a obchodní systémy zdarma.
  • Zasílání newsletterů a informací o nových akcích a aktivitách portálu FXstreet.cz
  • Možnost psát vlastní blogy a články.
  • Možnost objednání tradingových knih, seminářů nebo VIP zóny.
  • Další přínosné informace z oblasti obchodování na forexu.
Autor EA Filtrování TradingHours (9 odpovědí)
VeronikaBl
Nováček v diskuzi
avatar
Příspěvky: 11
Více informací o uživateli >>
Filtrování TradingHours 28.02.2016 20:48

Ahoj všem, jsem programátor začátečník ale už se alespoň v kódu vyznám a umím ho přečíst. Už jsem si projela pár strategií a některé indikátory si už oblíbila. Nyní už bych ráda začala optimalizovat ale jelikož jedu na M5, tak potřebuji aby systém obchodoval jen část dopoledne a část odpoledne v době kdy to má nejvíce smysl. Našla jsem si tedy spousta rad jak nastavit filter pro TradingHours ale ať dělám co dělám tak to neumím správně nasadit a neustále mi to obchoduje 24hod denně :o(

Jde  mi o EA MACD sample co je v MetaTraderu od nainstalování.

Kód zní takto: 

total=OrdersTotal();

  if(total<1)

     {

      //--- no opened orders identified

      if(AccountFreeMargin()<(1000*Lots))

        {

         Print("We have no money. Free Margin = ",AccountFreeMargin());

         return;

        }

      //--- check for long position (BUY) possibility

      if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && 

         MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)

        {

         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);

         if(ticket>0)

           {

            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

               Print("BUY order opened : ",OrderOpenPrice());

           }

         else

            Print("Error opening BUY order : ",GetLastError());

         return;

        }

      //--- check for short position (SELL) possibility

 

     //to samé pro sell.............

            Print("Error opening SELL order : ",GetLastError());

        }

      //--- exit from the "no opened orders" block

      return; 

     }

a já ten filtr zkouším dát před buy i sell:

   total=OrdersTotal();

   if(total<1)

     {

      //--- no opened orders identified

      if(AccountFreeMargin()<(100*Lots))

        {

         Print("We have no money. Free Margin = ",AccountFreeMargin());

         return;

        }

        if( !((Hour()>=7 && Hour()<=10) || (Hour()>=14 && Hour()<=18)))

        { // tuto závorku jsem připsala a zbytek kódu pro vstup buy i sell je v ní

 a konec té závorky mám na konci sell:

Print("Error opening SELL order : ",GetLastError());

        }} //zde jsou nově dvě

      //--- exit from the "no opened orders" block

      return; 

     }

různých změn jsem zkoušela už asi 20 ale furt nic. Kompilace mám bez chyby a stále to obchoduje nonstop :o/

Předem obrovské díky za nápovědu!

Veronika

Masterfx
Gold member
avatar
Příspěvky: 453
Více informací o uživateli >>
Re: Filtrování TradingHours 28.02.2016 22:36
Odpověď na: VeronikaBl

Ahoj všem, jsem programátor začátečník ale už se alespoň v kódu vyznám a umím ho přečíst. Už jsem si projela pár strategií a některé indikátory si už oblíbila. Nyní už bych ráda začala optimalizovat ale jelikož jedu na M5, tak potřebuji aby systém obchodoval jen část dopoledne a část odpoledne v době kdy to má nejvíce smysl. Našla jsem si tedy spousta rad jak nastavit filter pro TradingHours ale ať dělám co dělám tak to neumím správně nasadit a neustále mi to obchoduje 24hod denně :o(

Jde  mi o EA MACD sample co je v MetaTraderu od nainstalování.

Kód zní takto: 

total=OrdersTotal();

  if(total<1)

     {

      //--- no opened orders identified

      if(AccountFreeMargin()<(1000*Lots))

        {

         Print("We have no money. Free Margin = ",AccountFreeMargin());

         return;

        }

      //--- check for long position (BUY) possibility

      if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && 

         MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)

        {

         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);

         if(ticket>0)

           {

            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

               Print("BUY order opened : ",OrderOpenPrice());

           }

         else

            Print("Error opening BUY order : ",GetLastError());

         return;

        }

      //--- check for short position (SELL) possibility

 

     //to samé pro sell.............

            Print("Error opening SELL order : ",GetLastError());

        }

      //--- exit from the "no opened orders" block

      return; 

     }

a já ten filtr zkouším dát před buy i sell:

   total=OrdersTotal();

   if(total<1)

     {

      //--- no opened orders identified

      if(AccountFreeMargin()<(100*Lots))

        {

         Print("We have no money. Free Margin = ",AccountFreeMargin());

         return;

        }

        if( !((Hour()>=7 && Hour()<=10) || (Hour()>=14 && Hour()<=18)))

        { // tuto závorku jsem připsala a zbytek kódu pro vstup buy i sell je v ní

 a konec té závorky mám na konci sell:

Print("Error opening SELL order : ",GetLastError());

        }} //zde jsou nově dvě

      //--- exit from the "no opened orders" block

      return; 

     }

různých změn jsem zkoušela už asi 20 ale furt nic. Kompilace mám bez chyby a stále to obchoduje nonstop :o/

Předem obrovské díky za nápovědu!

Veronika

Ahoj, jestli jsem to dobře pochopil, chceš, aby to obchodovalo v jen konkrétní čas intervaly. Nejsem profík, jen amatér-absolvent kurzu AOS od FXStreet :-). Jednoduše v podmínkách pro otevření jak pro long, tak i pro short si kromě všeho ostatního dej i podmínku, aby se porovnával čas aktuální s tvým předepsaným časovým intervalem a pokud aktuální čas bude v Tvém intervalu v té podmínce, obchod se otevře. Pokud se má obchodovat třeba 2 úseky v jednom dni, tak dáš do podmínek další tvůj časový interval svázaný s tím předchozím operátorem "nebo" ---  || ...... tak jestli se vyznáš v kodu a tvorbě podmínek, tak snad jsi mě pochopil(a)............ Mohu doporučit začít od nuly a ne se prohrabávat EAčkam, které napsal někdo jiný.......... to se hodně blbě ladí, protože jedna obchodní myšlenka se dá napsat několika způsoby. Osvoj si svůj............. 

Michal

Daily trader, vlastní AOS, P/A
VeronikaBl
Nováček v diskuzi
avatar
Příspěvky: 11
Více informací o uživateli >>
Filtrování TradingHours 28.02.2016 22:47

Díky aby se porovnával čas s aktuálním. Hmm tak to by mě nikdy nenapadlo a zatím to naprosto nikde neradili. No zkusit bych to mohla. Ono ani nejde o to hrabat se v jiných. Beru to tak že se učím. Tak se prostě hrabu v "učebnicích". Ale mám tu i jednu pidi strategii kde nejsou žádné extra podmínky. Má to snad jen jednu podmínku a pak hned vstup a ani tam mi to prostě omezení času vstupu vůbec nebralo. Podle mě bude spíš chyba někde na mé straně. Neb v google jsem fakt prošla už kde co a jeden návod na filraci je triviálnější než druhý. Ale já se z místa nepohnula :o/

Vykuk
Veteran member
avatar
Příspěvky: 1271
Více informací o uživateli >>
Re: Filtrování TradingHours 29.02.2016 09:34
Odpověď na: VeronikaBl

Díky aby se porovnával čas s aktuálním. Hmm tak to by mě nikdy nenapadlo a zatím to naprosto nikde neradili. No zkusit bych to mohla. Ono ani nejde o to hrabat se v jiných. Beru to tak že se učím. Tak se prostě hrabu v "učebnicích". Ale mám tu i jednu pidi strategii kde nejsou žádné extra podmínky. Má to snad jen jednu podmínku a pak hned vstup a ani tam mi to prostě omezení času vstupu vůbec nebralo. Podle mě bude spíš chyba někde na mé straně. Neb v google jsem fakt prošla už kde co a jeden návod na filraci je triviálnější než druhý. Ale já se z místa nepohnula :o/

Jak ti moc dobře radí Masterfx, je rozhodně lepší si tu strategii napsat sám od nuly. Pak se v ní daleko líp orientuješ a logcky víš, kam tu podmínku vložit. Ty by jsi od té podmínky měla požadovat, aby zabránila otevření obchodu, to znamená, že musí být někde nad

  ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);

zároveň je dobré ji dát i nad vstupní podmínky otevření obchodu

 if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)

protože v rámci nějaké optimalizace je zbytečné kontrolovat hodnoty indikátorů, když mne nezajímají, protože nechci vstupovat. A k samotné podmínce... předpokládám, že je to toto

if( !((Hour()>=7 && Hour()<=10) || (Hour()>=14 && Hour()<=18)))

Záleží na tom, jakou tu podmínku chceš mít. Nejsem si jistej, jestli jsi ji chtěla takto napsat. Podle této podmínky BUDEŠ obchodovat v čase 0 - 6:59, 11 - 13:59, 19 - 24, pokud touto podmínkou podmiňuješ vstup do pozice.

PS: teď to čtu podruhé a jestli to dobře chápu, tak to co máš nahoře, tak máš vloženo do těch { } pod časovou podmínkou, takže to je v pořádku. Ale nejspíš máš špatně jen podmínku. Pokud chceš obchodovat v ty časy 7 - 10 a 14 - 18, tak tam nesmí být ten vykřičník (NOT). Pak je důležité jestli chceš obchodovat do 10 a 18, nebo do 10:59 a 18:59. Protože čas 10:59 stále splňuje podmínku Hour() <= 10. Takže interval 7:00 - 10:00 (přesně 9:59) a 14:00 - 18:00 (přesně 17:59) bych napsal takto:

if( ( Hour() >= 7 && Hour() <= 9 ) || ( Hour() >= 14 && Hour() <= 17 ) )

Pak jsou samozřejmě i jiné možnosti, ale zkus si s tím vyhrát a půjde to i s tímto.

| Broker: IC Markets (live) | FX od 2012 |
Vykuk
Veteran member
avatar
Příspěvky: 1271
Více informací o uživateli >>
Re: Filtrování TradingHours 29.02.2016 09:41
Odpověď na: VeronikaBl

Díky aby se porovnával čas s aktuálním. Hmm tak to by mě nikdy nenapadlo a zatím to naprosto nikde neradili. No zkusit bych to mohla. Ono ani nejde o to hrabat se v jiných. Beru to tak že se učím. Tak se prostě hrabu v "učebnicích". Ale mám tu i jednu pidi strategii kde nejsou žádné extra podmínky. Má to snad jen jednu podmínku a pak hned vstup a ani tam mi to prostě omezení času vstupu vůbec nebralo. Podle mě bude spíš chyba někde na mé straně. Neb v google jsem fakt prošla už kde co a jeden návod na filraci je triviálnější než druhý. Ale já se z místa nepohnula :o/

Mimochodem, ty porovnáváš čas s aktuálním. Aktuální čas representuje Hour() - což je poslední známý serverový čas ale pouze hodiny a porovnáváš to s časem, který zádáváš v intervalu. Takže tě to sice nenapadlo, ale defacto to děláš Tongue out.

| Broker: IC Markets (live) | FX od 2012 |
VeronikaBl
Nováček v diskuzi
avatar
Příspěvky: 11
Více informací o uživateli >>
Re: Re: Filtrování TradingHours 29.02.2016 12:29
Odpověď na: Vykuk

Mimochodem, ty porovnáváš čas s aktuálním. Aktuální čas representuje Hour() - což je poslední známý serverový čas ale pouze hodiny a porovnáváš to s časem, který zádáváš v intervalu. Takže tě to sice nenapadlo, ale defacto to děláš Tongue out.

já už jsem nad těma znaménkama přemýšlela a mám je fakt špatně? (chci obchodovat 7-10 + 14-18) Protože >7 je přeci víc jak sedm a to je osm, devět, deset atd? Nebo to je v mql4 jinak? Ale s tím vykřičníkem máš pravdu. Neověřila jsem si jakou má funkci. ( jsem to zaměnila s HTML, CSS kde je vykřičník jako důležitost )

Vykuk
Veteran member
avatar
Příspěvky: 1271
Více informací o uživateli >>
Re: Re: Re: Filtrování TradingHours 29.02.2016 17:23
Odpověď na: VeronikaBl

já už jsem nad těma znaménkama přemýšlela a mám je fakt špatně? (chci obchodovat 7-10 + 14-18) Protože >7 je přeci víc jak sedm a to je osm, devět, deset atd? Nebo to je v mql4 jinak? Ale s tím vykřičníkem máš pravdu. Neověřila jsem si jakou má funkci. ( jsem to zaměnila s HTML, CSS kde je vykřičník jako důležitost )

V mql4 je vykricnik negace. Znamenka mas v podmince spravne, ale vysledek podminky potom negujes vykricnikem. Takze pokud je cas v danem intervalu, vysledek podminky je true a ty ho vykricnikem zmenis na false a naopak.

V html se mimochodem vykricnik taky pouziva jako NOT. V CSS nevim. Kamaradim jen s pascalem, c# a mql4 :-).

| Broker: IC Markets (live) | FX od 2012 |
VeronikaBl
Nováček v diskuzi
avatar
Příspěvky: 11
Více informací o uživateli >>
Re: Re: Re: Re: Filtrování TradingHours 29.02.2016 22:04
Odpověď na: Vykuk

V mql4 je vykricnik negace. Znamenka mas v podmince spravne, ale vysledek podminky potom negujes vykricnikem. Takze pokud je cas v danem intervalu, vysledek podminky je true a ty ho vykricnikem zmenis na false a naopak.

V html se mimochodem vykricnik taky pouziva jako NOT. V CSS nevim. Kamaradim jen s pascalem, c# a mql4 :-).

Tak s tím vykřičníkem to byla naprostá pravda. Už to funguje parádně! Obrovské díky! Takový detail :o/

Vykuk
Veteran member
avatar
Příspěvky: 1271
Více informací o uživateli >>
Re: Re: Re: Re: Re: Filtrování TradingHours 01.03.2016 05:58
Odpověď na: VeronikaBl

Tak s tím vykřičníkem to byla naprostá pravda. Už to funguje parádně! Obrovské díky! Takový detail :o/

Rádo se stalo. Ty nejmenší detaily se občas nejhůř hledají a nadělají největší paseku Tongue out. Ať se daří...

| Broker: IC Markets (live) | FX od 2012 |

Předchozí témata

Následující témata

Forex - doporučené články:

Co je FOREX?
Základní informace o finančním trhu FOREX. Forex je obchodování s cizími měnami (forex trading) a je zároveň největším a také nejlikvidnějším finančním trhem na světě.
Forex pro začátečníky
Forex je celosvětová burzovní síť, v jejímž rámci se obchoduje se všemi světovými měnami, včetně české koruny. Na forexu obchodují banky, fondy, pojišťovny, brokeři a podobné instituce, ale také jednotlivci, je otevřený všem.
1. část - Co to vlastně forex je?
FOREX = International Interbank FOReign EXchange. Mezinárodní devizový trh - jednoduše obchodování s cizími měnami - obchodování se směnnými kurzy.
VIP zóna - Forex Asistent
Nabízíme vám jedinečnou příležitost stát se součástí týmu elitních obchodníků FXstreet.cz. Ve spolupráci s předními úspěšnými obchodníky jsme pro vás připravili unikátní VIP skupinu (speciální uzavřená sekce na webu), až doposud využívanou pouze několika profesionálními tradery, a k tomu i exkluzivní VIP indikátory, doposud úspěšně používané pouze k soukromým účelům. Nyní se vám otevírá možnost stát se součástí této VIP skupiny, díky které získáte jedinečné know-how pro obchodování na forexu, výjimečné VIP indikátory, a tím také náskok před drtivou většinou ostatních účastníků trhu.
Forex brokeři - jak správně vybrat
V podstatě každého, kdo by chtěl obchodovat forex, čeká jednou rozhodování o tom, s jakým brokerem (přeloženo jako makléř/broker nebo zprostředkovatel) by chtěl mít co do činění a svěřil mu své finance určené k obchodování. Velmi rád bych vám přiblížil problematiku výběru brokera, rozdíl mezi jednotlivými typy brokerů a v neposlední řadě uvedu několik příkladů nejznámějších z nich.
Forex robot (AOS): Automatický obchodní systém
Snem některých obchodníků je obchodovat bez nutnosti jakéhokoliv zásahu do obchodu. Je to pouhá fikce nebo reálná záležitost? Kolik z nás věří, že "roboti" mohou profitabilně obchodovat? Na jakých principech fungují?
Forex volatilita
Forex volatilita, co je volatilita? Velmi užitečným nástrojem je ukazatel volatility na forexu. Grafy v této sekci ukazují volatilitu vybraného měnových párů v průběhu aktuální obchodní seance.
Forex zůstává největším trhem na světě
V dnešním článku se podíváme na nejnovější statistiky globálního obchodování na forexu. Banka pro mezinárodní vyrovnání plateb (BIS) totiž před pár týdny zveřejnila svůj pravidelný tříletý přehled, ve kterém detailně analyzuje vývoj na měnovém trhu. BIS je označována jako "centrální banka centrálních bank". Je nejstarší mezinárodní finanční organizací a hraje klíčovou roli při spolupráci centrálních bank a dalších institucí z finančního sektoru. Dnešní vzdělávací článek sice nebude zcela zaměřen na praktické informace z pohledu běžného tradera, ale i přesto přinese zajímavé a důležité poznatky.

Nejnovější články:


Naposledy čtené:

Forex brokeři
reklama
RebelsFunding