Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

A ostatnie w nawiasie "shifty" nie maja być "0" ?
Teraz strzelam, bo nie wklejałem tego wskaźnika tylko patrzę na kod.
Wiem jednak, że czasem wskaźnik daje sygnał po czasie i trzeba mu np. dać shift 2, bo w rzeczywistości jak daje on sygnał to dwie świece wcześniej.


ps.
Wkleilem i sprawdziłem. Potwierdzilo się. Sygnal jest dawany 3 świece po fakcie ;)
Daj shift 3 i w chwili pojawienia się strzałki sygnału wartość wskaźnika wskazuje wartość ceny sygnału, po czym wraca do wartości pustej (2147483647).
Jednak to wystarczy robotowi do otwarcia pozycji.
Solą życia jest kasa.

none
Stały bywalec
Stały bywalec
Posty: 23
Rejestracja: 09 sty 2012, 12:16

Nieprzeczytany post autor: none »

kurde

Kod: Zaznacz cały

artości pustej (2147483647)
to mnie zmyliło,
faktycznie nie sprawdzałem 3 doszłem do 2

dzięki

mala em
Uczestnik
Uczestnik
Posty: 2
Rejestracja: 23 sie 2011, 13:19

Nieprzeczytany post autor: mala em »

Jak odczytać listę zainstalowanych platform MT4 w Windowsie 7 (64bit)?
Mam zainstalowane kilka instancji FxPro, Alpari, GCI. Każda instancja tej samej platformy powinna być na liście.
Odczytać chcę programowo w języku C# (skrypt windowsa, C++, VB,…). Co i jak odczytywać z rejestru Windowsa?
Czy ktoś może mi podpowiedzieć?

Pozdrawiam.

Awatar użytkownika
mikolaj2
Gaduła
Gaduła
Posty: 231
Rejestracja: 04 maja 2011, 14:37

Nieprzeczytany post autor: mikolaj2 »

Klucz w rejestrze

Kod: Zaznacz cały

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
zawiera klucze z wszystkimi zainstalowanymi programami

lub : http://www.dreamincode.net/code/snippet1995.htm

mala em
Uczestnik
Uczestnik
Posty: 2
Rejestracja: 23 sie 2011, 13:19

Nieprzeczytany post autor: mala em »

Dzięki.
Odczytuję rejestr kodem zamieszczonym w linku. Wszystko ok, tylko lista MetaTraderów nie jest kompletna. Na liście są GCI, Alpari, XTB, 4xGD. Wymienione platformy są tylko raz zainstalowane w domyślnych lokalizacjach.
Platforma FxPro jest zainstalowana trzykrotnie w różnych lokalizacjach (nie domyślnych, c:\mt4\1 [2 i 3]) i FxCC (nie domyślna lokalizacja) – raz. Zarówno FxPro jak i FxCC nie znajdują się na liście zainstalowanych aplikacji. Nie wiem dlaczego. Lokalizacja? Zresztą w Panelu Sterowania (opcja Wyświetl zainstalowane aplikacje) również nie ma tych platform a na pewno były instalowane.
Przed chwilą zainstalowałam po raz czwarty FxPro w lokalizacji c:\mt4\4 i lista zainstalowanych platform wygląda następująco:
GCI, Alpari, 4xGD i FxPro.
Zniknęła z listy platforma XTB (lokalizacja domyślna).
FxPro jest tylko z czwartą, ostatnią lokalizacją.
Wszystkie platformy oczywiście działają, każda oddzielnie lub wszystkie jednocześnie (cztery instancje FxPro również jednocześnie).
Nie wiem jak uzyskać pełną listę zainstalowanych platform. Być może jest to niemożliwe?
Potrzebne jest mi to do mojego Instalatora wskaźników, skryptów i EA. Instalator powinien rozpoznać wszystkie MT4 w systemie i dać możliwość użytkownikowi wybrać, gdzie chce instalować. Tylko problem z tą listą…
Można użytkownika zmusić, by wskazał lokalizacje generując okno dialogowe ale to nieeleganckie rozwiązanie.

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

Nieprzeczytany post autor: Tig3r »

w takim razie pozostaje Ci ręcznie wskazać plik/katalog albo szukać na dyskach pliku np.: terminal.exe
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Lite
Bywalec
Bywalec
Posty: 15
Rejestracja: 01 maja 2008, 14:17

Nieprzeczytany post autor: Lite »

ok zaimplementowalem do calosci kodu nastepujaca funkcje ktora polecil mi siersciuch, ktora wyszukuje miejsca w ktorych znajduje sie szczyt lub dolek ostatniej korekty - na podstawie wskaznika zigzak. funkcja rzeczywiscie dziala jednakze to co dodatkowo bym chcial to zeby wyrzucala rozgraniczenie pomiedzy dołkiem a szczytem. innymi słowy zeby zwracana wartosc wskazywala ze jest to korekta w trendzie spadkowym ( czyli takie cos /\) lub korekta w trendzie wzrostowym (czyli takie cos \/). prosilbym o pomoc jak taka ideę zaimplementować w tę funkcję:

Kod: Zaznacz cały

double LastHigh_Low()

{

   double Zig[5]; 
   int h=0; 
   
   
      for(int g=0; g < 1000; g++) { 
   
      Zig[h] = iCustom(Symbol(),Period(),"ZigZag",12,5,3, 0, g); 
            
            if(Zig[h] != 0) { 
            h++; } 
      
      if(h > 4) { 
      break; 
      }
      }
    
     
      return(Zig[1]);
      
   
   
 }  
   

moj pomysl to okreslenie wartosci wskaznika na 3 okreslonych swiecach:
jesli (wartosc zigzak na swiecy -3) < (zigzak -2) > (zigzak -1) wówczas jest to korekta w trendzie spadkowym czyli takie cos /\.

oczywiscie wartosci -3,-2,-1 nie maja tutaj racji bytu bo rysujacy je rynek ciagle bedzie je przesuwal. jest to jedynie idea.

z gory dziekuje za pomoc

ziax
Bywalec
Bywalec
Posty: 7
Rejestracja: 12 maja 2008, 15:42

Nieprzeczytany post autor: ziax »

Czy ktoś może mi powiedzieć, co robię źle? Chciałbym dodać sobie dowolny wskaźnik na wykres tak, aby rysował się on w trybie wizualnym, robię to tak:

Kod: Zaznacz cały

package singlejartest;

import com.dukascopy.api.*;
import com.dukascopy.api.indicators.IIndicator;

public class Robot implements IStrategy
{
 @Configurable("Instrument")
    public Instrument selectedInstrument = Instrument.EURUSD;

    private String indic="cdlBreakAway(Instrument, Period, OfferSide,int)";
    Object[] inputArray;
}

public void onStart(IContext context) throws JFException {

        inputArray = new Object[] {selectedInstrument, Period.FIVE_MINS,OfferSide.ASK,1};
        IIndicator cdl=indicators.getIndicator("indic");
       chart.addIndicator(cdl, inputArray);

}
Kompilacja przebiega pomyślnie, natomiast próba uruchomienia kończy się tym:

Kod: Zaznacz cały


java.lang.NullPointerException @ singlejartest.Robot.onStart(Robot.java:102)
Linijka nr 102 to ta chart.addIndicator..., z tego, co wyczytałem, tworzę referencję do obiektu, a nie sam obiekt, ale go chyba tworzę używając new dwa wersy wcześniej, poza tym z kolei identyczny błąd uzyskiwałem, gdy z działającego przykładowego kodu usunąłem tablicę z parametrami pozostawiając zwyczajne:

Kod: Zaznacz cały

 chart.addIndicator(cdl);

więc nie wiem, o co chodzi.

Eh, trzeci raz piszę tego posta, ale jednak po stracie kilkunastu godzin nie mam pojęcia, więc się poddaję, błąd jest tak prosty, że go zwyczajnie nie widzę, przecież dodanie wskaźnika na wykres nie może być jakieś trudne, proszę brać też pod uwagę, że z programowaniem w tym mam kontakt od kilkunastu, czy już od kilkudziesięciu godzin ;)

Btw, ten kod z strony Dukascopy dodający wskaźnik, czyli

Kod: Zaznacz cały

chart.addIndicator(indicators.getIndicator("ZIGZAG"));
chart.addIndicator(indicators.getIndicator("ET_Nico"), new Object[]{15});
w żadnej wersji mi nie działa, więc nie robię czegoś, co jest tak oczywiste, że nawet o tym nie wspominali, no ale naprawdę nie wiem, czego.

EDIT:

No dobra, ściągnąłem Eclipse i uruchomiłem debugger, dobre narzędzie ;) Problem zlikwidowany, wystarczyło zajrzeć do deklaracji metod i porównać. NullPointerException powrócił w innym miejscu, ale to już inna sprawa ;)
Ostatnio zmieniony 21 mar 2012, 02:20 przez ziax, łącznie zmieniany 1 raz.

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

Lite pisze:ok zaimplementowalem do calosci kodu nastepujaca funkcje ktora polecil mi siersciuch, ktora wyszukuje miejsca w ktorych znajduje sie szczyt lub dolek ostatniej korekty - na podstawie wskaznika zigzak. funkcja rzeczywiscie dziala jednakze to co dodatkowo bym chcial to zeby wyrzucala rozgraniczenie pomiedzy dołkiem a szczytem. innymi słowy zeby zwracana wartosc wskazywala ze jest to korekta w trendzie spadkowym ( czyli takie cos /\) lub korekta w trendzie wzrostowym (czyli takie cos \/). prosilbym o pomoc jak taka ideę zaimplementować w tę funkcję:

Kod: Zaznacz cały

double LastHigh_Low()

{

   double Zig[5]; 
   int h=0; 
   
   
      for(int g=0; g < 1000; g++) { 
   
      Zig[h] = iCustom(Symbol(),Period(),"ZigZag",12,5,3, 0, g); 
            
            if(Zig[h] != 0) { 
            h++; } 
      
      if(h > 4) { 
      break; 
      }
      }
    
     
      return(Zig[1]);
      
   
   
 }  
   

moj pomysl to okreslenie wartosci wskaznika na 3 okreslonych swiecach:
jesli (wartosc zigzak na swiecy -3) < (zigzak -2) > (zigzak -1) wówczas jest to korekta w trendzie spadkowym czyli takie cos /\.

oczywiscie wartosci -3,-2,-1 nie maja tutaj racji bytu bo rysujacy je rynek ciagle bedzie je przesuwal. jest to jedynie idea.

z gory dziekuje za pomoc
ja zawsze sobie najpierw sprawdzam :

Kod: Zaznacz cały

if(Zig[0]>Zig[1])//to wiadomo, że 1,3 i 5 to dolki, a 2 i 4 to szczyty
if(Zig[0]<Zig[1])//to wiadomo, że 1,3 i 5 to szczyty, a 2 i 4 to dołki
Pozostaje jeszcze problem jeśli cena jest wyżej niż Zig[0], bo nowe ramię w górę się jeszcze nie uformowało, ale na to też są warunki.
Pokombinuj w ten sposób.
Solą życia jest kasa.

Fx.Player
Bywalec
Bywalec
Posty: 9
Rejestracja: 29 lut 2012, 03:11

Nieprzeczytany post autor: Fx.Player »

Podczas pisania EA natrafiłem na problem ze wskaźnikiem Zigzag, który nie zawsze prawidłowo wskazuje szczyty/dołki. Parametry wskaźnika ustawiłem na 1,1,1 (chociaż tak do końca nie wiem co one oznaczają, nie znalazłem nigdzie opisu tych parametrów) , bo zależy mi aby wskaźnik był jak "najczulszy" i wychwytywał szczyty/dołki występujące bardzo blisko siebie (np. dołek w odległości jednej świecy od szczytu). Załączam wykres z zaznaczonym przedziałem czasowym, w którym wskaźnik nieprawidłowo pokazuje ekstrema. Coś źle ustawiłem, można to poprawić? Czy jest to po prostu powszechnie znana wada tego wskaźnika i jeżeli chciałbym mieć bardziej precyzyjne narzędzie to muszę je sam napisać ?
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

ODPOWIEDZ