zamykanie przy proficie lub stracie np 5% kapitału
zamykanie przy proficie lub stracie np 5% kapitału
Witam, znany jest kodzik do zamykania wszystkich pozycji po magicnumberze przy danym proficie dla pipsów,
a jak zamknąć owe pozycje dopiero przy założeniu profitu lub straty na poziomie np 5%??
a jak zamknąć owe pozycje dopiero przy założeniu profitu lub straty na poziomie np 5%??
Kod: Zaznacz cały
if( (OrderProfit()*-1) >= (AccountBalance()*0.05) )
witam, dzięki działa ten kodzik jednak mam mały problemik, dla zamykania przy profcie 5% dla danej pary usd z różnymi magicami.
niby zamyka wszytko ale nie podlicza profitót i jak tylko na jednej transakcji przekroczy profit zamyka wszystkie (a na ogół na razem wszystkie nie maja danego profitu)
Będę wdzięczny za pomoc i mam nadzieje że zrozumiale napisałem
Kod: Zaznacz cały
for (zam = 0 ; zam <= total ; zam++)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()=="EURUSD")
{
// sprawdzamy najpierw czy na danej parze suma pozycji jest > 0
zamk = zamk + OrderProfit();
}
}
// sprawdzamy czy zyska na wyszystkich pozycjach jest taki jak chcemy
if ( (zamk *1) >= (AccountBalance()*0.05) ) //jeoli tak to zamykamy
{
for (zam = 0 ; zam <= total ; zam++)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()=="EURUSD")
{
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),5,Violet);
}
}
}
Będę wdzięczny za pomoc i mam nadzieje że zrozumiale napisałem
troche namieszalespoxter pisze:Będę wdzięczny za pomoc i mam nadzieje że zrozumiale napisałem

Kod: Zaznacz cały
for(int j = OrdersTotal()-1;j>=0;j--)
{ if( OrderSelect(j,SELECT_BY_POS,MODE_TRADES);
{ if(OrderSymbol()=="EURUSD")
{ if( OrderProfit())>= (AccountBalance()*0.05) )
{ OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),5,Violet);
}
}
}
}
ma zamykać wszystkie pozycje z eurusd gdy są wszystkie na plusie 5% (tzn sumujac je)
przykład (bardzo uproszczony)
1) 0,1 lota eurusd -aktualny zysk 6%
2) 0,3 lota eurusd - aktualny zysk 2%
3) 0,2 lota eurusd - aktualna strata 25%
to co mi podałeś zamyka pozycję 1 reszte trzyma (zresztą tak samo jak ja to zrobilem powyzej)
mnie chodzi aby jakos sumował zyski wszystkich i zamykal wszystkie jak bedzie zysk 5% . czyli na moim przykładzie nie zamyka żadnej!!
Mam nadzieje że teraz jest jaśniej;D
w chwili obecnej kod Twój jak mój nie działa tak jak ma działać - a przynajmniej nie w testerze meta4
przykład (bardzo uproszczony)
1) 0,1 lota eurusd -aktualny zysk 6%
2) 0,3 lota eurusd - aktualny zysk 2%
3) 0,2 lota eurusd - aktualna strata 25%
to co mi podałeś zamyka pozycję 1 reszte trzyma (zresztą tak samo jak ja to zrobilem powyzej)
mnie chodzi aby jakos sumował zyski wszystkich i zamykal wszystkie jak bedzie zysk 5% . czyli na moim przykładzie nie zamyka żadnej!!
Mam nadzieje że teraz jest jaśniej;D
w chwili obecnej kod Twój jak mój nie działa tak jak ma działać - a przynajmniej nie w testerze meta4
treraz wszystko jasne to zamyka tak jak chcesz:) a przynajmniej powinno
Kod: Zaznacz cały
if( ( AccountEquity()-AccountBalance() ) >= (AccountBalance()*0.05) )
{ for(int j = OrdersTotal()-1;j>=0;j--)
{ if( OrderSelect(j,SELECT_BY_POS,MODE_TRADES);
{ OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),5,Violet);
}
}
}
niezupełnie, ale chwilowo mnie satysfakcjonuje.
Tu z kolei sprawdza wszystkie pozycje na wszystkich parach (tak mi się wydaje, nie sprawdzalem jeszcze w praktyce) a mnie chodzi aby dla każdej pary lub dla danego magicnumbera tak działało.
Chwilowo jest ok i tak narazie testuje dla jednej pary.
Gdzieś kiedyś miałem indykator który zliczał profit dla danej pary i za pomocą tego pewnie by dało rady ale jakoś nie umiem go znaleźć.
No nic chwilowo potestuje sobie w ten sposób, potem się będę martwił i dumał co i jak;D
Dzięki i pozdrawiam
Tu z kolei sprawdza wszystkie pozycje na wszystkich parach (tak mi się wydaje, nie sprawdzalem jeszcze w praktyce) a mnie chodzi aby dla każdej pary lub dla danego magicnumbera tak działało.
Chwilowo jest ok i tak narazie testuje dla jednej pary.
Gdzieś kiedyś miałem indykator który zliczał profit dla danej pary i za pomocą tego pewnie by dało rady ale jakoś nie umiem go znaleźć.
No nic chwilowo potestuje sobie w ten sposób, potem się będę martwił i dumał co i jak;D
Dzięki i pozdrawiam
dam sobie rady, połączenie tych dwóch nie rozwiąże mojego celu, wynik będzie wypaczony;))) - mogę sie mylić nie jestem profesjonalnym programistą - staram się logicznie analizować i myśleć jak programista a to mała różnica.
(chwilowo nie mam jak posprawdzać w praktyce)
Pokrótce:
AccountEquity()-AccountBalance() ) >= (AccountBalance()*0.05)
weźmie pod uwage wszystlie pozycje np eurusd, eurgbp
a po użyciu jeszcze poprzedniego zamknie wszystkie z eurusd także może się okazać że zysk wygenerowała para eurgbp a zamknie te z eurusd
Ogólnie dzięki za pomoc, nie będę męczył dalej - więcej mi chwilowo nie potrzeba a pogłówkuje w późniejszym czasie sam.
(chwilowo nie mam jak posprawdzać w praktyce)
Pokrótce:
AccountEquity()-AccountBalance() ) >= (AccountBalance()*0.05)
weźmie pod uwage wszystlie pozycje np eurusd, eurgbp
a po użyciu jeszcze poprzedniego zamknie wszystkie z eurusd także może się okazać że zysk wygenerowała para eurgbp a zamknie te z eurusd
Ogólnie dzięki za pomoc, nie będę męczył dalej - więcej mi chwilowo nie potrzeba a pogłówkuje w późniejszym czasie sam.
Kod: Zaznacz cały
if(OrderSymbol()=="EURUSD")
