Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
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 »

Nie napisałem, że chciałbym aby każdy stop loss miał inną wartość - mój błąd. Z tego co mi się wydaje poniższy kod zmienia sl wszystkich trzech pozycji na raz, więc nie mam możliwości ustawienia innego stop lossa dla każdej pozycji z osobna. Jeżeli się mylę, to proszę o korektę.

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
   }
}
W takim razie chyba pozostanę przy tym:

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 )
Dziękuję za pomoc!

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 »

Mam kolejne pytanie. Czy OrdersTotal zlicza wszystkie zlecenia, także te złożone przez inne EA oraz z palca? Chciałbym aby zlecenia liczone były wewnątrz jednej pary. W tym celu tak jak już pisał Pierz Andrzej, użyłem do OrderSelect() dodatkowej pętli if (OrderSymbol() == Symbol()). Czy jest możliwość zrobienia tego samego w celu zliczenia wszystkich zleceń w ramach danej pary walutowej?

Edit:

Kod: Zaznacz cały

for (int i = 0; i < OrdersTotal(); i++)
      {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MAGICMA)
            {
            All++;
            }
         }
      }
Czy jest to prawidłowy kod zwracający w zmiennej All ilość otwartych przez EA o danym magic numberze pozycji na danej parze walutowej? Kod autorstwa Tig3r'a, ale nie mam pewności czy będzie działał dokładnie tak jak to sobie założyłem. :)

mref
Uczestnik
Uczestnik
Posty: 1
Rejestracja: 30 cze 2013, 12:19

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

Nieprzeczytany post autor: mref »

czy jest automat, który stawia sl na ostatniej świecy przed wybiciem (zajęciem pozycji z limitem)

Awatar użytkownika
rh-fx
Gaduła
Gaduła
Posty: 191
Rejestracja: 12 lis 2007, 21:39

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

Nieprzeczytany post autor: rh-fx »

Mam taką strategię, która dodaje 0,10 lota do każdej następnej pozycji jeżeli poprzednia była stratna.

I problem: jeżeli usunę strategię i dodam ja ponownie to robot otwiera pozycje z dodaną wartością lota . Np start powinien być 0,10 a rzeczywiście startuje od np 0,50 lota bo poprzednia strategia miała otworzyć już 0,50 lota.

Jak wyczyścić "pamięć" MT4 kodem MQL lub może coś usunąć z logów mt4 ?
- Co ja tutaj robię ?
- Gdzie są ci co powinni tu być ?
- Co robią ci , których nie powinno tutaj być ?

Awatar użytkownika
bfx
Pasjonat
Pasjonat
Posty: 1260
Rejestracja: 11 sty 2013, 15:49

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

Nieprzeczytany post autor: bfx »

rh-fx pisze:Mam taką strategię, która dodaje 0,10 lota do każdej następnej pozycji jeżeli poprzednia była stratna.

I problem: jeżeli usunę strategię i dodam ja ponownie to robot otwiera pozycje z dodaną wartością lota . Np start powinien być 0,10 a rzeczywiście startuje od np 0,50 lota bo poprzednia strategia miała otworzyć już 0,50 lota.

Jak wyczyścić "pamięć" MT4 kodem MQL lub może coś usunąć z logów mt4 ?
Trochę nie rozumiem ale może to pomoże: :D
Zapewne znasz funkcję deinit(). Nie wiem jaka zmienna nie zeruje Ci się po wyłączeniu strategi ale w funkcji deinit() możesz ją sam wyzerowac przy zamykaniu strategi.
"Ty też jesteś Bogiem! Tylko uświadom to sobie, sobie"

grafikk
Gaduła
Gaduła
Posty: 131
Rejestracja: 15 cze 2012, 10:59

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

Nieprzeczytany post autor: grafikk »

prosze o pomoc lub weryfikacje, indyk z zalacznika nie alarmuje, a niby powinien, wiem ze repaintuje, ale potrzebowalbym tego alarmu mimo to, dzieki za pomoc
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Tsubasa
Bywalec
Bywalec
Posty: 10
Rejestracja: 26 gru 2011, 11:52

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

Nieprzeczytany post autor: Tsubasa »

Prosiłbym o pomoc dot. rysowania linii

1) Wpisuje wartość ceny 1.32 - rysuje się pozioma linia na wykresie na 1.32
2) Wpisuje inną wartość ceny 1.33 i zero reakcji - linia nadal na 1.32
3) Wpisuje wartość ceny = "0" i linia znika - OK

Będzie ktoś tak miły i pomoże? Program nie reaguje na zmianę ceny (wyjątek stanowi 0)
Nie potrafię porównać zmiennej tuż przed korektą (1.32) z jej aktualną wartością (1.33).

Kod: Zaznacz cały

   if ( Cenka != 0.0 )            
     { ObjectCreate("linia", OBJ_HLINE, 0, 0, Cenka); } else 
     { ObjectDelete("linia"); }
-- Dodano: pt 02-08-2013, 10:57 --

Mam!! 2 dni sie męczyłem z tym...
Objectdelete trzeba przenieść do int deinit()

Awatar użytkownika
bfx
Pasjonat
Pasjonat
Posty: 1260
Rejestracja: 11 sty 2013, 15:49

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

Nieprzeczytany post autor: bfx »

Dlaczego MetaEditor zaokrągla mi zmienne double od 4 miejsc po przecinku. Na screenie przykład z OrderOpenPrice(). To samo dzieje się jak ręcznie przypisze np zmiennej X wartosc 0.12345 to w kodzie pobiera z niej wartośc 0.1235 :shock:
Zaraz mnie coś trafi bo męczę się od rana z głupim przestawieniem SL na BE po 11 pipsach. :615:
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"Ty też jesteś Bogiem! Tylko uświadom to sobie, sobie"

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 »

do wyświetlania wartości double używaj funkcji DoubleToStr

Kod: Zaznacz cały

DoubleToStr(OrderOpenPrice(),Digits);
do sprawdzania użyj funkcji NormalizeDouble

Kod: Zaznacz cały

NormalizeDouble(OrderOpenPrice(),Digits);
np.

Kod: Zaznacz cały

if (NormalizeDouble(Ask - OrderOpenPrice() - 11 * Point,Digits) >= 0.00) // przestaw be po 11 pipsach
z poważaniem
Andrzej Pierz
FOREX-SERVICE

Awatar użytkownika
bfx
Pasjonat
Pasjonat
Posty: 1260
Rejestracja: 11 sty 2013, 15:49

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

Nieprzeczytany post autor: bfx »

Kolejny browar dla pana Andrzeja :564:
Dziękuje!
"Ty też jesteś Bogiem! Tylko uświadom to sobie, sobie"

ODPOWIEDZ