Zysk/strata za dany okres czasu

O jezykach programowania w platformach i nie tylko.
darekj
Bywalec
Bywalec
Posty: 20
Rejestracja: 23 gru 2008, 00:10

Zysk/strata za dany okres czasu

Nieprzeczytany post autor: darekj »

Chce uzaleznic wielkosc otwieranej pozycji przez EA od jego zysku lub straty w okreslonym czasie. W zwiazku z tym potrzebuje jakiejs funkcji, ktora dla danej pary walutowej zwrocila by wielkosc zysku/straty okreslona najlepiej w pipsach lub ostatecznie w walucie rachunku.

Czy moze jest jakas taka funkcja w MQL-u lub ktos ma pomysl jak cos takiego zrobic?

Awatar użytkownika
reptile
Maniak
Maniak
Posty: 2799
Rejestracja: 13 gru 2008, 13:48

Nieprzeczytany post autor: reptile »

MetaEditor > ctr+D > słownik

OrdersHistoryTotal itp
R.E.P.T.I.L.E. - Robotic Electronic Person Trained for Infiltration and Logical Exploration (off-line,only e-mail)

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

Nieprzeczytany post autor: Tig3r »

Pętla i lecisz po wszystkich zamkniętych zlecenach, sprawdzasz czas zamknięcia i jeśli jest w Twoim zadanym czasie to zliczasz jego zyski i swapy
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

mozesz uzyc np takiej funkcji :

Kod: Zaznacz cały

double profit(string beginData, string endData)
{
   datetime timeBegin = StrToTime(beginData);
   datetime timeEnd   = StrToTime(endData);
   double sum = 0;
   for (int i = OrdersHistoryTotal()-1;i>=0;i--)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      if (OrderOpenTime() <  timeBegin) break;
      if (OrderOpenTime() <= timeEnd  ) sum += OrderProfit() + OrderSwap() + OrderCommission();
   }
   return(sum);
}
do zliczania profitu w pisach cza zminic czesc kodu na :

Kod: Zaznacz cały

      if (OrderOpenTime() <= timeEnd  && OrderType() == OP_BUY ) sum += Bid - OrderOpenPrice();
      if (OrderOpenTime() <= timeEnd  && OrderType() == OP_SELL) sum += OrderOpenPrice() -Ask;
PAMIETAJ ! podczas czytania historii musi byc ona udostepniona .Najlepiej w zakladce "Historia rachunku" zaznaczyc opcje cala historia

pzdr Andrzej

EDIT : poprawione ... dzieki ;) tak to jest jak sie pisze na szybko :D
Ostatnio zmieniony 25 cze 2011, 23:23 przez Pierz Andrzej, łącznie zmieniany 2 razy.

Awatar użytkownika
El Coyote
Stały bywalec
Stały bywalec
Posty: 37
Rejestracja: 18 mar 2011, 05:06

Nieprzeczytany post autor: El Coyote »

Pierz Andrzej pisze:mozesz uzyc np takiej funkcji :
Jeszcze bym wrzucił na początku tego fora coś takiego:
if(OrderType() == 6) continue;

6 to deposit/withdrawal, więc nie wliczamy do zysków

Dodano po 2 minutach:

aaa, jeszcze przed tym można się pokusić o:
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);

:wink:

ODPOWIEDZ