zamykanie przy proficie lub stracie np 5% kapitału

O jezykach programowania w platformach i nie tylko.
poxter
Stały bywalec
Stały bywalec
Posty: 39
Rejestracja: 26 gru 2007, 20:57

zamykanie przy proficie lub stracie np 5% kapitału

Nieprzeczytany post autor: poxter »

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%??

Awatar użytkownika
xpep
Pasjonat
Pasjonat
Posty: 844
Rejestracja: 02 gru 2007, 11:50

Nieprzeczytany post autor: xpep »

Kod: Zaznacz cały


if( (OrderProfit()*-1) >= (AccountBalance()*0.05) )


poxter
Stały bywalec
Stały bywalec
Posty: 39
Rejestracja: 26 gru 2007, 20:57

Nieprzeczytany post autor: poxter »

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.

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);
 
               }
            }
} 
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

Awatar użytkownika
xpep
Pasjonat
Pasjonat
Posty: 844
Rejestracja: 02 gru 2007, 11:50

Nieprzeczytany post autor: xpep »

poxter pisze:Będę wdzięczny za pomoc i mam nadzieje że zrozumiale napisałem
troche namieszales :D ma zamykac pozycje jesli jest ona +5% tak?

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);
                     }
               }
      }
}

poxter
Stały bywalec
Stały bywalec
Posty: 39
Rejestracja: 26 gru 2007, 20:57

Nieprzeczytany post autor: poxter »

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

Awatar użytkownika
xpep
Pasjonat
Pasjonat
Posty: 844
Rejestracja: 02 gru 2007, 11:50

Nieprzeczytany post autor: xpep »

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); 
      } 
  }
}

poxter
Stały bywalec
Stały bywalec
Posty: 39
Rejestracja: 26 gru 2007, 20:57

Nieprzeczytany post autor: poxter »

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

Awatar użytkownika
xpep
Pasjonat
Pasjonat
Posty: 844
Rejestracja: 02 gru 2007, 11:50

Nieprzeczytany post autor: xpep »

to masz w 2 moich postach rozwiazanie :D wystarczy troche inwencji z twojej strony :wink:

poxter
Stały bywalec
Stały bywalec
Posty: 39
Rejestracja: 26 gru 2007, 20:57

Nieprzeczytany post autor: poxter »

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.

Awatar użytkownika
xpep
Pasjonat
Pasjonat
Posty: 844
Rejestracja: 02 gru 2007, 11:50

Nieprzeczytany post autor: xpep »

Kod: Zaznacz cały

if(OrderSymbol()=="EURUSD") 
to sluzy do wybierania pary walutowej :D

ODPOWIEDZ