Úterý 19. březen 2024 05:39
reklama
Swissquote Bank
reklama
CapXmaster
reklama
XTB trading konference 2024
reklama
Instaforex ebook

EA - Posunutie SL na 1/2 a následne na BE

Pozdravujem všetkých,

potreboval by som poradiť. Chcem si spraviť EA na posúvanie SL pri dosiahnutí určitého zisku. Klasické posunutie SL na BE pri dosiahnutí určitého zisku mi je celkom jasné a EA s touto funkciou nie je problém na webe nájsť.
Rovnako som našiel aj EA pre Trailing stop.
Ja však chcem posunúť SL len dvakrát a to:
1. krát chcem SL posunúť na 1/2 pri dosiahnutí zisku 1:1
2. krát chcem SL posunúť na BE pri dosiahnutí zisku 1:2

Upravil som EA na klasické posúvanie SL na BE tak, aby fungovalo popísaným spôsobom, avšak funguje len pre jeden otvorený obchod na danom menovom páre.

--------------------------------------------------

extern bool x = true;   //keď x = true, vykoná sa posunutie na 1/2 SL v prípade, že sú splenné podmienky
                                  //keď x = false, vykoná sa posunutie na BE v prípade, že sú splnené podmienky 

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if(Symbol()=="USDJPY" || Symbol()=="EURJPY" || Symbol()=="GBPJPY")
      return(0);

   int type;
   int ticket;
   int total = OrdersTotal();
   double openPrice, stopPrice;

   for(int i=total-1;i>=0;i--)
   {
      for(int j=i;j>=0;j--)
      if(OrderSelect(i, SELECT_BY_POS))
      {
         ticket = OrderTicket();
         type = OrderType();
         openPrice = OrderOpenPrice();
         stopPrice = OrderStopLoss();
         if(x = true && type == OP_SELL && stopPrice > openPrice && Ask <= (openPrice-(stopPrice-openPrice)) && OrderSymbol()==Symbol())
            OrderModify(ticket,OrderOpenPrice(),(openPrice+(stopPrice-openPrice)/2),OrderTakeProfit(),0,Red);
            x = false;
         if(x = true && type == OP_BUY && stopPrice < openPrice && Bid >= (openPrice+(openPrice-stopPrice)) && OrderSymbol()==Symbol())
            OrderModify(ticket,OrderOpenPrice(),(openPrice-(openPrice-stopPrice)/2),OrderTakeProfit(),0,Blue);
            x = false;
         if(x = false && type == OP_SELL && stopPrice > openPrice && Ask <= (4*(openPrice-(openPrice-stopPrice))) && OrderSymbol()==Symbol())
            OrderModify(ticket,OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Red);
            x = true;
         if(x = false && type == OP_BUY && stopPrice < openPrice && Bid >= (4*(openPrice+(openPrice-stopPrice))) && OrderSymbol()==Symbol())
            OrderModify(ticket,OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Blue);
            x = true;
      }
   }

//----
   return(0);
  }

-------------------------------------------------------------------------------------------

Potrebujem, aby posúvanie SL fungovalo aj pre viac otvorených obchodov na jednom páre.
Obchody budú mať rôzne veľkosti SL a budú sa zadávať priebežne aj počas chodu EA.

Viete mi s tým niekto pomôcť?
Vopred ďakujem za každú radu.

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 - Posunutie SL na 1/2 a následne na BE (7 odpovědí)
martyscz
Nováček v diskuzi
avatar
Příspěvky: 6
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Posunutie SL 01.07.2020 14:51
Odpověď na: Andílek

Teď se jedu projet na kole. Takže pokud sem nikdo do té doby nedá nic, tak Vám to k večeru sem pošlu. Jen Vás poprosím, abyste přede mnou raději nepoužíval PIPy (zastaralá, nejednoznačná jednotka, která je navíc spojena pouze s měnovými páry a já jsem na nesprávné používání mírně alergický), ale budeme se spolu bavit buď o bodech nebo o tick value.

Omlouvám se, jsem začatečník :) Budu moc rád za Vaši pomoc. Nespěchá to, takže až budete mít čas.

Jak u jsem zmínil, tak při posunu profitu o 200 (250) bodů,tak změnit SL na BE kromě zlata. Tam bych rád zvolil 500 bodů alespoň v profitu. Tam jsou větší pohyby, ale jinak nemám potřebu to měnit u jiných měnových párů.

Ideální by bylo,kdybych to mohl měnit tyto hodnoty a testoval v reálu, ovšem to není podmínkou.

 

Mnohokrát děkuji za pomoc

Andílek
Veteran member
avatar
Příspěvky: 1238
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Posunutie SL 01.07.2020 18:10
Odpověď na: martyscz

Omlouvám se, jsem začatečník :) Budu moc rád za Vaši pomoc. Nespěchá to, takže až budete mít čas.

Jak u jsem zmínil, tak při posunu profitu o 200 (250) bodů,tak změnit SL na BE kromě zlata. Tam bych rád zvolil 500 bodů alespoň v profitu. Tam jsou větší pohyby, ale jinak nemám potřebu to měnit u jiných měnových párů.

Ideální by bylo,kdybych to mohl měnit tyto hodnoty a testoval v reálu, ovšem to není podmínkou.

 

Mnohokrát děkuji za pomoc

Vzhledem k tomu, že sem nikdo požadovaný kód nedal, tak jsem ho vytvořil a dávám ho k dispozici.

Jsou tam tři skupiny symbolů. Pro každou skupinu je možné nastavit vlastní vzdálenost od otevírací ceny, kdy se aktivuje SL. Symboly do skupiny se zadávají oddělené středníkem. Nezáleží na malých a velkých písmenech a na přidaných mezerách před a za symbolem. Jinak ale musí symbol odpovídat názvu symbolu, tak jak je uveden v terminálu (tzn. včetně prefixu a suffixu). Např. pokud je název symbolu v terminálu „EURUSD_ecn“, tak nestačí napsat „EURUSD“. Pokud symbol nebude ani v první, ani ve druhé skupině, tak se automaticky předpokládá, že patří do třetí skupiny. Takže pro Vaše potřeby bylo nejvhodnější do první skupiny zadat symbol pro zlato a nastavit 500 bodů pro tuto skupinu, druhou skupinu ponechat prázdnou (mohl byste do ní zadat např. symboly, které by se neměly tímto AOS posouvat na BE a nastavit u nich velmi velkou vzdálenost) a ve třetí skupině (všechny ostatní symboly, které nejsou v první ani ve druhé skupině) se nastavuje pouze vzdálenost.

Tento AOS nekontroluje vstupy (např, jestli symbol existuje) a správnost zadání je čistě na uživateli. Další vylepšení by mohlo být v podobě možnosti zadávání symbolů bez prefixů a suffixů. Zároveň tento AOS nekontroluje narušení pravidel pro „Stops Level“ a „Freeze Level“. Také se nesnaží při neúspěšné modifikaci o opětovný pokus, neposílá aletry při nestandardních situacích a v zadaném intervalu timeru hlídá pouze aktuální cenu, zdali dosáhla požadované hranice (takže pokud si timer nastavíte na delší čas, tak se může stát, že cena hranici překoná a stačí se vrátit a v tomto případě k posunu na BE nedojde. Asi by bylo lepší hlídat cenovou historii). Všechny tyto vylepšení a bezpečnostní prvky jsou sice možné, ale tento zdrojový kód je zadarmo, takže nemusí být dokonalý. Důležité je, že jsem Vás na všechna možná úskalí upozornil a pro běžné použití je tento kód dostatečně robustní.

Ze zřejmých důvodů jsem kód nezkoušel, takže pokud by tam byla nějaká chybka (to se u sw může jednoduše stát), tak dejte vědět a já to opravím. Pokud si bude kdokoli chtít zdrojový kód upravit, tak s tím nemám žádný problém.

Zdrojový kód

drobcek73
Nováček v diskuzi
avatar
Příspěvky: 19
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Posunutie SL 01.07.2020 21:53
Odpověď na: Andílek

Vzhledem k tomu, že sem nikdo požadovaný kód nedal, tak jsem ho vytvořil a dávám ho k dispozici.

Jsou tam tři skupiny symbolů. Pro každou skupinu je možné nastavit vlastní vzdálenost od otevírací ceny, kdy se aktivuje SL. Symboly do skupiny se zadávají oddělené středníkem. Nezáleží na malých a velkých písmenech a na přidaných mezerách před a za symbolem. Jinak ale musí symbol odpovídat názvu symbolu, tak jak je uveden v terminálu (tzn. včetně prefixu a suffixu). Např. pokud je název symbolu v terminálu „EURUSD_ecn“, tak nestačí napsat „EURUSD“. Pokud symbol nebude ani v první, ani ve druhé skupině, tak se automaticky předpokládá, že patří do třetí skupiny. Takže pro Vaše potřeby bylo nejvhodnější do první skupiny zadat symbol pro zlato a nastavit 500 bodů pro tuto skupinu, druhou skupinu ponechat prázdnou (mohl byste do ní zadat např. symboly, které by se neměly tímto AOS posouvat na BE a nastavit u nich velmi velkou vzdálenost) a ve třetí skupině (všechny ostatní symboly, které nejsou v první ani ve druhé skupině) se nastavuje pouze vzdálenost.

Tento AOS nekontroluje vstupy (např, jestli symbol existuje) a správnost zadání je čistě na uživateli. Další vylepšení by mohlo být v podobě možnosti zadávání symbolů bez prefixů a suffixů. Zároveň tento AOS nekontroluje narušení pravidel pro „Stops Level“ a „Freeze Level“. Také se nesnaží při neúspěšné modifikaci o opětovný pokus, neposílá aletry při nestandardních situacích a v zadaném intervalu timeru hlídá pouze aktuální cenu, zdali dosáhla požadované hranice (takže pokud si timer nastavíte na delší čas, tak se může stát, že cena hranici překoná a stačí se vrátit a v tomto případě k posunu na BE nedojde. Asi by bylo lepší hlídat cenovou historii). Všechny tyto vylepšení a bezpečnostní prvky jsou sice možné, ale tento zdrojový kód je zadarmo, takže nemusí být dokonalý. Důležité je, že jsem Vás na všechna možná úskalí upozornil a pro běžné použití je tento kód dostatečně robustní.

Ze zřejmých důvodů jsem kód nezkoušel, takže pokud by tam byla nějaká chybka (to se u sw může jednoduše stát), tak dejte vědět a já to opravím. Pokud si bude kdokoli chtít zdrojový kód upravit, tak s tím nemám žádný problém.

Zdrojový kód

Andílku, robíte pre túto komunitu veľký kus práce "for free". Klobúk dole! 

Ak máš cieľ a veríš mu, choď za ním! Život je cesta - v konečnom dôsledku totiž nie je dôležité kam ideš, ale všetko, čo ťa po ceste stretne... Teda, keď budeš mať namierené k slnku, určite sa dostaneš aspoň na mesiac, ale keď nebudeš mať žiadny cieť, tak trafíš maximálne do kopy hnoja (morálneho i fyzického), ktorá je všade okolo teba...
martyscz
Nováček v diskuzi
avatar
Příspěvky: 6
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Posunutie SL 01.07.2020 23:49
Odpověď na: Andílek

Vzhledem k tomu, že sem nikdo požadovaný kód nedal, tak jsem ho vytvořil a dávám ho k dispozici.

Jsou tam tři skupiny symbolů. Pro každou skupinu je možné nastavit vlastní vzdálenost od otevírací ceny, kdy se aktivuje SL. Symboly do skupiny se zadávají oddělené středníkem. Nezáleží na malých a velkých písmenech a na přidaných mezerách před a za symbolem. Jinak ale musí symbol odpovídat názvu symbolu, tak jak je uveden v terminálu (tzn. včetně prefixu a suffixu). Např. pokud je název symbolu v terminálu „EURUSD_ecn“, tak nestačí napsat „EURUSD“. Pokud symbol nebude ani v první, ani ve druhé skupině, tak se automaticky předpokládá, že patří do třetí skupiny. Takže pro Vaše potřeby bylo nejvhodnější do první skupiny zadat symbol pro zlato a nastavit 500 bodů pro tuto skupinu, druhou skupinu ponechat prázdnou (mohl byste do ní zadat např. symboly, které by se neměly tímto AOS posouvat na BE a nastavit u nich velmi velkou vzdálenost) a ve třetí skupině (všechny ostatní symboly, které nejsou v první ani ve druhé skupině) se nastavuje pouze vzdálenost.

Tento AOS nekontroluje vstupy (např, jestli symbol existuje) a správnost zadání je čistě na uživateli. Další vylepšení by mohlo být v podobě možnosti zadávání symbolů bez prefixů a suffixů. Zároveň tento AOS nekontroluje narušení pravidel pro „Stops Level“ a „Freeze Level“. Také se nesnaží při neúspěšné modifikaci o opětovný pokus, neposílá aletry při nestandardních situacích a v zadaném intervalu timeru hlídá pouze aktuální cenu, zdali dosáhla požadované hranice (takže pokud si timer nastavíte na delší čas, tak se může stát, že cena hranici překoná a stačí se vrátit a v tomto případě k posunu na BE nedojde. Asi by bylo lepší hlídat cenovou historii). Všechny tyto vylepšení a bezpečnostní prvky jsou sice možné, ale tento zdrojový kód je zadarmo, takže nemusí být dokonalý. Důležité je, že jsem Vás na všechna možná úskalí upozornil a pro běžné použití je tento kód dostatečně robustní.

Ze zřejmých důvodů jsem kód nezkoušel, takže pokud by tam byla nějaká chybka (to se u sw může jednoduše stát), tak dejte vědět a já to opravím. Pokud si bude kdokoli chtít zdrojový kód upravit, tak s tím nemám žádný problém.

Zdrojový kód

Funguje to skvěle. Ještě mě napadla jedna myšlenka. Šlo by tam přidat podmínku,že při dosažení profitu 500 bodů od vstupní ceny, tak posune SL z BE o 200 bodů.

Jedná se mi o to, že mám bežně

SL   -1000bodů
TP1 +200 bodů
TP2 +500 bodů
TP3 +1000 bodů
 
Ideální by bylo kdyby se ten SL posouval vždy o jeden TP při zasažení dalšího TP, ovšem tam by možná byl problém ve zdrojovém kódu kvůli určení původní ceny vstupu.
 
Viděl jsem na internetu takový to BE skript,který uzavírá pozice postupně, ovšem fungovalo to jen na jeden instrument.
Bohatě by stačilo i těch 200 bodů na pevno posunout při 500 bodech v profitu.
 
U zlata by to možná dělalo neplechu kvůli rozdílnému posunutí SL, ale pokud by to bylo rozdělené jako v původním zdrojovem kódu,který jste sdílel, tak by měl robot určit lehce o kolik daný instrument posunout.
 
 
Vím,že si výmýšlím, ale klidně zaplatím, protože vím,že to zabere nějaký čas. :)
Andílek
Veteran member
avatar
Příspěvky: 1238
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Posunutie SL 02.07.2020 08:31
Odpověď na: martyscz

Funguje to skvěle. Ještě mě napadla jedna myšlenka. Šlo by tam přidat podmínku,že při dosažení profitu 500 bodů od vstupní ceny, tak posune SL z BE o 200 bodů.

Jedná se mi o to, že mám bežně

SL   -1000bodů
TP1 +200 bodů
TP2 +500 bodů
TP3 +1000 bodů
 
Ideální by bylo kdyby se ten SL posouval vždy o jeden TP při zasažení dalšího TP, ovšem tam by možná byl problém ve zdrojovém kódu kvůli určení původní ceny vstupu.
 
Viděl jsem na internetu takový to BE skript,který uzavírá pozice postupně, ovšem fungovalo to jen na jeden instrument.
Bohatě by stačilo i těch 200 bodů na pevno posunout při 500 bodech v profitu.
 
U zlata by to možná dělalo neplechu kvůli rozdílnému posunutí SL, ale pokud by to bylo rozdělené jako v původním zdrojovem kódu,který jste sdílel, tak by měl robot určit lehce o kolik daný instrument posunout.
 
 
Vím,že si výmýšlím, ale klidně zaplatím, protože vím,že to zabere nějaký čas. :)

Dodělat téměř cokoli je samozřejmě možné, ale asi bude lepší, aby případné úpravy (nebo opravy) neplevelily zbytečně diskuzi. Takže pokud někdo chce něco upravit/opravit, tak se mi ozvěte přes e-mail (je v záhlaví zdrojového kódu).

avatar
Veteran member
avatar
Příspěvky: 3444
Více informací o uživateli >>
... 03.07.2020 21:22

Mám univerzálny EA (manažer), ktorý dokáže aj toto. Rád sa oň podelím, ak sa pokúsiš opraviť drobnú funkčnú chybu. Oprava ale nemusí byť drobná z hľadiska kódu. Je to dosť zložité a nemusí to byť napísané prehľadne, lebo bol vyvíjaný a odlaďovaný dlhšiu dobu.

janka74
Nováček v diskuzi
avatar
Příspěvky: 19
Více informací o uživateli >>
Re: ... 25.09.2020 09:51
Odpověď na: avatar

Mám univerzálny EA (manažer), ktorý dokáže aj toto. Rád sa oň podelím, ak sa pokúsiš opraviť drobnú funkčnú chybu. Oprava ale nemusí byť drobná z hľadiska kódu. Je to dosť zložité a nemusí to byť napísané prehľadne, lebo bol vyvíjaný a odlaďovaný dlhšiu dobu.

Skušam zdrojový kod čo sem dal martycsz ale aj ine AOS aby mi po prejdení 20pipov bol SL posunutý na BY a stal tam. Všetky AOSy nastavím ako treba a stále mi to zatvára po 0,01 pipu v pluse.V čom mám problém, čo robím zle? 

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
AGM Markets
iFOREX
GKFX
reklama
XTB trading konference 2024