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

Nieprzeczytany post autor: poxter »

tak ja Cie rozumie ale Ty mnie nie bardzo;)))

nie wiem jak chcesz połączyć
AccountEquity()-AccountBalance() ) >= (AccountBalance()*0.05)
z
if(OrderSymbol()=="EURUSD")

tak aby działało tak jak ja chce.

A tak dla potomnych i dla Ciebie podaje gotowe rozwiązanie abyś mógł sprawdzić o co mi chodziło.

Kod: Zaznacz cały

double zysk=AccountBalance()*0.05;
double zamk=0;
for (zam = 0 ; zam <= total ; zam++)
            {
               OrderSelect(zam,SELECT_BY_POS,MODE_TRADES);
               if(OrderSymbol()=="EURUSD")
               {
                
               zamk+=OrderProfit();
               }
            }

if (zamk > zysk) 
{
for (zam = 0 ; zam <= total ; zam++)
            {
               OrderSelect(zam,SELECT_BY_POS,MODE_TRADES);
               if(OrderSymbol()=="EURUSD")
               {
             OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),5,Violet);
 
               }
            }
} 

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

Nieprzeczytany post autor: xpep »

poxter pisze:tak ja Cie rozumie ale Ty mnie nie bardzo;)))
nie dogadalismy sie :D

pozdro

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

Nieprzeczytany post autor: poxter »

zdarza się, najważniejsze że wszystko śmiga:D

tmkk90
Stały bywalec
Stały bywalec
Posty: 50
Rejestracja: 12 lip 2010, 19:13

Koniec programu

Nieprzeczytany post autor: tmkk90 »

Witam, mam maly problem... Mianowicie chcialbym aby po wzieciu danego TakeProfit, program 'wylaczyl sie' (nie otwieral juz innych pozyji)
czy jest jakas funckja ktora wywoluje zakonczenie programu?

z gory dziekuje za odpowiedz

mariusz14755
Uczestnik
Uczestnik
Posty: 1
Rejestracja: 31 sie 2009, 22:57

Nieprzeczytany post autor: mariusz14755 »

Prośba do XPEP'a - chodzi o skrypt CloseOrders.mq4 - jak wiadomo pozwala on zamykać "całą paczkę" zleceń na szereg różnych sposobów; czy mógłbyś ubogacić ten skrypt w wariant zaprezentowany przez Ciebie dnia 30-06-2010 , 7:26, konkretnie mam na myśli kod:

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


pozdro, Mariusz

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

Witam, mam maly problem... Mianowicie chcialbym aby po wzieciu danego TakeProfit, program 'wylaczyl sie' (nie otwieral juz innych pozyji)
czy jest jakas funckja ktora wywoluje zakonczenie programu?

z gory dziekuje za odpowiedz
funkcja zamykająca program to return (tzn ta funkcja mówi że kod nie ma być dalej wykonywany bo samego zamknięcia się nie da się zrobić)
musi być jeszcze warunek aby to return dodać
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

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

Nieprzeczytany post autor: poxter »

a powie mi ktoś jak zrobić to najkrócej jak się da bo próbuje tak ale coś na live mi nie działa

Kod: Zaznacz cały

//+------------------------------------------------------------------+
//| ea                                   |
//+------------------------------------------------------------------+
 

int start()
  {
        while(OrdersTotal()>0){
        
           if(   AccountEquity()  > AccountBalance()  )
  { 
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);
  }
  }
  }
  }
   return(0);
  }
//+------------------------------------------------------------------+-------------------------+

Godot
Stały bywalec
Stały bywalec
Posty: 32
Rejestracja: 09 kwie 2008, 17:46

Nieprzeczytany post autor: Godot »

Witaj poxter

...I działać prawidłowo nie będzie...
Powiedz najpierw co ten kod ma wykonać?
Mogę się tylko domyślać, że jak equity jest większe od balance to ma zamknąć wszystkie pozycje BUY, czy tak?

PS. i pamiętaj, że mniej kodu nie zawsze oznacza szybsze działanie programu.
Nie sądzę, by ktokolwiek był na tyle mądry, aby ocenić, co jest możliwe, a co nie.

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

Nieprzeczytany post autor: poxter »

no właśnie skróciłem do minimum i nie chce działać;D wcześniej jako tako dawał rady .

Ogólnie ma zamykać jak equilty > balance nie tylko dla buy , ale i dla sell


ok dałem rady -> odświeżyłem stare ea i tam wklepałem i daje rady - więcej linijek ale działa.

Pozdrawiam

ODPOWIEDZ