JForex

Sprawy techniczne dotyczące poszczególnych platform handlowych.
Awatar użytkownika
adamkaluza
Pasjonat
Pasjonat
Posty: 1021
Rejestracja: 16 kwie 2011, 11:59

Re: JForex

Nieprzeczytany post autor: adamkaluza »

Jak włączyć powiadomienia push? Dałem subskrybuj i pisze - Po włączeniu powiadomień push na urządzeniu, będziesz je otrzymywać bezpłatnie. Powiadomienia na urządzeniu mam włączone, ale w ustawieniach powiadomień nie mogę zaznaczyć push bo jest nie aktywne, tylko e-mail jest aktywne.
Każdy interwał ma swojego sponsora

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

Re: JForex

Nieprzeczytany post autor: raposo »

adamkaluza pisze:
08 gru 2020, 21:21
Jak włączyć powiadomienia push? Dałem subskrybuj i pisze - Po włączeniu powiadomień push na urządzeniu, będziesz je otrzymywać bezpłatnie. Powiadomienia na urządzeniu mam włączone, ale w ustawieniach powiadomień nie mogę zaznaczyć push bo jest nie aktywne, tylko e-mail jest aktywne.
A masz włączone "Wysyłaj powiadomienia handlowe, gdy jestem offline"?
Sprawdź też w ustawieniach aplikacji w systemie (na iOS -> Ustawienia -> Powiadomienia -> JForex / na Androidzie nie wiem ;) ).
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

Awatar użytkownika
adamkaluza
Pasjonat
Pasjonat
Posty: 1021
Rejestracja: 16 kwie 2011, 11:59

Re: JForex

Nieprzeczytany post autor: adamkaluza »

Te dwie rzeczy mam włączone.
2B07E7AD-000A-4B79-8D47-CBF9ED4CF3CF.jpeg
D75979FA-9394-4F1F-A8AF-269E1F09F64F.jpeg
I dalej pisze że muszę włączyć powiadomienia, a w ustawieniach powiadomień mam aktywne że mogę dać e-mail push nie da się zaznaczyć.
7507B1DF-C8C5-4579-A7AF-DECD8B616946.jpeg
Nie wiem co jeszcze sprawdzić? Działają komuś te powiadomienia?
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Każdy interwał ma swojego sponsora

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

Re: JForex

Nieprzeczytany post autor: raposo »

No to problemem jest brak możliwości zaznaczenia PUSH. Ale czemu tak jest... najlepiej napisz bezpośrednio do swojego account managera.
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

Tomasz196407
Fanatyk
Fanatyk
Posty: 14967
Rejestracja: 29 paź 2012, 09:52

Re: JForex

Nieprzeczytany post autor: Tomasz196407 »

Czy jest możliwość dodania do wykresu swojego znaku wodnego

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

Re: JForex

Nieprzeczytany post autor: raposo »

Nie ma takiej możliwości (w standardzie).
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

rookie2
Pasjonat
Pasjonat
Posty: 399
Rejestracja: 29 wrz 2020, 00:10

Re: JForex

Nieprzeczytany post autor: rookie2 »

Hmm, z tego co widzę można to ogarnąć. Pewnie ktoś kto lepiej zna javę zrobi to lepiej, ale z tego co widzę można przygotować obrazek z tłem przezroczystym (transparency) w jakimś programie graficznym który daje możliwość wypełnienia tła w ten sposób, jak na przykładowym obrazku niżej który jest w załączniku. Akurat ja mam ścieżki w linuxie w ten sposób /tmp/obrazek.png na windowsie, chyba robi się dwa backslashe np c://Documents//users//admin//Photo//img.png" albo w drugą stronę backslashe \\ . Idea jest taka że można na widget panelu (https://www.dukascopy.com/wiki/en/devel ... art-widget) rysować, dodawać obiekty ze javax.swing. Na wiki jest też przykład jak zapisać obrazek (https://www.dukascopy.com/wiki/en/devel ... operations) . A korzystając z tego tricku (https://stackoverflow.com/questions/231 ... two-images) można połączyć 2 obrazki ze sobą i zapisać. Czyli uruchamiasz strategię, akurat tutaj potrzebny jest wykres EURUSD i pojawia się widget, zapisuje pod adresem z lini 75 i strategia zatrzymuje się bo na końcu jest context.stop(); I masz zapisany obrazek ze znakiem wodnym.

Można zmienić domyślne ustawienie widgetu, ale trzeba by poeksperymentować z tym. Te linie zmianiają położenie ale coś nie działało u mnie jak trzeba dlatego zakomentowałem, ale to jest chyba tutaj, i robisz przesunięcie względem szerokości i wysokości ekranu.
//obj.setPosX(new Double(screenSize.getWidth()-600).intValue());
//obj.setPosY(new Double(screenSize.getHeight()-600).intValue());

Kod: Zaznacz cały

package jforex;

import java.util.*;

import com.dukascopy.api.*;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.WindowConstants;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.Dimension;
import java.awt.Color;
import java.awt.*;
import javax.swing.*;
import java.lang.Object.*;

import com.dukascopy.api.drawings.ICustomWidgetChartObject;

public class Strategy_11012021_xd implements IStrategy {
    private IEngine engine;
    private IConsole console;
    private IHistory history;
    private IContext context;
    private IIndicators indicators;
    private IUserInterface userInterface;
    private IChart chart;
    
    JFrame f = null;
    ICustomWidgetChartObject obj = null;
    
    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();
        this.chart = context.getChart(Instrument.EURUSD);
        
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        obj = chart.getChartObjectFactory().createChartWidget();
        
        JPanel panel = obj.getContentPanel();
        panel.setLayout(null);
        
        BufferedImage image = null;
        
        try {
            image = ImageIO.read(new File("/tmp/img.png")); // link do obrazka znak wodny
            panel.setSize(new Dimension(image.getWidth(), image.getHeight()));  // set widget size
            JLabel picLabel = new JLabel(new ImageIcon(image)); 
            picLabel.setSize(new Dimension(image.getWidth(), image.getHeight()));
            panel.add(picLabel);
            panel.repaint();
            console.getOut().println(image);
        } catch (IOException ioe) {}
        
        //obj.setOpacity(1.0f);
        //obj.setPosX(new Double(screenSize.getWidth()-600).intValue());
        //obj.setPosY(new Double(screenSize.getHeight()-600).intValue());
        
        obj.setSticky(true);
        
        chart.add(obj);
        
        try {
            File file = new File("/tmp/ChartImage.png"); // automatyczne zapisanie pod ta ścieżką i nazwą pliku
            //ImageIO.write(chart.getImage(), "png", file); 
            BufferedImage combined = new BufferedImage(chart.getImage().getWidth(), chart.getImage().getHeight(), BufferedImage.TYPE_INT_ARGB);       
            Graphics g = combined.getGraphics();            
            g.drawImage(chart.getImage(), 0, 0, null);    
            g.drawImage(image, 0, 0, null);
            g.dispose();
            ImageIO.write(combined, "PNG", file);
        } catch (Exception e) {
            e.printStackTrace(console.getErr());
        }
        
        context.stop();       

    }

    public void onAccount(IAccount account) throws JFException {
    }

    public void onMessage(IMessage message) throws JFException {
    }

    public void onStop() throws JFException {
        if (f != null)
            f.dispose();
    }

    public void onTick(Instrument instrument, ITick tick) throws JFException {
    }
    
    public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {
    }
}
img.png
I wygląda to tak
ChartImage.png
Tutaj jest kod z pętlą for (IChart chart : context.getCharts()) , żeby dodało na wszytkie otwarte wykresy. I tworzy kilka plików wtedy z obrazkami.

Kod: Zaznacz cały

package jforex;

import com.dukascopy.api.*;
import com.dukascopy.api.drawings.ICustomWidgetChartObject;
import java.awt.*;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.lang.Object.*;
import java.util.*;
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;

public class Strategy_11012021_xd implements IStrategy {
    private IEngine engine;
    private IConsole console;
    private IHistory history;
    private IContext context;
    private IIndicators indicators;
    private IUserInterface userInterface;
    private IChart chart;
    
    JFrame f = null;
    ICustomWidgetChartObject obj = null;
    
    private int counter = 0;
    
    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();
        this.chart = context.getChart(Instrument.EURUSD);
        
        for (IChart chart : context.getCharts()) {
        
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        obj = chart.getChartObjectFactory().createChartWidget();
        
        JPanel panel = obj.getContentPanel();
        panel.setLayout(null);
        
        BufferedImage image = null;
        
        try {
            image = ImageIO.read(new File("/tmp/img.png")); // link do obrazka znak wodny
            panel.setSize(new Dimension(image.getWidth(), image.getHeight()));  // set widget size
            JLabel picLabel = new JLabel(new ImageIcon(image)); 
            picLabel.setSize(new Dimension(image.getWidth(), image.getHeight()));
            panel.add(picLabel);
            panel.repaint();
            console.getOut().println(image);
        } catch (IOException ioe) {}
        
        obj.setFillOpacity(0f);
        obj.setPosX(0.7f);
        obj.setPosY(0.5f);        
        //obj.setSticky(true);
        
        
        chart.add(obj);
        
        
        try {
            File file = new File("/tmp/ChartImage" + (counter++) +".png"); // automatyczne zapisanie pod ta ścieżką i nazwą pliku
            //ImageIO.write(chart.getImage(), "png", file); 
            BufferedImage combined = new BufferedImage(chart.getImage().getWidth(), chart.getImage().getHeight(), BufferedImage.TYPE_INT_ARGB);       
            Graphics g = combined.getGraphics();            
            g.drawImage(chart.getImage(), 0, 0, null);    
            g.drawImage(image, 0, 0, null);
            g.dispose();
            ImageIO.write(combined, "PNG", file);
        } catch (Exception e) {
            e.printStackTrace(console.getErr());
        }
        
    }
        
        context.stop();       

    }

    public void onAccount(IAccount account) throws JFException {
    }

    public void onMessage(IMessage message) throws JFException {
    }

    public void onStop() throws JFException {
        if (f != null)
            f.dispose();
    }

    public void onTick(Instrument instrument, ITick tick) throws JFException {
    }
    
    public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {
    }
}
A przezroczystość widgetu zmienia się dodając obj.setFillOpacity(0f) jak wyżej. A żeby przesunąć od razu np w prawy dolny róg to trzeba zmienić tutaj gdzie są te 2 linie obj.setPosX(0.7f); obj.setPosY(0.5f); . Jak komuś się chce to może w tym podłubać i to ogarnąć.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
https://www.myfxbook.com/members/rookie_t/pycha-kroczy-przed-upadkiem/7931743

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: JForex

Nieprzeczytany post autor: ninjaproject »

Powiem tyle, że w MQL jest to o wiele prostsze.
Ale, na pewno w javie też się da tworzyć etykiety w tle?

Ja sobie stworzyłem taki wskaźnik, np.
Przegląd tygodnia.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

rookie2
Pasjonat
Pasjonat
Posty: 399
Rejestracja: 29 wrz 2020, 00:10

Re: JForex

Nieprzeczytany post autor: rookie2 »

Nie no, do tego jest API przygotowane https://www.dukascopy.com/wiki/en/devel ... ct-catalog. Ale tomasz pisał o znaku wodnym. W sumie to jest tam text i label. Jak tomasz nie potrzebuje znaku wodnego z jakimś oryginalnym obrazkiem to wystarczy wstawić na wykres text albo label, bo te obiekty mają metody (https://www.dukascopy.com/client/javado ... bject.html) .setOpacity, czyli przezroczystość. Ale znak wodny, to znak wodny...
https://www.myfxbook.com/members/rookie_t/pycha-kroczy-przed-upadkiem/7931743

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: JForex

Nieprzeczytany post autor: ninjaproject »

To ujdzie za znak wodny?
2021-01-14_163951.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

ODPOWIEDZ