Úterý 17. září 2019 17:00
reklama
UFX
reklama
UFX
reklama
RoboMarkets

mql zjištění zůstatku otevřených pozic

Zdravím, prosím o radu. Už pár dní se snažím najít jak si v AOS "ošéfovat" max. velikost ztráty u všech otevřených pozic . Nevím jak si vyvolat hodnotu "celkového zisku" . Běži mi více strategií na jednom páru. Asi víte co myslím a určitě to jde vyvolat nějakým příkazem a pak dát jen podmínku, že při dosažení či překročení chci uzavřít pozice. Neumím angl. a nedaří se mi to najít. víte někdo jak na to? Díky.

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 mql zjištění zůstatku otevřených pozic (14 odpovědí)
micool
Nováček v diskuzi
avatar
Příspěvky: 5
Více informací o uživateli >>
myslim, ze nejako takto 16.07.2019 11:29

double total_profit()
{
  double tt_profit = 0.0;
  for( int x = 0; x < OrdersTotal(); x++ ) {
    if(OrderSelect( x, SELECT_BY_POS, MODE_TRADES ) ) {
      if(OrderSymbol() == MySymbol ) {
        tt_profit += OrderProfit();
      }
    }
  }
  return(tt_profit);
}

Heryl
Silver member
avatar
Příspěvky: 293
Více informací o uživateli >>
Re: myslim, ze nejako takto 16.07.2019 21:46
Odpověď na: micool

double total_profit()
{
  double tt_profit = 0.0;
  for( int x = 0; x < OrdersTotal(); x++ ) {
    if(OrderSelect( x, SELECT_BY_POS, MODE_TRADES ) ) {
      if(OrderSymbol() == MySymbol ) {
        tt_profit += OrderProfit();
      }
    }
  }
  return(tt_profit);
}

Mrknu na to, jako programátor amatér a samouk :) jsem pochopil že mám tedy použít pro podmínku celkového zisku tt_profit ?

Je to cykl hodnoty X s načítáním každého zisku do proměnné tt_profit?  Mohl by jste mi prosím popsat řádek po řádku? Já se to takhle učím , podle jiných strategií. Z tohoto nevím proč cykl končí x< OrdersTotal - tedy před posledním příkazem ? A nerozumím těm podmínkám if(OrderSelect( x, SELECT_BY_POS, MODE_TRADES ) ) {
if(OrderSymbol() == MySymbol ) , to je tam proč?

Zatím moc děkuji!

Broker: XTB, AM | Typ účtu: Real | Obchodní systém: ruční, S/R, TrendLine | Indikátory: různé | Ostatní: začátečník.
Petr Kouba
Silver member
avatar
Příspěvky: 72
Více informací o uživateli >>
Jak na to 17.07.2019 08:00

Ahoj,

pokud píšeš, že máš více běžících strategií na jednom páru a pokud vidím Tvé dotazy, tak bych Ti doporučil to řešit jedním AOSkem, který to ohlídá. Napiš si do vyhledávače mq4 close profit a můžeš si free stáhnout mq4, které to jednoduše vyřeší za Tebe. Bude to rozhodně efektivnější :-) 

Od roku 2015 se věnuju na 100% už jen problematice AOS. Algotrading je jen hra s pravděpodobností, nic víc, nic míň. Tweetuju pod nickem @investor666666
Heryl
Silver member
avatar
Příspěvky: 293
Více informací o uživateli >>
Re: Jak na to 18.07.2019 19:09
Odpověď na: Petr Kouba

Ahoj,

pokud píšeš, že máš více běžících strategií na jednom páru a pokud vidím Tvé dotazy, tak bych Ti doporučil to řešit jedním AOSkem, který to ohlídá. Napiš si do vyhledávače mq4 close profit a můžeš si free stáhnout mq4, které to jednoduše vyřeší za Tebe. Bude to rozhodně efektivnější :-) 

Díky za radu. Já se snažím to trochu pochopit a  raději používám věci kterým rozumím. Ono je kolikrát složitější pochopit jak přesně funguje hotový AOS od někoho z netu než si těch pár řádků napsat. Několik AOS jsem si již naprogamoval a světe div se zatím mi běží na VPS a chovají se jak jsem chtěl.smile

Broker: XTB, AM | Typ účtu: Real | Obchodní systém: ruční, S/R, TrendLine | Indikátory: různé | Ostatní: začátečník.
Heryl
Silver member
avatar
Příspěvky: 293
Více informací o uživateli >>
re 18.07.2019 19:39

A koukám, že to jde udělat asi i trochu jinak a pro mne úplně jednoduše a elegantně. Dokonce můj nejmenovaný broker tuto funkci nabízí ve svém MT. To jsem si předtím nevšiml. Děkuji za snahu a micool variantu si prostuduji .

Broker: XTB, AM | Typ účtu: Real | Obchodní systém: ruční, S/R, TrendLine | Indikátory: různé | Ostatní: začátečník.
Heryl
Silver member
avatar
Příspěvky: 293
Více informací o uživateli >>
Re: re 18.07.2019 20:18
Odpověď na: Heryl

A koukám, že to jde udělat asi i trochu jinak a pro mne úplně jednoduše a elegantně. Dokonce můj nejmenovaný broker tuto funkci nabízí ve svém MT. To jsem si předtím nevšiml. Děkuji za snahu a micool variantu si prostuduji .

Tak si s tím hraju a zatim jim to moc nefunguje. No budu testovat. dát dokupy to musím . :)

Broker: XTB, AM | Typ účtu: Real | Obchodní systém: ruční, S/R, TrendLine | Indikátory: různé | Ostatní: začátečník.
Legy1
Gold member
avatar
Příspěvky: 631
Více informací o uživateli >>
a čo tak celý indikátor 18.07.2019 20:53

skús tento:   

Open Position v3a - Updated for MT4 Build 600 - indicator for MetaTrader 4

tu je odkaz:   https://www.mql5.com/en/code/11013

XM.COM-MT4 reálny účet
Heryl
Silver member
avatar
Příspěvky: 293
Více informací o uživateli >>
re 19.07.2019 15:53

Tak jsem si s tím pohrál a použil částečně micool kód a dodělal to tak abych tomu rozuměl .Zatím otestoval na účtu s jednou strategií na demu a funguje. Tak uvidíme až to budu testovat déle. Určitě by to šlo lépe a asi tam najdete mouchy, ale takhle nějak tomu rozumím, snad to pofachá. Přikládám kód pro info:


int total_profit= -1000;
int b=0;
int start()

{
//----
double tt_profit = 0.0;
for( int x = 0; x < OrdersTotal(); x++ )
{ if(OrderSelect( x, SELECT_BY_POS, MODE_TRADES ) )
{ tt_profit += OrderProfit();
{Comment(tt_profit);}
if (tt_profit<total_profit) ////////////////
{
for(int y=OrdersTotal()-1;y>=0;y--)
{
if(!OrderSelect(y,SELECT_BY_POS,MODE_TRADES)) continue;
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,clrRed));
else Alert("All Closed");
}
}
} ///////////////////
}
}
return(tt_profit);
//////////////////////////////////////////////////////////////////////////
return(0);
}

Broker: XTB, AM | Typ účtu: Real | Obchodní systém: ruční, S/R, TrendLine | Indikátory: různé | Ostatní: začátečník.
Heryl
Silver member
avatar
Příspěvky: 293
Více informací o uživateli >>
Re: re 19.07.2019 16:00
Odpověď na: Heryl

Tak jsem si s tím pohrál a použil částečně micool kód a dodělal to tak abych tomu rozuměl .Zatím otestoval na účtu s jednou strategií na demu a funguje. Tak uvidíme až to budu testovat déle. Určitě by to šlo lépe a asi tam najdete mouchy, ale takhle nějak tomu rozumím, snad to pofachá. Přikládám kód pro info:


int total_profit= -1000;
int b=0;
int start()

{
//----
double tt_profit = 0.0;
for( int x = 0; x < OrdersTotal(); x++ )
{ if(OrderSelect( x, SELECT_BY_POS, MODE_TRADES ) )
{ tt_profit += OrderProfit();
{Comment(tt_profit);}
if (tt_profit<total_profit) ////////////////
{
for(int y=OrdersTotal()-1;y>=0;y--)
{
if(!OrderSelect(y,SELECT_BY_POS,MODE_TRADES)) continue;
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,clrRed));
else Alert("All Closed");
}
}
} ///////////////////
}
}
return(tt_profit);
//////////////////////////////////////////////////////////////////////////
return(0);
}

A už je tam někde chybka, nevím jak editovat  příspěvek tak si budu psát dál a dál. Bere mi to jen hodnotu celkového základního nastavení ztráty. Změna v tabulce u strategie se ignoruje. Ne že by to vadilo, ale něco tam je špatně :) .

Broker: XTB, AM | Typ účtu: Real | Obchodní systém: ruční, S/R, TrendLine | Indikátory: různé | Ostatní: začátečník.
Heryl
Silver member
avatar
Příspěvky: 293
Více informací o uživateli >>
re 19.07.2019 16:02

Jsem o ale jáááááááááááááátroooooooo  laughing už to vidím.

Broker: XTB, AM | Typ účtu: Real | Obchodní systém: ruční, S/R, TrendLine | Indikátory: různé | Ostatní: začátečník.
Heryl
Silver member
avatar
Příspěvky: 293
Více informací o uživateli >>
Re: re 19.07.2019 16:07
Odpověď na: Heryl

Jsem o ale jáááááááááááááátroooooooo  laughing už to vidím.

total_profit hodit do vstupních parametrů, jen pro  neprogramátory který by to chtěli studovat

Samozřejmě je to pouze ke studijním účelům a používat tento prográmek nedoporučuji a nenesu žádnou odpovědnost za jeho případné zneužití a používání a bla bla bla....smile

Broker: XTB, AM | Typ účtu: Real | Obchodní systém: ruční, S/R, TrendLine | Indikátory: různé | Ostatní: začátečník.
micool
Nováček v diskuzi
avatar
Příspěvky: 5
Více informací o uživateli >>
Re: Re: re 25.07.2019 12:55
Odpověď na: Heryl

total_profit hodit do vstupních parametrů, jen pro  neprogramátory který by to chtěli studovat

Samozřejmě je to pouze ke studijním účelům a používat tento prográmek nedoporučuji a nenesu žádnou odpovědnost za jeho případné zneužití a používání a bla bla bla....smile

Len pre istotu, mas tam dva for cykly, ale zle je to, ze druhy mas vnoreny. Najskor chces zistit aky mas profit/strata to zistis prvym cyklom. Potom ked mas tuto hodnotu, tak sa chces rozhodnut ci vsetko zavriet alebo ponechat to je druhy cyklus.

Inak odporucam vytvarat funkcie s komentarom, aby si si nerobil zbytocne duplicitny kod, ale tiez aj koli prehladnosti kodu.

Legy1
Gold member
avatar
Příspěvky: 631
Více informací o uživateli >>
Zistenie počtu otvorených pozícií buy a sell - doplnenie kódu 25.07.2019 19:13

Našiel som indikátor ktorý mi ukazuje pocet otvorených obchodov(buy + sell), objem, profit/stratu otvorených obchodov a profit/stratu zatvorených obchodov.

Potrebujem si doplniť počet otvorených obchodov samostatne pre sell a buy. Zatiaľ si s tým neviem poradiť. Mal by som použiť funkciu 

OrderType();

  
ale neviem ako má vyzerať a kam ju mám presne dať do časti kódu nižšie.
Ďakujem za pomoc.

Tu je časť kódu kde sa ráta počet otvorených pozícií:

void Output_Row(int row, string sym)
{
SetLabel(s+"objSymbol" + row, sym, Black, 350 + lroffset, 30 + (row + 1)*14 +tboffset, corner);
double trades =0;
double lots = 0.0;
double opnl = 0.0;
double cpnl =0.0;
double clots = 0.0;
double ctrades = 0;
int pos = 1, lcolor = Black;
for(int i =0; i < OrdersTotal(); i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if((OrderMagicNumber() == MagicNumber || MagicNumber == -1 ) && OrderSymbol() == sym) {
opnl += OrderProfit()+OrderCommission()+OrderSwap();
lots += OrderLots();
trades +=1;
if(OrderType() == OP_SELL) pos = -1;
}
}
if (pos == 1) lcolor = Green;
if (pos ==-1) lcolor = Red;
int clr = Green; if(opnl <0) clr = Red;
SetLabel(s+"objTrades" + row, DoubleToStr(trades,0), Black, 250 + lroffset, 30 + (row + 1)*14 + tboffset, corner);
SetLabel(s+"objLots" + row, DoubleToStr(lots,2), lcolor, 200 + lroffset, 30 + (row + 1)*14 + tboffset, corner);
SetLabel(s+"objOpenPnL" + row, DoubleToStr(opnl,2), clr, 130 + lroffset, 30 + (row + 1)*14 + tboffset, corner);

for(i =0; i < OrdersHistoryTotal(); i++) {
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if((OrderMagicNumber() == MagicNumber || MagicNumber == -1) && OrderSymbol() == sym) {
cpnl += OrderProfit()+OrderCommission()+OrderSwap();
clots += OrderLots();
ctrades +=1;
}
}
if (cpnl >=0) lcolor = Green; else lcolor = Red;
SetLabel(s+"objClosedPnL" + row, DoubleToStr(cpnl,2), lcolor, 70 + lroffset, 30 + (row + 1)*14 + tboffset, corner);
tottrades += trades;
totlots += lots;
totopnl += opnl;
totcpnl += cpnl;
}

XM.COM-MT4 reálny účet
Heryl
Silver member
avatar
Příspěvky: 293
Více informací o uživateli >>
Re: Re: Re: re 04.08.2019 17:51
Odpověď na: micool

Len pre istotu, mas tam dva for cykly, ale zle je to, ze druhy mas vnoreny. Najskor chces zistit aky mas profit/strata to zistis prvym cyklom. Potom ked mas tuto hodnotu, tak sa chces rozhodnut ci vsetko zavriet alebo ponechat to je druhy cyklus.

Inak odporucam vytvarat funkcie s komentarom, aby si si nerobil zbytocne duplicitny kod, ale tiez aj koli prehladnosti kodu.

Takže takto?

int start()

{
//----
double tt_profit = 0.0;
for( int x = 0; x < OrdersTotal(); x++ )
{ if(OrderSelect( x, SELECT_BY_POS, MODE_TRADES ) )
{ tt_profit += OrderProfit();

{Comment(tt_profit);}

}
}

if (tt_profit<total_profit) ////////////////


{
for(int y=OrdersTotal()-1;y>=0;y--)
{
if(!OrderSelect(y,SELECT_BY_POS,MODE_TRADES)) continue;
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,clrRed));
else Alert("All Closed");
}
}
} ///////////////////


return(tt_profit);
//////////////////////////////////////////////////////////////////////////
return(0);
}

 

Ale fungovalo to laughing

 

Broker: XTB, AM | Typ účtu: Real | Obchodní systém: ruční, S/R, TrendLine | Indikátory: různé | Ostatní: začátečník.

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, až doposud využívanou pouze několika profesionálními tradery, a k tomu i exkluzivní Price Action VIP indikátor, 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ý Price Action VIP indikátor, 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é:

reklama