JForex

Sprawy techniczne dotyczące poszczególnych platform handlowych.
Awatar użytkownika
raposo
Moderator
Moderator
Posty: 9974
Rejestracja: 22 wrz 2006, 22:10

Re: JForex

Nieprzeczytany post autor: raposo »

Ale odkopałeś... :D Stara strona Forex Club, a artykuł sprzed 6 lat :) Nie wiem czy to będzie działać, możesz sprawdzić.
I faktycznie, masz rację. Na JForex był dostępny konwerter, ale na starej wersji. I widzę, że już całkowicie tę wersję wygasili...

Z konwerterami jest jak z translatorami językowymi. Coś tam tłumaczą, ale nie zawsze zachowają sens wypowiedzi. Po prostu to ułatwienie roboty, a niekoniecznie sposób na gotowiec.

Ile kosztuje przepisanie jednej strategii? To jak z wyceną remontu mieszkania. Zależy od zakresu prac, jaką ekipę sobie znajdziesz itd.... ;) Wycena indywidualna, zawsze.
ForexClub.pl
- Forex Club Tools
- Program Podatek 7.0
- RABATY PROWIZJI
| IC Markets (-21%) | Tickmill (-10%) | XTB (Pakiet książek) | Dukascopy (narzędzia do JForex) | LMAX (-20%) | FxPro (do -15%)

Zapraszamy do kontaktu

FreeWay

Re: JForex

Nieprzeczytany post autor: FreeWay »

Ma ktoś może jakiś wskaźnik na tą platformę który by pokazywał Wolumen Skumulowany ? w formie liczb nad swingami coś jak na ss
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
raposo
Moderator
Moderator
Posty: 9974
Rejestracja: 22 wrz 2006, 22:10

Re: JForex

Nieprzeczytany post autor: raposo »

ForexClub.pl
- Forex Club Tools
- Program Podatek 7.0
- RABATY PROWIZJI
| IC Markets (-21%) | Tickmill (-10%) | XTB (Pakiet książek) | Dukascopy (narzędzia do JForex) | LMAX (-20%) | FxPro (do -15%)

Zapraszamy do kontaktu

FreeWay

Re: JForex

Nieprzeczytany post autor: FreeWay »

Całkiem ciekawe ,zobaczymy jak wypadnie w testerze ,dzięki.

-rookie-
Maniak
Maniak
Posty: 2307
Rejestracja: 13 kwie 2015, 19:00

Re: Dukascopy - ECN

Nieprzeczytany post autor: -rookie- »

btw. Informacje z raportów można wyciągnąć stąd - IReportPosition -

Kod: Zaznacz cały

long to = System.currentTimeMillis();
long from = to - 5 * Period.MONTHLY.getInterval(); // np 5 miesięcy do tyłu 
for ( IReportPosition m : context.getReportService().getClosedPositions(from, to)  ) {
    console.getOut().println( m.getPositionId() + " " + m.isLong()  + " " + m.getInstrument() + " " + m.getSwaps() + " " + m.getCommission() );    
}
I można zsumować ze sobą wszystkie wartości wg swapów, prowizji, itd jak w funkcji getCommission. A jak można policzyć swap, bo jest domyślnie w walucie bazowej? Można pobrać takie wartości https://www.dukascopy.com/client/javado ... ition.html i jest cena zamknięcia getClosePrice() więc można to przemnożyć i przekonwertować na walutę główną konta z tego https://www.dukascopy.com/wiki/en/devel ... sion-utils to jest 1 linia kodu utils.getRate(JFCurrency.getInstance("JPY"), JFCurrency.getInstance("CHF")); i można pobierać kurs danej pary np AUDPLN, PLNJPY itp.

Kod: Zaznacz cały

package jforex;

import java.util.*;

import com.dukascopy.api.*;

public class _my_own_statement implements IStrategy {
    private IEngine engine;
    private IConsole console;
    private IHistory history;
    private IContext context;
    private IIndicators indicators;
    private IUserInterface userInterface;
    
    public void onStart(IContext context) throws JFException {
        this.engine = context.getEngine();
        this.console = context.getConsole();
        this.history = context.getHistory();
        this.context = context;
        this.indicators = context.getIndicators();
        this.userInterface = context.getUserInterface();
    }

    public void onAccount(IAccount account) throws JFException {}
    public void onMessage(IMessage message) throws JFException {}
    public void onStop() throws JFException {}
    public void onTick(Instrument instrument, ITick tick) throws JFException {}
    
    public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {
        
        // zwraca wartosc kosztow prowizji
        console.getOut().println( "suma prowizji wynosi: " + getCommission(period) );
        
        // jak wyciagnac inne dane
        long to = System.currentTimeMillis();
        long from = to - 5 * Period.MONTHLY.getInterval(); // 5 miesiecy do tylu, mozna wpisac 12 lub inną date ale to tylko wersja pokazowa
        for ( IReportPosition m : context.getReportService().getClosedPositions(from, to)  ) {
            console.getOut().println( m.getPositionId() + " " + m.isLong()  + " " + m.getInstrument() + " " + m.getSwaps() + " " + m.getCommission() );     
        }
        
        // gdy zwrocilo wszystkie dane zatrzymaj strategie
        context.stop();
        
    }
    
    public double getCommission(Period period) throws JFException {
       long to = System.currentTimeMillis();
       long from = to - 5 * Period.MONTHLY.getInterval();
       double x = 0;
       for ( IReportPosition m : context.getReportService().getClosedPositions(from, to)  ) {
           String str = m.getCommission().toString();
           String res = "";
           char p = str.charAt(str.length()-3);
           char l = str.charAt(str.length()-2);
           char n = str.charAt(str.length()-1);
           if (Character.toString(p).equals("P") && Character.toString(l).equals("L") && Character.toString(n).equals("N")) {
               res = str.substring(0, str.length()-3);
               x = x += Double.parseDouble(res);
           }
       }
       //console.getOut().println( x + " " + res);
       return x;
   }
    
}
I w konsoli zwróci pare przykładowych info z transakcji za ostatnie 5 miesięcy, na końcu jest wyliczenie funkcji getCommision i suma prowizji -83.61000000000003 ( to są moje trejdy z demo z paru ostatnich dni ) i potem zatrzyma strategie context.stop()

Kod: Zaznacz cały

2018-02-01 00:00:10	151526197 false GBP/USD 0.00 USD -0.34 PLN
2018-02-01 00:00:10	151223340 false EUR/USD 0.00 USD -14.12 PLN
2018-02-01 00:00:10	151526301 true GBP/USD 0.00 USD -0.34 PLN
2018-02-01 00:00:10	151526299 true GBP/USD 0.00 USD -0.34 PLN
2018-02-01 00:00:10	151479417 false FRA.IDX/EUR 0.00 EUR -2.48 PLN
2018-02-01 00:00:10	151525442 false GBP/USD 0.00 USD -0.34 PLN
2018-02-01 00:00:10	151196741 false EUR/USD 0.00 USD -7.00 PLN
2018-02-01 00:00:10	151526001 false GBP/USD 0.00 USD -0.34 PLN
2018-02-01 00:00:10	151526442 true GBP/USD 0.00 USD -3.40 PLN
2018-02-01 00:00:10	151211179 false EUR/USD 0.00 USD -6.99 PLN
2018-02-01 00:00:10	151218250 true EUR/USD 0.00 USD -14.12 PLN
2018-02-01 00:00:10	151479431 false FRA.IDX/EUR 0.00 EUR -2.48 PLN
2018-02-01 00:00:10	151212621 true EUR/USD 0.00 USD -14.04 PLN
2018-02-01 00:00:10	151526293 true GBP/USD 0.00 USD -0.34 PLN
2018-02-01 00:00:10	151479429 false FRA.IDX/EUR 0.00 EUR -2.48 PLN
2018-02-01 00:00:10	151216593 false EUR/USD 0.00 USD -14.12 PLN
2018-02-01 00:00:10	151525441 true GBP/USD 0.00 USD -0.34 PLN
2018-02-01 00:00:10	suma prowizji wynosi: -83.61000000000003
Teraz to jest niepotrzebne, ale przy kolejnym wypełnianiu pita pewnie może się przydać bo faktycznie te standardowe raporty są toporne do liczenia...

-- 12 maja 2018, 13:58 --

Jeszcze tylko coś dodam, bo może za te kilka miesięcy ktoś też tym się będzie zajmował, chociaż wątpię... Chyba niemożliwe jest sprawdzenie wartości przez equlas porównując np tick.getTime() i czas zamknięcia pozycji. Są jednak różnice w testerze w czasie. Przykładowe wyliczenia dla czasu zamknięcia pozycji o 03-5-2018 10:25:45, w milisekundach jest to wartość z tej listy wyżej 1525343145000
(tick time) 1525343145001 (closed position time) 1525343145000 | (tick time > closed position time) false
(tick time) 1525343144846 (closed position time) 1525343145000 | (tick time > closed position time) true
Jest różnica zaledwie 0000000000001 dlatego wygenerowanie takiego raportu będzie możliwe przez puszczenie testu historycznego za rok wstecz i przeskanowanie czasu dla każdej zamkniętej pozycji i dopiero na koniec testu wygenerowałoby taki raport ?! Nie wiem jak to można inaczej rozwiązać... Ale to tylko tak przy okazji o tym pisze. W raportach na bieżąco jest to sprawdzane i na bieżąco są zbierane dane.

-- 12 maja 2018, 14:14 --

Sorry za ten offtop i troche spamu, ale może ktoś za jakiś czas też to będzie rozkminiał, więc wrzuce jeszcze ten kod i wynik. Pozycja była zamknięta o 10:25:45 3.05.2018 czyli 1525343145000

Kod: Zaznacz cały

public void onTick(Instrument instrument, ITick tick) throws JFException {
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(1525343145000L);
        //console.getOut().println( sdf.format(calendar.getTime()) );
        Long T = new Long(tick.getTime());
        Long L = new Long("1525343145000");
        console.getOut().println( T + " " + L + " | " + (T < L));
        if (T > L) {
            //console.getOut().println( sdf.format(calendar.getTime()) + " "  + sdf.format(tick.getTime()) );
            console.getOut().println( sdf.format(T) + " "  + sdf.format(L) );
            context.pause();
        }       
}
I w konsoli dostaje wyniki:
2018-05-03 10:25:46 03-5-2018 10:25:46 03-5-2018 10:25:45
2018-05-03 10:25:46 1525343146637 1525343145000 | false << kolejny tick gdzie czas jest już większy, już 10:25:46
2018-05-03 10:25:45 03-5-2018 10:25:45 03-5-2018 10:25:45
2018-05-03 10:25:45 1525343145001 1525343145000 | false << wartość nie jest równa, różnica 0000000000001
2018-05-03 10:25:44 1525343144846 1525343145000 | true
2018-05-03 10:25:43 1525343143861 1525343145000 | true
2018-05-03 10:25:43 1525343143756 1525343145000 | true
2018-05-03 10:25:42 1525343142803 1525343145000 | true
2018-05-03 10:25:40 1525343140653 1525343145000 | true

-- 12 maja 2018, 14:14 --

Ok, to wszystko.

-rookie-
Maniak
Maniak
Posty: 2307
Rejestracja: 13 kwie 2015, 19:00

Re: JForex

Nieprzeczytany post autor: -rookie- »

Ten post (dukascopy-ecn-t7793-3550.html#p911495) proszę przenieść do tego wątku (JForex) żeby nie zaśmiecał tematu brokera. Ale nie o tym chciałem tutaj napisać... Dukascopy chyba zwiększyło ilość danych, teraz można spojrzeć wstecz na EURUSD do 1973 roku. Inne instrumenty tak samo mają zwiększoną ilość danych wstecz.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

-rookie-
Maniak
Maniak
Posty: 2307
Rejestracja: 13 kwie 2015, 19:00

Re: JForex

Nieprzeczytany post autor: -rookie- »

Powinieneś raposo uzupełnić informacje odnośnie grupowania instrumentów w jforex, bo jest fajny bajer dzięki temu. Można lepiej analizować stylem multi time frame. Jeśli powiąże się okna tzn pogrupuje według instrumentu (nie okresu, nie strony, tylko wg instrumentu - 1 z 4 kolorów na 1 instrument, są 4 kolorki) i ustawi np jak na obrazku że masz 4 okna na pulpicie oraz włączony jest kursor na wszystkich oknach wtedy po najechaniu na jednym kursor przesuwa sie na innych na taką samą cene i czas. Fajnie widać to na range barach albo renko, na świecach tak samo działa. Niby nic ale całkiem pomocne rozwiązanie... Poza tym jak się ma powiązane okna to zmieniając w jednym oknie instrument w reszcie powiązanych tak samo się zmienia.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
raposo
Moderator
Moderator
Posty: 9974
Rejestracja: 22 wrz 2006, 22:10

Re: JForex

Nieprzeczytany post autor: raposo »

JForex właściwie co dwa-trzy tygodnie przechodzi kolejne aktualizacje, gdzie dochodzą nowe funkcje. O wprowadzanych zmianach na bieżąco informujemy na naszej stronie, a przy większej ich ilości też tutaj ;).

Grupowanie instrumentów działa bardzo fajnie - sam z tego na codzień korzystam. Funkcja bodajże odgapiona od CMC, ale podobno na świecie wszystko już było... :)
ForexClub.pl
- Forex Club Tools
- Program Podatek 7.0
- RABATY PROWIZJI
| IC Markets (-21%) | Tickmill (-10%) | XTB (Pakiet książek) | Dukascopy (narzędzia do JForex) | LMAX (-20%) | FxPro (do -15%)

Zapraszamy do kontaktu

krystian74
Pasjonat
Pasjonat
Posty: 646
Rejestracja: 28 sty 2011, 11:05

Re: JForex

Nieprzeczytany post autor: krystian74 »

Jak pozbyć się świecy niedzielnej na platformie JForex. Co mam zaznaczyć ?

Awatar użytkownika
raposo
Moderator
Moderator
Posty: 9974
Rejestracja: 22 wrz 2006, 22:10

Re: JForex

Nieprzeczytany post autor: raposo »

krystian74 pisze:Jak pozbyć się świecy niedzielnej na platformie JForex. Co mam zaznaczyć ?
Hmmm... U mnie to wygląda tak - i mam pięć świec D1.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
ForexClub.pl
- Forex Club Tools
- Program Podatek 7.0
- RABATY PROWIZJI
| IC Markets (-21%) | Tickmill (-10%) | XTB (Pakiet książek) | Dukascopy (narzędzia do JForex) | LMAX (-20%) | FxPro (do -15%)

Zapraszamy do kontaktu

ODPOWIEDZ