JForex

Sprawy techniczne dotyczące poszczególnych platform handlowych.
krystian74
Pasjonat
Pasjonat
Posty: 646
Rejestracja: 28 sty 2011, 11:05

Re: JForex

Nieprzeczytany post autor: krystian74 »

Ok działa tylko jeszcze trzeba zaznaczyć w ustawieniach ogólnych Strefa czasowa platformy EET ( UTC + 2 godziny )

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

Re: JForex

Nieprzeczytany post autor: -rookie- »

Apropos czasu na jforex. Nie wiem czy ktoś zauważył ale wszystkie dane w testerze są w czasie UTC i nie można zmienić tego po prostu w ustawieniach platformy. Chcesz przetestować wykres w czasie EET albo innym i nawet jak masz takie ustawienia platformy i wykresu to tester będzie pobierał informacje o świecach jako UTC. Troche to jest lipa że nie można tego w prosty sposób zmienić. I właśnie na testerze masz świece niedzielne przez to a to z kolei wiąże się z tym że inne świece też mają inną budowę jak D1 albo H4 bo otwarcie jest troche później w EET :-/

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

Re: JForex

Nieprzeczytany post autor: krystian74 »

Jak się wylicza średnią wartość świec godzinowych, dziennych wyrażonych w pipsach na platformie JForex ?

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

Re: JForex

Nieprzeczytany post autor: -rookie- »

krystian74 pisze:Jak się wylicza średnią wartość świec godzinowych, dziennych wyrażonych w pipsach na platformie JForex ?
Ale chcesz policzyć tylko średnią na podstawie wskaźnika ATR ? Np w ten sposób jak na rysunku w załączniku gdzie sumujesz wartość np 1000 ostatnich świec i dzielisz to przez ilość i wychodzi średnia wartość?

-- Dodano: 03 cze 2018, 20:04 --
-rookie- pisze:
krystian74 pisze:Jak się wylicza średnią wartość świec godzinowych, dziennych wyrażonych w pipsach na platformie JForex ?
Ale chcesz policzyć tylko średnią na podstawie wskaźnika ATR ? Np w ten sposób jak na rysunku w załączniku gdzie sumujesz wartość np 1000 ostatnich świec i dzielisz to przez ilość i wychodzi średnia wartość?
Nie wiem czego szukasz konkretnie ale tak jak napisałem wyżej brany jest czas UTC więc wykres dzienny ma świece weekendowe. Tutaj ma przykład jak to obejść, sobota to liczba 7 a niedziela liczba 1 w warunku, wiec te świece nie są liczone do średniej (52 linia kodu)

Kod: Zaznacz cały

if (calendar.get(Calendar.DAY_OF_WEEK) != 1 && calendar.get(Calendar.DAY_OF_WEEK) != 7) {
Następnie do tablicy arr wrzucamy te przefiltrowane dane bez świec weekendowych (linia 54). Po prostu odejmujemy high - low świecy

Kod: Zaznacz cały

arr.add( bars.get(i).getHigh() - bars.get(i).getLow() );
Funkcja calc() to liczy I wyświetlamy wynik.

Kod: Zaznacz cały

console.getInfo().println( " average >>> " +  String.format("%.2f", (calc()*10000)) );
print( " print array >>> " + arr );
Jeszcze trzeba ustawić zakres dat, zamiast robienia x świec wsteczy od teraz można ustawić dowolny zakres przeszukiwania tutaj. Możesz np świece od 01.01.2017 do 30.12.2017 - czyli tylko cały 2017 rok albo konkretne okresy. tylko przeliczyć w ten sposób.

Kod: Zaznacz cały

dateFrom = dateFormat.parse("20/05/2018 00:00:00"); 
dateTo = dateFormat.parse("03/06/2018 00:00:00");
Tam na dole w kodzie strategii masz jeszcze kilka przykładów jak policzy pewne rzeczy z komentarzem

KOD STRATEGII

Kod: Zaznacz cały

package jforex;

import java.util.*;

import com.dukascopy.api.*;

import java.text.ParseException;

import java.text.SimpleDateFormat;
import java.util.Date;

import java.math.BigDecimal;

public class strategy_03062018_atrTest2 implements IStrategy {
    private IEngine engine;
    private IConsole console;
    private IHistory history;
    private IContext context;
    private IIndicators indicators;
    private IUserInterface userInterface;

    Date dateFrom;
    Date dateTo;
    
    List<Double> arr = new ArrayList<Double>();
    
    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();
        
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyy HH:mm:ss"); 
        dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 
        
        Calendar calendar = Calendar.getInstance();
        
        try { 
            dateFrom = dateFormat.parse("20/05/2018 00:00:00"); 
            dateTo = dateFormat.parse("03/06/2018 00:00:00");
        } catch (ParseException e) {
            e.printStackTrace();
        }   
        
        long prevBarTime = history.getPreviousBarStart(Period.DAILY, System.currentTimeMillis());
        long startTime =  history.getTimeForNBarsBack(Period.DAILY, prevBarTime, 10); 
        
        List<IBar> bars = history.getBars(Instrument.EURUSD, Period.DAILY, OfferSide.BID, dateFrom.getTime(), dateTo.getTime());
        
        for (int i = 0; i < bars.size(); i ++) {
            calendar.setTimeInMillis(bars.get(i).getTime());
            if (calendar.get(Calendar.DAY_OF_WEEK) != 1 && calendar.get(Calendar.DAY_OF_WEEK) != 7) {
                //print(calendar.get(Calendar.DAY_OF_WEEK) + " " + bars.get(i));
                arr.add( bars.get(i).getHigh() - bars.get(i).getLow() );
            } else {
                //print( " SUNDAY is 1 / SATURDAY is 7 " + calendar.get(Calendar.DAY_OF_WEEK) + " " + bars.get(i));
            }
            //print( bars.get(i).getHigh() - bars.get(i).getLow() );
        }
        
        console.getInfo().println( " average >>> " +  String.format("%.2f", (calc()*10000)) );
        
        print( " print array >>> " + arr );
        
        // "%.3f" - pokaze do 3 miejsc po przecinku
        // "%.4f" - do 4 miejsc po przecinku
        // i tak dalej
        print( " ostatni tick 3 miejsca po przecinku " + String.format("%.3f", history.getLastTick(Instrument.EURUSD).getBid()) );
        // następnie trzeba przekonwertować to do liczby double
        String str = String.format("%.3f", history.getLastTick(Instrument.EURUSD).getBid());
        // I dopiero taką liczbe możesz puścić w jakiejś instrukcji, stringów nie będzie liczyło 
        print ( "przekonwertowanie string to daouble " + Double.parseDouble(str) );
        // mnoznik instrumentu liczony jest z tej wartosci
        Double d = Instrument.EURUSD.getPipValue();
        print( "mnoznik instrumentu liczony jest z tej wartosci : " +  BigDecimal.valueOf(d).toPlainString() );
        
        context.stop();
        
    }
    
    private int counter = 0;
    public double calc() {
        double n =0;
        double res = 0;
        for (int x=0; x<arr.size(); x++) {
            //if (arr.get(x) != 0) {
                counter += 1;
                n = n += arr.get(x);
            //}
        }
        res = n / counter;
        return res;
    }

    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 {}
    
    public void print(Object o) {
        console.getOut().println(o);
    }
    
}
Robisz nową strategie, nowy plik w oknie po lewej, wklejasz ten kod, zapisujesz jako strategy_03062018_atrTest2, kompilujesz i odpalasz nie w testerze historycznym tylko w STRATEGIES, tak jakbyś puszczał na realnym rynku strategie. Ona po wyrzuceniu tych informacji wyłączy się bo na końcu jest context.stop().

Nie wiem czy o to dokładnie Tobie chodzi ale można pobrać ATR np w ten sposób pomijając świece weekendowe, bo sam wskaźnik ATR pobiera niestety jak leci, a to czas UTC.

-- Dodano: 03 cze 2018, 20:06 --

A świece godzinowe policzysz jak zmienisz ten fragment kodu, te 3 linie na Period.ONE_HOUR

Kod: Zaznacz cały

long prevBarTime = history.getPreviousBarStart(Period.ONE_HOUR, System.currentTimeMillis());
long startTime =  history.getTimeForNBarsBack(Period.ONE_HOUR, prevBarTime, 10); 
        
List<IBar> bars = history.getBars(Instrument.EURUSD, Period.ONE_HOUR, OfferSide.BID, dateFrom.getTime(), dateTo.getTime());
-- Dodano: 03 cze 2018, 20:06 --

Na obrazku pt "opis do kodu" masz to pokazane

-- Dodano: 03 cze 2018, 20:20 --

Sorry, tylko zmieniasz period w tablicy bars bo prevBarTime i startTime nie są używane tylko brany jest zakres dat od do, a te 2 wartości liczą czas od teraz do 10 świec wstecz. Jakby podminieć zamiast dateFrom.getTime(), dateTo.getTime() na startTime, prevBarTime w końcówce tego kodu to miałbyś brane 10 ostatnich świec od teraz, chyba że tam zmienisz z 10 na jakąś inną liczbe... ale branie z zakresu dat jest lepsze.

Kod: Zaznacz cały

List<IBar> bars = history.getBars(Instrument.EURUSD, Period.ONE_HOUR, OfferSide.BID, dateFrom.getTime(), dateTo.getTime());
-- Dodano: 03 cze 2018, 20:32 --

Żeby pobrać dane jako EET czyli GMT+2 chyba ten kod zadziała, ale nie mam pewności - Trzeba porownac z tym co pokazuje na EET wskaznik ATR.

Kod: Zaznacz cały

package jforex;

import java.util.*;

import com.dukascopy.api.*;

import java.text.ParseException;

import java.text.SimpleDateFormat;
import java.util.Date;

import java.math.BigDecimal;

import com.dukascopy.api.feed.*;
import com.dukascopy.api.feed.util.*;
import com.dukascopy.api.feed.IBarFeedListener;

public class strategy_03062018_atrTest2 implements IStrategy, IBarFeedListener {
    private IEngine engine;
    private IConsole console;
    private IHistory history;
    private IContext context;
    private IIndicators indicators;
    private IUserInterface userInterface;

    Date dateFrom;
    Date dateTo;
    
    List<Double> arr = new ArrayList<Double>();
    
    JFTimeZone myTimeZone = JFTimeZone.EET;
    Period myPeriod = Period.createCustomPeriod(Unit.Day, 1, myTimeZone); 
    
    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();
        
        context.subscribeToBarsFeed(Instrument.EURUSD, myPeriod, OfferSide.BID, this); 
        
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyy HH:mm:ss"); 
        dateFormat.setTimeZone(myTimeZone.getTimeZone()); 
        
        print( myPeriod );
        
        Calendar calendar = Calendar.getInstance();
        
        try { 
            dateFrom = dateFormat.parse("20/05/2018 00:00:00"); 
            dateTo = dateFormat.parse("03/06/2018 00:00:00");
        } catch (ParseException e) {
            e.printStackTrace();
        }   
        
        long prevBarTime = history.getPreviousBarStart(Period.ONE_HOUR, System.currentTimeMillis());
        long startTime =  history.getTimeForNBarsBack(Period.ONE_HOUR, prevBarTime, 10); 

        List<IBar> bars = history.getBars(Instrument.EURUSD, myPeriod, OfferSide.BID, dateFrom.getTime(), dateTo.getTime());
        
        for (int i = 0; i < bars.size(); i ++) {
            calendar.setTimeInMillis(bars.get(i).getTime());
            if (calendar.get(Calendar.DAY_OF_WEEK) != 1 && calendar.get(Calendar.DAY_OF_WEEK) != 7) {
                //print(calendar.get(Calendar.DAY_OF_WEEK) + " " + bars.get(i));
                arr.add( bars.get(i).getHigh() - bars.get(i).getLow() );
            } else {
                //print( " SUNDAY is 1 / SATURDAY is 7 " + calendar.get(Calendar.DAY_OF_WEEK) + " " + bars.get(i));
            }
            //print( bars.get(i).getHigh() - bars.get(i).getLow() );
        }
        
        console.getInfo().println( " average >>> " +  String.format("%.2f", (calc()*10000)) );
        
        print( " print array >>> " + arr );
        
        // "%.3f" - pokaze do 3 miejsc po przecinku
        // "%.4f" - do 4 miejsc po przecinku
        // i tak dalej
        print( " ostatni tick 3 miejsca po przecinku " + String.format("%.3f", history.getLastTick(Instrument.EURUSD).getBid()) );
        // następnie trzeba przekonwertować to do liczby double
        String str = String.format("%.3f", history.getLastTick(Instrument.EURUSD).getBid());
        // I dopiero taką liczbe możesz puścić w jakiejś instrukcji, stringów nie będzie liczyło 
        print ( "przekonwertowanie string to daouble " + Double.parseDouble(str) );
        // mnoznik instrumentu liczony jest z tej wartosci
        Double d = Instrument.EURUSD.getPipValue();
        print( "mnoznik instrumentu liczony jest z tej wartosci : " +  BigDecimal.valueOf(d).toPlainString() );
        
        context.stop();
        
    }
    
    private int counter = 0;
    public double calc() {
        double n =0;
        double res = 0;
        for (int x=0; x<arr.size(); x++) {
            //if (arr.get(x) != 0) {
                counter += 1;
                n = n += arr.get(x);
            //}
        }
        res = n / counter;
        return res;
    }
    
    
    @Override public void onBar( Instrument instrument, Period period, OfferSide offerSide, IBar bar ) {}

    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 {}
    
    public void print(Object o) {
        console.getOut().println(o);
    }
    
}
-- Dodano: 03 cze 2018, 20:44 --

Ok, sprawdziłem czy jest różnica pomiędzy pierwszym testem na UTC a drugim EET i porównałem wyniki z ATR. Jest minimalna różnica bo te świece niedzielne nie są duże. Jest różnica ale minimalna. W każdym razie tak można wyciągnąć te dane...
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

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

Re: JForex

Nieprzeczytany post autor: krystian74 »

Dzięki rookie że to wytłumaczyłeś.
Tak rozchodzi się o wyliczenie średniej wartości świecy pipsowej wyrażonej według ATR.

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

Re: JForex

Nieprzeczytany post autor: -rookie- »

krystian74 pisze:Dzięki rookie że to wytłumaczyłeś.
Tak rozchodzi się o wyliczenie średniej wartości świecy pipsowej wyrażonej według ATR.
Nie wiem czy coś z tego policzysz, bo samo pobieranie wartości w ten sposób niewiele raczej powie, lepiej byłoby zbadać zmienność w konkretnych przedziałach godzinowych, ale niestety nie mam takiego testu napisanego... W każdym razie tutaj masz wersje jak pobrać dane ze wskaźnika ATR, nie ze świec tylko ze wskaźnika. Możesz włączyć na testerze historycznym albo w Strategies. Problem w tym że wskaźnik ATR chyba nie może pobrać danych z zakresu dat jak to wcześniej pokazałem, tyko zakres świec od 0 do na przykład 100 świec wstecz, albo od 40 do 100, coś takiego. Wyrzuci 5 informacji w konsoli i zatrzyma test. Masz tam info jak wyświetlać daty od kiedy do kiedy pobrane są świece żeby łatwiej porównać ze wskaźnikiem ATR i kilka innych info. Tam gdzie pisze atr array list to tablica z wartościami wskaźnika, trzeba skopiować do notatnika tę linie i porównać ze wskaźnikiem ręcznie. Coś tam wykombinujesz na pewno z tego dalej...

Kod: Zaznacz cały

package jforex;

import java.util.*;

import com.dukascopy.api.*;

import java.text.SimpleDateFormat;
import java.util.Date;

import java.math.BigDecimal;

public class strategy_04062018_getDataFromATR_test implements IStrategy {
    private IEngine engine;
    private IConsole console;
    private IHistory history;
    private IContext context;
    private IIndicators indicators;
    private IUserInterface userInterface;
    
    @Configurable("select instrument")
    public Instrument selectedInstrument = Instrument.EURUSD;
    @Configurable("select period")
    public Period selectedPeriod = Period.ONE_HOUR;
    @Configurable("shift startTime")
    public int _shift_startTime = 100;
    @Configurable("shift prevBarTime")
    public int _shift_prevBarTime = 0;
    @Configurable("mnoznik")
    public double _mnoznik = 10000;
    
    private double[] atr = null;
    
    List<Double> atr_values = new ArrayList<Double>();

    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();
        
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyy HH:mm:ss"); 
        dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 

        long startTime = history.getBar(selectedInstrument, selectedPeriod, OfferSide.BID, _shift_startTime).getTime();
        long prevBarTime = history.getBar(selectedInstrument, selectedPeriod, OfferSide.BID, _shift_prevBarTime).getTime();
        // pobierz dane z atr
        atr = indicators.atr(selectedInstrument, selectedPeriod, OfferSide.BID, 1, Filter.NO_FILTER, startTime, prevBarTime);
        // pobierz swiece dla sprawdzenia poprawnosci danych
        List<IBar> bars = history.getBars(selectedInstrument, selectedPeriod, OfferSide.BID, startTime, prevBarTime);
        
        // SPRAWDZ WSKAZANIA ATR DO SWIEC X WSTECZ
        for (int i=0; i<atr.length; i++) {
            //print( i + " " + atr[i] );
        }
        
        for (int x=0; x<bars.size(); x++) {
            //print(  x + " "  + bars.get(x) );
        }
        
        // POBIERZ SWIECE STARTU TESTY, CZYLI 100 SWIECA WSTECZY TO BEDZIE PIERWSZA Z TABLICY BARS A PIERWSZY INDEX TABLICY TO 0
        print( " start testu, pierwsza świeca, wedlug kodu pierwsza swieca setna swieca wsteczy bo cofniecie jest 100 swiec zaczyna sie od dnia " 
            + dateFormat.format( bars.get(0).getTime() ) );
        print( " ostatnia swieca " 
            + dateFormat.format( bars.get(bars.size()-1).getTime() ) );
            
        // WYŚWIETL TABLICE ATR
        for (int n=0; n<atr.length; n++){
            atr_values.add(atr[n]);
        }
        print( " atr array list - [ " + atr_values.size() + " ]- " + atr_values );
        
        // POBIERZ MNOZNIK
        print( " mnożnik " + BigDecimal.valueOf(selectedInstrument.getPipValue()).toPlainString() );
        
        // WYŚWIETL
        console.getInfo().println( " srednia wartość z ostatnich " + (_shift_startTime - _shift_prevBarTime) + " swiec wynosi : " + String.format("%.2f", (calc() * _mnoznik)) );
        
        // ZATRZYMAJ TEST NA KONCU PO OTRZYMANIU WYNIKOW
        context.stop();
        
    }
    
    public double calc() {
        double n = 0;
        double res = 0;
        //for (int i=0; i<=_shift_startTime; i++) { // wlasciwie nie ma roznicy czy dasz atr.length czy ilosc swiec wstecz jesli zaczynasz od 0 do 100
        for (int i=0; i<atr.length; i++) {
            n = n += atr[ i ];
        }
        res = n / atr.length;
        return res;
    }

    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 {}
    
    public void print(Object o) {
        console.getOut().println(o);
    }
}

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

Re: JForex

Nieprzeczytany post autor: krystian74 »

Korzystam ze strategii Ichimoku oraz wykresu RB. Chciałem przeliczyć wartości świec dziennych aby podstawić to do wykresu RB. Do tej pory moimi wartościami są 5,10,50 pip ale one są wzięte z sufitu, co prawda dobrze wykres pokazuje wejście, ale zależało mi na dokładniejszym porównaniu. Dlatego moje pytanie.
Wykres RB jest bardziej dokładny w połączeniu ze strategią Ichimoku ( moje prywatne zdanie ). Pomijając że nie można zastosować na tym wykresie podejścia czasowego.

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

Re: JForex

Nieprzeczytany post autor: -rookie- »

To według tego pierwsze testu za okres od 01.01.2018 - 03.06.2018 na EURUSD
średnia H1 wychodzi : 16.32 pips
średnia D1 : 90.26 pips
Za cały 2017 bylo to
średnia D1 : 76.27 pips
średnia H1 : 13.74 pips

GBPUSD
Rok 2017, średnia H1: 18.06 pips, średnia D1: 101.19 pips
okres od 01.01.2018 - 03.06.2018, średnia H1: 19.91 pips, średnia D1: 112.04 pips

USDJPY - mnożnik 100, nie 10000
Rok 2017, średnia H1: 16.58 pips, średnia D1: 88.59 pips
okres od 01.01.2018 - 03.06.2018, średnia H1: 15.02 pips, średnia D1: 77.87 pips

DEUIDXEUR (DAX) - mnożnik 1 (razy jeden)
Rok 2017, średnia H1: 16.04 pips, średnia D1: 115.35 pips
okres od 01.01.2018 - 03.06.2018, średnia H1: 27.59 pips, średnia D1: 180.45 pips

Ale ten kod pisałem na szybko wiec trzeba by sprawdzić czy to dobrze liczy. Mniej wiecej tak wyglądają średnie z tego pierwszego kodu, nie tego EET, ani nie ten z dziś, tylko ten pierwszy z UTC.

-- Dodano: 04 cze 2018, 15:49 --

A odnośnie zmienności to chodziło mi żeby sprawdzić wszystkie godziny np od 00:00 do 24:00, potem 01:00 do 24:00 itd, następnie kolejne schematy od 13:00 - 16:00 albo i w ten sposób dostaniesz chyba z 576 kombinacji jeśli dobrze licze a do tego można dodać przejścia na sesji azjatyckiej czyli tak jakby przetrzymanie pozycji przez noc i policzenie np jaka jest zmiennosc od 20:00 do 8 rano nastepnego dnia. O to mi chodzi, że taki test by się mi przydał. Ciekawe co by z tego wyszło :-p

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

Re: JForex

Nieprzeczytany post autor: krystian74 »

@ -rookie-
Fajnie to policzyłeś dzięki.
Chyba maksymalna dopuszczalna wartość pipsowa na wykresie to 50. Ze względu na SL oraz harmoniczność z Ichimoku.
Dodaję porównanie; dzienny, 76pip, i 50pip

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

Re: JForex

Nieprzeczytany post autor: -rookie- »

Jeśli ktoś zastanawiał się czy można testować na jforex inne dźwignie... To w zakładce tester historyczny na dolnym panelu otwiera się ACCOUNT czyli tam gdzie ustawia się wielkość konta itd . Domyślnie jest

https://images82.fotosik.pl/1102/6cad800a0f7e0da5.png

Initial Deposit: jakaś wartość, początkowo jest 50k
Waluta bazowa konta: pewnie będzie to PLN
Leverage: 1:100
MC: 200
MC Equity: 0

Żeby na przykład sprawdzić dźwignie 1:3000 trzeba przeskalować wartość MC z 200 na odpowiednią do dźwigni. Dla 1:100 jest 200, czyli 200% used of leverage i po osiągnięciu takiego poziomu straty mamy margin cut. Więc jeśli chcemy sprawdzić 1:3000 trzeba pomnożyć tą wartość tyle razy ile razy podniesiona jest dźwignia, czyli 3000 / 100 = 30 wychodzi 30x do domyślnej 1:100 i potem 30 x 200 = 6000. W polu MC trzeba wpisać 6000. Dla dźwigni 1:1000 (jeden do tysiąc) będzie to 1000 / 100 = 10, wychodzi 10x większa, czyli 10 x 200 = 2000 dla MC. Inaczej jforex będzie przekłamywał i ciął straty przez margin cut nie tak jak trzeba.

ODPOWIEDZ