Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
larcio
Uczestnik
Uczestnik
Posty: 1
Rejestracja: 22 lip 2011, 00:44

Nieprzeczytany post autor: larcio »

Witam wszystkich forumowiczów.
Zaczynam zabawę w programowanie w mt4, na chwilę obecną potrzebowałbym zrobić coś takiego:
- mam otwartą jakąś pozycję na rachunku danych parametrach (numer zlecenia, kierunek i wielkość)
- chciałbym, aby platforma po stracie na tej pozycji danej ilości punktów (i tu wartość możliwa do wpisania) otworzyła sama pozycję przeciwną na tej samej parze walutowej i takiej samej wielkości (ważne jest, aby pozycja przeciwna otwarta została tylko 1 raz w stosunku do danego zlecenia)

I tu pojawiają się kolejne wątpliwości - w przypadku zajęcia takich przeciwstawnych pozycji, jedną z nich chciałbym zamknąć ręcznie - czy jest możliwość ograniczenia powtórnego otwarcia pozycji przeciwstawnej (przecież po zamknięciu nadal strata na pierwszym zleceniu może być większa niż zadana wartość) - może zadać nie daną wartość a przedział wartości, tzn przy stracie np od 100 do 120 punktów otwieraj pozycję przeciwną? (chodzi też przecież o to, aby przy zmniejszaniu straty i przejściu przez ten zakres także nie otwierać pozycji przeciwnej)

No i kolejna wątpliwość to co w przypadku kilku pozycji otwartych - tu wystarczyłoby, gdyby była możliwość przypsania działania jednorazowego tej strategii do danego zlecenia.

Mam nadzieję że opisałem problem dość jasno. Jest mi to potrzebne jako zabezpieczenie i część większej strategii. Będę wdzięczny za każdą pomoc w tym temacie....

Pjetja
Bywalec
Bywalec
Posty: 20
Rejestracja: 22 lip 2011, 18:53

Nieprzeczytany post autor: Pjetja »

Witam wszystkich jako nowy na forum i proszę o pomoc.
Próbuję przepisać wskaźnik z afl na MT4 i mam problem.
Mianowicie chodzi o to że kiedy próbuje przypisać do linii zmienną w której policzona jest linia to nic nie pokazuje.
Chodzi o takie coś:

Kod: Zaznacz cały

VS[i]=Close[i]-trBull;
Buf_0[i]=VS[i]; 
gdzie VS to zmienna w której jest wynik a Buf_0 to moja linia.
A tak działa:

Kod: Zaznacz cały

Buf_0[i]=Close[i]-trBull;
Wszystko jest typu double.
Mógłby mi ktoś pomóc?
W zasadzie potrzebuję więcej pomocy ale nie chcę tu na forum więc na razie tylko to.

Z góry dziękuję.

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

Nieprzeczytany post autor: Tig3r »

Pjetja
Nie widać tu błędu więc może problem polega na czym innym.
Buf_0 to specyficzny bufor, a VS to tablica - nie koniecznie musi mieć ten sam rozmiar to raz, dwa czasami MT4 wymaga skorzystania z Array... (coś tam) aby wskazać że to jest konkretny typ tablicy
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Pjetja
Bywalec
Bywalec
Posty: 20
Rejestracja: 22 lip 2011, 18:53

Nieprzeczytany post autor: Pjetja »

Widocznie błąd jest w wyliczeniu VS bo wszystko inne est ok. Popracuje nad tym jeszcze.

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

Nieprzeczytany post autor: Tig3r »

Problem jest taki że bufory to specjalna tablica - która sama dostosowuje rozmiar, a każda inna tablica tak nie działa. I tu zapewne jest problem.
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Pjetja
Bywalec
Bywalec
Posty: 20
Rejestracja: 22 lip 2011, 18:53

Nieprzeczytany post autor: Pjetja »

Aj i pewnie tu jest problem. Dziękuję za informację, nie wiedziałem tego.
W takim razie jaki jest na to sposób? Jeżeli w deklaracji tablicy wpiszę np

Kod: Zaznacz cały

double VS[10000];
to też nic nie zmienia.

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

Nieprzeczytany post autor: Tig3r »

Sam podales spob - dziaj bezposrednio na tablicy bufora, po co dodatkowa tablica..
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Pjetja
Bywalec
Bywalec
Posty: 20
Rejestracja: 22 lip 2011, 18:53

Nieprzeczytany post autor: Pjetja »

W tym właśnie rzecz że nie mogę działać bezpośrednio na tablicy bufora. Mam dwa bufory i nie zawsze chcę wyświetlać oba. Stąd właśnie konieczność działania na osobnej tablicy. Częściowo sobie z problemem poradziłem, dziękuję za naprowadzenie na trop :wink:
Natomiast zastanawiam się nad inną rzeczą. Jak w mql4 narysować linię poziomą? Tzn wskaźnik ma mieć kształt "schodków" a nie linii. Czyli nad każdym słupkiem ma być jeden tzw stopień. Myślałem że od tego jest styl DASH ale to jednak nie to. W bogatych zasobach internetu nie udało mi się nic takiego odnaleźć.

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

Nieprzeczytany post autor: Tig3r »

Pjetja pisze:W tym właśnie rzecz że nie mogę działać bezpośrednio na tablicy bufora. Mam dwa bufory i nie zawsze chcę wyświetlać oba.
Nikt Ci nie każe nic wyświetlać, nie musisz wcale tego robić ale do obliczeń jak najbardziej możesz wykorzystać:

Kod: Zaznacz cały

SetIndexStyle(0,DRAW_NONE);
Pjetja pisze:Jak w mql4 narysować linię poziomą?
Poszukaj w helpie

Kod: Zaznacz cały

ObjectCreate
- jeśli Ci potrzebna ta pionowa
Pjetja pisze:Tzn wskaźnik ma mieć kształt "schodków" a nie linii.
To użyj histogramu
Pjetja pisze:Czyli nad każdym słupkiem ma być jeden tzw stopień.
Jaki słupek? Świeca?
A może wystarczy obiekt? Sprawdź:

Kod: Zaznacz cały

SetIndexStyle(0,DRAW_ARROW,0
i w helpie MQL4 Reference - Standard constants - Wingdings
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Pjetja
Bywalec
Bywalec
Posty: 20
Rejestracja: 22 lip 2011, 18:53

Nieprzeczytany post autor: Pjetja »

Jednak pozostanę przy zwykłej linii.
Nie wiem czemu nie mogę dać Ci pochwały bo by już dwie poszły :)
Idąc za ciosem i mając nadzieję na kolejną pomoc zapytam po raz kolejny- jeśli można.
Czy w przypadku operatora warunkowego IF jest możliwość obsługi większej ilości paramtrów ELSE czy tylko jednego? Z tego co wyczytałem to można ale coś nie działa. I nie wiem czy pezez to czy przez źle napisany warunek.
Chodzi mi o to że takie coś:

Kod: Zaznacz cały

if((Close[i]>prev))||(Close[i+1]>prev))
         {
        ..........
         }
      else if((Close[i]<prev)||(Close[i+1]<prev))
         {
        .............
         }
      else if(Close[i]>prev)
         {        
       ...........
         }
      else 
         {
        .................
         }
nie chce mi działać prawidłowo.
Po prostu tak jakby ignoruje te AND i tylko pierwszy warunek bierze pod uwagę.
Czy muszę to rozbić na dwa if-y czy da się to jakoś inaczej zrobić?

ODPOWIEDZ