Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Pierz Andrzej »

nemezzis pisze:Hej,
w jaki sposób ograniczyć liczenie wskaźnika do załóżmy 500-2000 świeczek wstecz, bo zamrożenia już mnie powoli... :evil:
Widziałem że w niektórych jest do wyboru ile wstecz jest pokazywany, a nie mam teraz żadengo takiego :(

thx.
poszukaj w kodzie Bars i zamień na swoją wartość
z poważaniem
Andrzej Pierz
FOREX-SERVICE

z6yszko
Gaduła
Gaduła
Posty: 266
Rejestracja: 17 sty 2011, 10:09

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: z6yszko »

nemezzis pisze:Hej,
w jaki sposób ograniczyć liczenie wskaźnika do załóżmy 500-2000 świeczek wstecz, bo zamrożenia już mnie powoli... :evil:
Widziałem że w niektórych jest do wyboru ile wstecz jest pokazywany, a nie mam teraz żadengo takiego :(

thx.
Niezbyt konkretnie wyjaśniłeś o co chodzi, ale myślę że zrobiłeś podstawowy błąd stosując pętlę

Kod: Zaznacz cały

for (i=0;...
Ograniczenie ilości pokazywanych świec dokonujemy właśnie w pętli. Po pierwsze należy zawsze gdy to możliwe stosować funkcję

Kod: Zaznacz cały

IndicatorCounted()
która zwraca ilość świec już raz przeliczonych przez wskaźnik, których nie trzeba przeliczać ponownie. Dodatkowo jeśli chcesz ograniczyć liczbę świec pokazywanych na wykresie, należy to zrobić np. w następujący sposób:

Kod: Zaznacz cały

   

extern int History  =500;           // Ograniczenie ilości pokazywanych świec
...
Counted_bars=IndicatorCounted(); // Ilość przeliczonych świec
   i=Bars-Counted_bars-1;           // Numer pierwszej nieprzeliczonej świecy
   if (i>History-1)                 // Jeśli i jest większe niż zmienna History ...
      i=History-1;                  // ... ograniczenie do pożądanej ilości
   while(i>=0)                      // Obliczenia wskaźnika
     {
...
     i++;
Z własnego doświadczenia podpowiem jeszcze, że w Internecie jest sporo źle napisanych wskaźników. Zastosowanie na wykresie nawet jednego potrafi zamulić całą platformę. W Twoim przypadku może to być niekoniecznie wskaźnik, który poprawiasz. Jeśli poprawienie kodu zgodnie z powyższym przykładem niewiele pomoże, to przejrzyj pozostałe zastosowane wskaźniki i spróbuj po kolei pousuwać je z wykresu, żeby określić, które są winne spowolnienia działania platformy.

Awatar użytkownika
nemezzis
Gaduła
Gaduła
Posty: 152
Rejestracja: 12 lip 2010, 01:39

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: nemezzis »

Dzieki serdeczne Wszystkim za pomoc :)
Postaram się to ogarnąć moim małym rozumkiem ;)
Demo obrazuje mozliwosci Twego Umyslu.
Real - poziom zakucia.

QTrader
Gaduła
Gaduła
Posty: 223
Rejestracja: 27 lut 2013, 17:33

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: QTrader »

Witam

Spotkał się może ktoś z dziwnym ale uciążliwym problemem przedstawionym poniżej?

Wszystkie wskaźniki z nazwa powyżej S są nieaktywne w menu ale da się je bez problemu dodać przeciągając na wykres z okna "navigator".
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Pozdrawiam

Awatar użytkownika
mike_05
Maniak
Maniak
Posty: 1668
Rejestracja: 02 wrz 2010, 11:55

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: mike_05 »

Prawdopodobnie w folderze wskaźników masz tylko pliki tych wskaźników typu .ex4 a nie ma .mq4
Jeżeli chcesz odnieść sukces, naucz się cenić ludzi.

QTrader
Gaduła
Gaduła
Posty: 223
Rejestracja: 27 lut 2013, 17:33

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: QTrader »

Właśnie nie. To autorskie wskaźniki. Po usunięciu ponownej kompilacji dalej są szare.

Wszystkie z nazwami zaczynająca się od S i dalej. Pewnie znowu jakieś upierdliwe bugi w MT4.
Pozdrawiam

Awatar użytkownika
mike_05
Maniak
Maniak
Posty: 1668
Rejestracja: 02 wrz 2010, 11:55

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: mike_05 »

Zobacz, czy masz w katalogu pliki o tej samej nazwie ale .txt?
Jeżeli chcesz odnieść sukces, naucz się cenić ludzi.

QTrader
Gaduła
Gaduła
Posty: 223
Rejestracja: 27 lut 2013, 17:33

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: QTrader »

Nie ma innych. Manipulowałem trochę przerzucając grupami pliki i zauważyłem ze w menu aktywne jest tylko 100 pierwszych wskaźników reszta ZAWSZE nieaktywna.
Pozdrawiam

kamil52
Stały bywalec
Stały bywalec
Posty: 57
Rejestracja: 30 maja 2011, 23:47

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: kamil52 »

Witam

czy można w jakiś łatwy sposób wyznaczyć trzy najnowsze otwarte pozycje w celu zmiany ich sl?

edit: Poszperałem w internecie i mam pytanie czy coś takiego ma prawo zadziałać?

if( OrderSelect(OrdersTotal,SELECT_BY_POS)==true )
if( OrderSelect(OrdersTotal-1,SELECT_BY_POS)==true )
if( OrderSelect(OrdersTotal-2,SELECT_BY_POS)==true )

Zastanawiam się tylko czy za orderstotal-1 nie trzeba by było podstawić innej zmiennej, czyli

x=OrdersTotal
x=x-1
if( OrderSelect(X,SELECT_BY_POS)==true )
i tutaj zmieniam Sl

Podejrzewam, że głoszę straszne herezje, ale dopiero stawiam pierwsze kroki w mqlu. :wink:

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

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Pierz Andrzej »

kamil52 pisze:Witam


edit: Poszperałem w internecie i mam pytanie czy coś takiego ma prawo zadziałać?

if( OrderSelect(OrdersTotal,SELECT_BY_POS)==true )
if( OrderSelect(OrdersTotal-1,SELECT_BY_POS)==true )
if( OrderSelect(OrdersTotal-2,SELECT_BY_POS)==true )

raczej :

Kod: Zaznacz cały

if( OrderSelect(OrdersTotal()-1,SELECT_BY_POS)==true )
if( OrderSelect(OrdersTotal()-2,SELECT_BY_POS)==true )
if( OrderSelect(OrdersTotal()-3,SELECT_BY_POS)==true )
oczywiście możesz to zrobić pętlą ;)

Kod: Zaznacz cały

int last.total = 3;// ile ostatnich zlecen
int orders.total = OrdersTotal() - 1;
for (int i = orders.total;i >=0 && i > orders.total - last.total;i--)
{
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
   {
      // tutaj kod modyfikacji zlecenia
   }
}
lub jeżeli miało by to być np w ramach jednej pary walutowej

Kod: Zaznacz cały

int last.total = 3;// ile ostatnich zlecen
int orders.total = OrdersTotal() - 1;
for (int i = orders.total;i >=0 && last.total > 0;i--)
{
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
   {
      if (OrderSymbol() == Symbol())
      {
         // tutaj kod modyfikacji zlecenia
         last.total--;
      }
   }
}
z poważaniem
Andrzej Pierz
FOREX-SERVICE

ODPOWIEDZ