Wskaźnik pokazujący profit na Bid - wymaga dopracowania

O jezykach programowania w platformach i nie tylko.
marcin76
Gaduła
Gaduła
Posty: 300
Rejestracja: 14 lis 2012, 12:42

Wskaźnik pokazujący profit na Bid - wymaga dopracowania

Nieprzeczytany post autor: marcin76 »

Ten wskaźnik pokazuje aktualny profit z danej pary po prawej stronie na linii Bid

czy ktoś z was był by wstanie go dopracować tak aby z pokazywanego profitu odejmował wartość spredu , prowizji i swapu , tak by pokazywał prawdziwy profit.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

grzegrzyw
Gaduła
Gaduła
Posty: 334
Rejestracja: 11 mar 2012, 19:43

Re: Wskaźnik pokazujący profit na Bid - wymaga dopracowania

Nieprzeczytany post autor: grzegrzyw »

Linię: if((OrderSymbol() == Symbol())) Profit = Profit + OrderProfit(); zmień na: if((OrderSymbol() == Symbol())) Profit = Profit + OrderProfit()+OrderCommission()+OrderSwap();

-rookie-
Maniak
Maniak
Posty: 2307
Rejestracja: 13 kwie 2015, 19:00

Re: Wskaźnik pokazujący profit na Bid - wymaga dopracowania

Nieprzeczytany post autor: -rookie- »

grzegrzyw pisze:Linię: if((OrderSymbol() == Symbol())) Profit = Profit + OrderProfit(); zmień na: if((OrderSymbol() == Symbol())) Profit = Profit + OrderProfit()+OrderCommission()+OrderSwap();
Joł. Właśnie też to zacząłem sprawdzać i funkcja OrderProfit() zawiera już w sobie koszt spreadu, bo

Kod: Zaznacz cały

double spread_value = (MarketInfo(Symbol(),MODE_SPREAD) * MarketInfo(Symbol(), MODE_TICKVALUE));
 if((OrderSymbol() == Symbol())) Profit = Profit + (OrderProfit()+OrderCommission()+OrderSwap()) +/- spread_value;
spread_value zwraca koszt spreadu i po odjęciu tego albo dodaniu wychodzi zły wynik, czyli trzeba by policzyć po swojemu OrderProfit() tylko po co skoro już ma spread w kosztach...

...
Czyli odpowiedź grzegrzyw jest rozwiązaniem. :568:
...
Ewentualnie trzeba zrobić osobą funkcje która zsumuje swap, prowizje coś w tym stylu... i wywołać to zamiast OrderCommision() albo wpuścić jako argument OrderCommision() do tej funkcji zsumować i zwrócić return x, następnie wywołać calc_commision() zamiast OrderCommision().

Kod: Zaznacz cały

double calc_commision() {
   int x = 0;
   for(int i=0; i<=OrdersTotal(); i++) {
      if(OrderSelect(i, SELECT_BY_POS)==true) {
         if (OrderType() == 1) {
            x = x + OrderCommision();
         }
      }
   }
   return x;
}

marcin76
Gaduła
Gaduła
Posty: 300
Rejestracja: 14 lis 2012, 12:42

Re: Wskaźnik pokazujący profit na Bid - wymaga dopracowania

Nieprzeczytany post autor: marcin76 »

grzegrzyw pisze:Linię: if((OrderSymbol() == Symbol())) Profit = Profit + OrderProfit(); zmień na: if((OrderSymbol() == Symbol())) Profit = Profit + OrderProfit()+OrderCommission()+OrderSwap();
ok dzięki za pomoc

-- Dodano: 09 paź 2018, 21:40 --
-rookie- pisze:
grzegrzyw pisze:Linię: if((OrderSymbol() == Symbol())) Profit = Profit + OrderProfit(); zmień na: if((OrderSymbol() == Symbol())) Profit = Profit + OrderProfit()+OrderCommission()+OrderSwap();
Joł. Właśnie też to zacząłem sprawdzać i funkcja OrderProfit() zawiera już w sobie koszt spreadu, bo

Kod: Zaznacz cały

double spread_value = (MarketInfo(Symbol(),MODE_SPREAD) * MarketInfo(Symbol(), MODE_TICKVALUE));
 if((OrderSymbol() == Symbol())) Profit = Profit + (OrderProfit()+OrderCommission()+OrderSwap()) +/- spread_value;
spread_value zwraca koszt spreadu i po odjęciu tego albo dodaniu wychodzi zły wynik, czyli trzeba by policzyć po swojemu OrderProfit() tylko po co skoro już ma spread w kosztach...

...
Czyli odpowiedź grzegrzyw jest rozwiązaniem. :568:
...
Ewentualnie trzeba zrobić osobą funkcje która zsumuje swap, prowizje coś w tym stylu... i wywołać to zamiast OrderCommision() albo wpuścić jako argument OrderCommision() do tej funkcji zsumować i zwrócić return x, następnie wywołać calc_commision() zamiast OrderCommision().

Kod: Zaznacz cały

double calc_commision() {
   int x = 0;
   for(int i=0; i<=OrdersTotal(); i++) {
      if(OrderSelect(i, SELECT_BY_POS)==true) {
         if (OrderType() == 1) {
            x = x + OrderCommision();
         }
      }
   }
   return x;
}

ok dzięki za pomoc

ODPOWIEDZ