Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
NiceFox
Pasjonat
Pasjonat
Posty: 454
Rejestracja: 05 lis 2009, 13:22

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

Nieprzeczytany post autor: NiceFox »

Poprosiłem o pochwałę za pomoc.
błąd wyłapałem, odwróciłem pętle w drugą stronę.
Pieniądze rosną na drzewie cierpliwości.

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 »

:564: Dzięki
"Ty też jesteś Bogiem! Tylko uświadom to sobie, sobie"

Awatar użytkownika
NiceFox
Pasjonat
Pasjonat
Posty: 454
Rejestracja: 05 lis 2009, 13:22

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

Nieprzeczytany post autor: NiceFox »

Wszystko wygląda ok, ale nie rozumiem dlaczego nie chce modyfikować zlecenia.

Kod: Zaznacz cały

   {
double max;
int z;
int ticket;
double czyJestTP;


 for(z=0; z<OrdersTotal(); z++) {
    OrderSelect(z, SELECT_BY_POS,MODE_TRADES);
    if (OrderTakeProfit()==0) {
    if (OrderType()==0 || OrderType()==1){
    if (OrderLots()>max) ticket=OrderTicket();
    max=MathMax(OrderLots(),max);


}}}
    if (OrderType()==0) {
     
    OrderModify(ticket,0,0,Tp_buy,0,0);
    RefreshRates();
    Sleep(100); 
    Alert ("ordertype 0"); }
    
   else {
    OrderModify(ticket,0,0,Tp_sell,0,0);
    RefreshRates();
    Sleep(100); 
    Alert("ordertype 1");}

Alert(ticket);
  
  }
    
Alert (1," end");
}

   return(0);
Pieniądze rosną na drzewie cierpliwości.

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 »

wpisz sobie po linijce z OrderModify

Kod: Zaznacz cały

Alert(GetLastError());
wyswietli Ci numer błędu.
Możliwe, że twoje zmienne Tp_sell i Tp_buy mogą miec złą ilośc miejsc po przecinku. Jesli tak to użyj NormalizeDuoble().
Poza tym w twoim kodzie brakuje linijki OrderSelect, dopisałem

Kod: Zaznacz cały

    
       {
    double max;
    int z;
    int ticket;
    double czyJestTP;


     for(z=0; z<OrdersTotal(); z++) {
        OrderSelect(z, SELECT_BY_POS,MODE_TRADES);
        if (OrderTakeProfit()==0) {
        if (OrderType()==0 || OrderType()==1){
        if (OrderLots()>max) ticket=OrderTicket();
        max=MathMax(OrderLots(),max);


    }}}
        OrderSelect(ticket,SELECT_BY_TICKET);
        if (OrderType()==0) {
         
        OrderModify(ticket,0,0,Tp_buy,0,0);
        Alert(GetLastError());
        RefreshRates();
        Sleep(100);
        Alert ("ordertype 0"); }
       
       else {
        OrderModify(ticket,0,0,Tp_sell,0,0);
        Alert(GetLastError());
        RefreshRates();
        Sleep(100);
        Alert("ordertype 1");}
    Alert(ticket);
     
      }
       
    Alert (1," end");
    }

       return(0);
Nie sprawdzałem czy tak będzie działac bo nie mam całego kodu..

-- Dodano: 09 mar 2013, 01:16 --

Też mam pytanko:
Da się ustawic ,lnie pionowe lub poziome na wykresie o parametrach w pikselach? Chodzi mi o to żeby nie przesówały się razem z wykresem. :think:
"Ty też jesteś Bogiem! Tylko uświadom to sobie, sobie"

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 »

Da się jakoś zrobic żeby kod wskaźnika nie wykonywał się po każdym tiku? Chciałbym żeby wskaźnik przeliczał np. co 5 sekund. Zamula mi strasznie, nie dam rady go uprościc a czasami tiki walą kilka razy na sekundę :? :?: :?: :?:
"Ty też jesteś Bogiem! Tylko uświadom to sobie, sobie"

Awatar użytkownika
NiceFox
Pasjonat
Pasjonat
Posty: 454
Rejestracja: 05 lis 2009, 13:22

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

Nieprzeczytany post autor: NiceFox »

W mqlu nie zrobisz lini poziomych i pionowych tak jak chcesz.
opóżnić możesz:

czekać na nową świecę , new bar
lub opóźnienie sleep();
Pieniądze rosną na drzewie cierpliwości.

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 »

Dzięki NiceFox! :D
Niestety new bar to dla mnie za rzadko nawet na M1. A sleep się nie przyda jeśli tiki walą kilka na sekundę. Sleep umieszczony na początku kodu będzie się wykonywał po każdym tiku i reszta kodu nigdy nie zostanie wykonana. Natomiast sleep umieszczony na końcu też nic nie daje bo reszta kodu i tak się wykona po każdym tiku.
Ale dzięki za chęci, te same dwie rzeczy mi przyszły do głowy na początku. :D

Otrzymałem prawidłowe rozwiązanie w innym temacie jakby kogoś interesowało:
http://forex-nawigator.biz/forum/pytani ... 22915.html
"Ty też jesteś Bogiem! Tylko uświadom to sobie, sobie"

lukasz2021
Bywalec
Bywalec
Posty: 16
Rejestracja: 31 sty 2013, 20:34

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

Nieprzeczytany post autor: lukasz2021 »

witam czy pomoże mi ktos napisać proste ea chodzi mi by otwierało ono pozycje kupna zaraz po pojawieniu się fractal down oraz sprzedarzy gdy pojawi się fractal up i zeby pozycja została zamknieta po pojaowieniu się przeciwnego fractala np fractal up sprzedaż pojawia sie fractal down zamkniecie pozycji i otwarcie przeciwnej

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 »

lukasz2021 zajrzyj tutaj: http://forexsb.com/forum/topic/3771/daily-eurusd-10-dd/
Do takich prostych rzeczy polecam. Obrazek pokazuje że strategia w okresie długoterminowym sprawdza się aż miło. Wprawdzie do działania trzeba uruchomić dodatkowy programik - ForexStrategyTrader, ale to bardzo ładnie chodzi.
Tutaj jeszcze oryginalna strategia, o której wspomniano w linku powyżej: http://forexsb.com/forum/topic/67/eurus ... -reliable/.

-- Dodano: czw 14-03-2013, 15:58 --

Pytanie mam następujące.
Załóżmy że mam otwartych kilka zleceń na tej samej parze z tym samym MagicNumber. Chcę żeby EA obsługiwała każde zlecenie z osobna. Ma to polegać na tym, że dla każdego z otwartych zleceń mam ustawić w pamięci dwa poziomy ceny. Po przebiciu któregoś z nich strategia podejmie dalsze działanie - np. przestawi poziomy wyzwalaczy. Jeszcze raz zaznaczam - zleceń może być kilka, więc poziomy trzeba pamiętać dla każdego z nich z osobna. Najprościej byłoby, gdyby można było zmodyfikować komentarz - zapamiętałbym sobie odpowiednie wartości w komentarzu zlecenia i z głowy. Ale skoro się nie da, to widzę dwa rozwiązania:
1. Tablice: w jednej numery zleceń, w dwóch kolejnych odpowiednie wartości do zapamiętania. Rozwiązanie w miarę dobre, ale w miarę długości "życia" strategii będą się rozrastać, albo trzeba będzie kasować nieaktualne wartości, zatykać dziury itp., wiadomo - jak to z tablicami.
2. Obiekty na wykresie: np. niewidoczne strzałki. Każdą nazwać od OrderTicket() i przyporządkować jej pożądaną wartość ceny. Po osiągnięciu można je przesuwać na nowe poziomy, a po zamknięciu zlecenia - kasować. Podstawowa wada - działa tylko dla bieżącego wykresu.

A może ktoś zna lepsze i bardziej eleganckie rozwiązanie? Proszę o opis, z programem sobie poradzę.

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 »

Może i tak, chociaż "dzięki" dodatkowym bibliotekom ładowanym z mt4 zaliczyłem kilka razy blue-screena. Doszedłem do wniosku, że chyba wielowymiarowe tablice będą jednak najlepsze. W sumie to całkiem szybko chodzi.

pozdrawiam

ODPOWIEDZ