

Niestety, ale się mylisz.raposo pisze: ↑14 maja 2020, 11:29Ok, już rozumiem o co chodzi. No to niestety zapewne "efekt uboczny" wprowadzonych zmian - filtruje momenty kiedy nie ma handlu, a nie kiedy jest handel ale np. cena nie uległa zmianie. Co by nie było, według mnie słusznie, bo jednak świece to efekt upływu czasu, a nie zmiany ceny. Ale możesz napisać w tej sprawie do Dukascopy. Parę lat temu zbierałem na forum hurtowo uwagi traderów i wysyłałem do nich - wiele z tych rzeczy zostało wprowadzone (choć czasem chwilę to trwało
).
Tak, z małą gwiazdką *wystarczy jeden tik, aby świeca miała postać "_" - no ale to dalej świecaninjaproject pisze: ↑14 maja 2020, 16:06Niestety, ale się mylisz.
Owszem, świeca jest ujęta w interwał czasowy, ale nie będzie rysowana, jeżeli nie ma ticków.
Można to łatwo zaobserwować i często jest tak, że czas świecy upłynął, a kolejna się jeszcze nie rysuje, bo ticków nie ma.
Również się zgadzam. Prawdopodobnie deweloperzy JForex tego nie uwzględnili, ale trzeba również przyznać, że taki problem będzie występował przede wszystkim albo na bardzo mało płynnych rynkach (tego za bardzo Dukas nie ma w ofercie), albo właśnie na sekundówkach.Zgadza się. Sam widok świec i ich występowanie jest uzasadnione.
Wskaźnik natomiast jest narzędziem przetwarzania i obrazowania działań tłumu podmiotów dokonujących transakcji. Jeżeli wartości pustych świec, czyli wartości parametrów rynku w których nikt nie dokonał transakcji, stają się elementem składowym wyliczeń wskaźników, to już tkwi w tym błąd metodologiczny, bo działania tłumu w tych momentach po prostu nie było. Zapewne można by się doszukać pewnych zalet wskaźników i ich zastosowań wyliczanych z uwzględnieniem wartości parametrów pustych świec, bo istnienie tych pustych świec coś przecież znaczy. Jednak tradycyjna wymowa wskaźnika odnosi się do analizy (i efektów tej analizy) momentów rynku w których coś aktywnego się zdarzyło a nie do elementów, w których nie zdarzyło się nic.
Kod: Zaznacz cały
package jforex;
import java.util.*;
import com.dukascopy.api.*;
import com.dukascopy.api.feed.*;
import com.dukascopy.api.feed.util.*;
public class Strategy1505020_tests implements IStrategy, IFeedListener {
private IEngine engine;
private IConsole console;
private IHistory history;
private IContext context;
private IIndicators indicators;
private IUserInterface userInterface;
private IChart chart;
public IFeedDescriptor feedDescriptor;
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();
feedDescriptor = new TimePeriodAggregationFeedDescriptor(Instrument.DEUIDXEUR, Period.TEN_SECS, OfferSide.BID, Filter.ALL_FLATS);
//this.chart = context.getChart(feedDescriptor.getInstrument());
//context.openChart(feedDescriptor);
//console.getOut().println(chart.getFilter());
//feedDescriptor.setFilter(Filter.ALL_FLATS);
context.subscribeToFeed(feedDescriptor, this);
// chart.setInstrument(feedDescriptor.getInstrument());
context.openChart(feedDescriptor);
//chart.setFeedDescriptor(feedDescriptor);
console.getOut().println(feedDescriptor.getFilter());
//chart.setFeedDescriptor(feedDescriptor);
this.chart = context.getChart(feedDescriptor.getInstrument());
}
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 {
}
@Override
public void onFeedData(IFeedDescriptor feedDescriptor, ITimedData feedData) {
console.getOut().println( feedData + " of feed: " + feedDescriptor);
console.getOut().println(feedDescriptor.getFilter());
chart.repaint();
IBar b = (IBar)feedData; // konwersja z IFeedData do IBar
console.getOut().println(" ==> " + b);
try {
ITimedData data = history.getFeedData(feedDescriptor, 0);
IBar bar = history.getBar(
feedDescriptor.getInstrument(),
feedDescriptor.getPeriod(),
feedDescriptor.getOfferSide(),
1
);
console.getOut().println( " bar info " + bar);
} catch (JFException e) {}
}
}
Ahaninjaproject pisze: ↑15 maja 2020, 16:10Ja pirdolę!
Taka kreska to nie jest świeca.
Jeżeli dana kreska nie ma żadnych notowań, to jest tylko wypełnieniem interwału.
W kodzie można takie coś odfiltrować swobodnie.
Kod: Zaznacz cały
//....
private IChart chart;
public IFeedDescriptor feedDescriptor;
public void onStart(IContext context) throws JFException {
// ...
for (IChart c : context.getCharts()) {
this.chart = c;
print(c.getFilter());
feedDescriptor = c.getFeedDescriptor();
feedDescriptor.setFilter(Filter.ALL_FLATS);
c.repaint();
context.openChart(feedDescriptor);
c.repaint();
print(feedDescriptor);
print(c);
}
context.stop();
}