OrdersHistoryNumber

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
bucho1504
Stały bywalec
Stały bywalec
Posty: 55
Rejestracja: 01 sie 2008, 21:46

OrdersHistoryNumber

Nieprzeczytany post autor: bucho1504 »

Witam

Mam mały problem :) w napisanym kodzie, chciałem uzyskiwać informację o zamkniętych pozycjach dokładniej kiedy dane zlecenie zostało zamknięte o nr MagicNumber

Kod: Zaznacz cały

int countOrdersHistoryNumber(int cnb)
  {
   int MagicNr=0;
   for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
         if(OrderSymbol()==Symbol() && (TimeCurrent() - OrderCloseTime()) <= 1)
         if (OrderMagicNumber() == cnb) 
         {
         MagicNr++;
         }
     }
     {Print("MagicNr=",cnb);}
   return( MagicNr);
  }
oczywiście funkcja działa prawidłowo i wyświetla odpowiednie MagicNumber
ale jak chcę wykorzystać tą informację funkcją ,

Kod: Zaznacz cały

{  
int HistoryNumber = countOrdersHistoryNumber(40);
{
Print("countOrdersHistoryNumber=",HistoryNumber);
}
{if (HistoryNumber != 40 )}
}
to informuje mnie tylko o liczbie zamkniętych pozycji a nie o MagicNumber (w załączniku)
nie bardzo rozumiem dla czego tak się to wykonuje :D
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ten nie popełnia błędów kto nic nie robi

Awatar użytkownika
bucho1504
Stały bywalec
Stały bywalec
Posty: 55
Rejestracja: 01 sie 2008, 21:46

Re: OrdersHistoryNumber

Nieprzeczytany post autor: bucho1504 »

Witam

Pogrzebałem trochę na forum i był już taki temat :D
http://forex-nawigator.biz/forum/jedna- ... 16795.html
dostosowałem kod do wskazówek kolegów :D
Jednak problem powstał jeżeli chciałem użyć go do większej liczby zleceń (Magic_Number) :cry:
Trochę to trwało ale wymyśliłem coś takiego

Kod: Zaznacz cały

int countOrdersHistoryNumber()
{
  int magic_number [100];
 int licznik;
 for ( licznik = 0 ; licznik < 100 ; licznik++) 
  {
   for (int i = OrdersHistoryTotal()-1 ;i >= 0 ; i--)
    {
    if(OrderSelect(i, SELECT_BY_POS,MODE_HISTORY)== false);
    magic_number[licznik] = (OrderMagicNumber() == licznik && (OrderSymbol() == Symbol()));
   
    }
  } 
  return(licznik);
}
Działa poprawnie :D
Ten nie popełnia błędów kto nic nie robi

WojtexWay
Gaduła
Gaduła
Posty: 145
Rejestracja: 18 wrz 2012, 19:22

Re: OrdersHistoryNumber

Nieprzeczytany post autor: WojtexWay »

bucho1504 pisze:Działa poprawnie :D
Really?! O_o

Awatar użytkownika
bucho1504
Stały bywalec
Stały bywalec
Posty: 55
Rejestracja: 01 sie 2008, 21:46

Re: OrdersHistoryNumber

Nieprzeczytany post autor: bucho1504 »

Wiem ameryki nie odkryłem a tym bardziej świętego grala :D
Ten nie popełnia błędów kto nic nie robi

WojtexWay
Gaduła
Gaduła
Posty: 145
Rejestracja: 18 wrz 2012, 19:22

Re: OrdersHistoryNumber

Nieprzeczytany post autor: WojtexWay »

bucho1504 pisze:Wiem ameryki nie odkryłem a tym bardziej świętego grala :D
A czy w ogóle cokolwiek odkryłeś?!
Bo mi chodziło o to czy jesteś pewny, że "działa"?!
Bo jeśli się nie mylę to Twoja funkcja jest równoznaczna z czymś takim:

Kod: Zaznacz cały

int countOrdersHistoryNumber()
   {
   return 100;
   }
Tylko wykonuje dodatkowo masę niepotrzebnych (później nie wykorzystywanych) obliczeń...

Awatar użytkownika
bucho1504
Stały bywalec
Stały bywalec
Posty: 55
Rejestracja: 01 sie 2008, 21:46

Re: OrdersHistoryNumber

Nieprzeczytany post autor: bucho1504 »

Witek rozumiem iż starasz sie mnie uświadomić iż mój pomysł jest dość słabym rozwiązaniem :-)
Kod który napisałem przekazuję tylko informacje prawda/ fałsz czy o danym MagicNumber istnieje zlecenie.
:-)
Ten nie popełnia błędów kto nic nie robi

WojtexWay
Gaduła
Gaduła
Posty: 145
Rejestracja: 18 wrz 2012, 19:22

Re: OrdersHistoryNumber

Nieprzeczytany post autor: WojtexWay »

bucho1504 pisze:Witek rozumiem iż starasz sie mnie uświadomić iż mój pomysł jest dość słabym rozwiązaniem :-)
Twój "pomysł" jest przede wszystkim niedziałającym rozwiązaniem.
bucho1504 pisze:Kod który napisałem przekazuję tylko informacje prawda/ fałsz czy o danym MagicNumber istnieje zlecenie.
:-)
Nie. Tak jak pisałem wcześniej Twój "kod" zwraca zawsze wartość równą 100. Nigdy ona nie będzie ani mniejsza ani większa. I MagicNumber nie ma tu nic do rzeczy.

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

Re: OrdersHistoryNumber

Nieprzeczytany post autor: Pierz Andrzej »

bucho1504 zwróć uwagę że w funkcji print-ujesz wartość zmiennej cnb a zwracasz wartość zmiennej MagicNr stąd ta różnica ;-)

w ogóle z tego co zrozumiałem chcesz uzyskać czas zamknięcia zlecenia o danym magic number

Kod: Zaznacz cały

datetime timeOrdersHistoryNumber(int cnb)
  {
   for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
         if(OrderSymbol()==Symbol() && OrderMagicNumber() == cnb)  return OrderCloseTme()
     }
     
   return(-1);
  }
zwraca czas zamknięcia ostatniego zlecenia

i WojtexWay ma racje ten kod co podałeś nie może działać prawidłowo wartość jaką zwróci zawsze będzie 100 , a do tablicy typu integer przypisujesz wartość typu boolean :-)
z poważaniem
Andrzej Pierz
FOREX-SERVICE

Awatar użytkownika
bucho1504
Stały bywalec
Stały bywalec
Posty: 55
Rejestracja: 01 sie 2008, 21:46

Re: OrdersHistoryNumber

Nieprzeczytany post autor: bucho1504 »

Dokładniej zależało Mi na uzyskaniu MagicNamber :) ale oczywiście czas też jest potrzebny.
Ja napisałem coś takiego , ale się nie bardzo sprawdza :(

Kod: Zaznacz cały

bool countOrdersNumber(int magic_number)
{
  bool found = false;

  for (int i = OrdersTotal()-1 ; i >= 0; i--)
  {
    OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

    if ((OrderMagicNumber() == magic_number) && (OrderSymbol() == Symbol()))
    {
      found = true;
      break;
    }
  }
  return(found);
}
W mojej koncepcji chodzi o to iż żeby w jednym dniu nie było więcej niż 1 zlecenie o danym MagicNamber
Nie wiem czy w dobrym kierunku kombinuję :D
Ten nie popełnia błędów kto nic nie robi

ODPOWIEDZ