Custom indicators, trading strategies, data export and recording and more...
-
dmavro
- Posts: 52
- Joined: Thu Sep 24, 2020 9:20 pm
- Been thanked: 1 time
Post
by dmavro » Fri Mar 05, 2021 3:33 am
I use parameters like this to set my colors and line sizes for my plots(Indicators). How do you add the same for Line styles? I found code in
this forum post that looks like it does what im looking for but it is very complex for me at this point. So, I was wondering if anyone had a better example to share or something different in the forum that i missed.
Thanks in advance,
Dean
Code: Select all
@Parameter(name = "ATRhi color")
private volatile Color ATRhiColor = Color.CYAN;
@Parameter(name = "ATRhi size")
private volatile Integer ATRhiSize = 2;
//@Parameter(name = "ATRhi style")
//private volatile Intervals ATRhistyle = Intervals.INTERVAL_30_SECONDS;
//private volatile LineStyle ATRhistyle = LineStyle.valueOf("SOLID");
-
Andry API support
- Posts: 549
- Joined: Mon Jul 09, 2018 11:18 am
- Has thanked: 25 times
- Been thanked: 86 times
Post
by Andry API support » Fri Mar 05, 2021 10:34 am
Simplified API @Parameter does not accept LineStyle type. But there are only 5 ready LineStyle values so your module can take an int parameter (1 to 5) and turn it into LineStyle. Example:
Code: Select all
package velox.api.layer1.simplified.demo;
import java.awt.Color;
import java.util.HashMap;
import java.util.Map;
import velox.api.layer1.annotations.Layer1ApiVersion;
import velox.api.layer1.annotations.Layer1ApiVersionValue;
import velox.api.layer1.annotations.Layer1SimpleAttachable;
import velox.api.layer1.annotations.Layer1StrategyName;
import velox.api.layer1.data.InstrumentInfo;
import velox.api.layer1.data.TradeInfo;
import velox.api.layer1.messages.indicators.Layer1ApiUserMessageModifyIndicator.GraphType;
import velox.api.layer1.simplified.Api;
import velox.api.layer1.simplified.CustomModule;
import velox.api.layer1.simplified.Indicator;
import velox.api.layer1.simplified.InitialState;
import velox.api.layer1.simplified.LineStyle;
import velox.api.layer1.simplified.Parameter;
import velox.api.layer1.simplified.TradeDataListener;
@Layer1SimpleAttachable
@Layer1StrategyName("Last trade: Line Styles")
@Layer1ApiVersion(Layer1ApiVersionValue.VERSION2)
public class LastTradeDemoLineStyle implements CustomModule, TradeDataListener
{
private Map<Integer, LineStyle> lineStyles = new HashMap<>();
{
lineStyles.put(1, LineStyle.SOLID);
lineStyles.put(2, LineStyle.SHORT_DASH);
lineStyles.put(3, LineStyle.LONG_DASH);
lineStyles.put(4, LineStyle.DOT);
lineStyles.put(5, LineStyle.DASH_DOT);
}
protected Indicator lastTradeIndicator;
@Parameter(name = "<html>Line Style<br>1. SOLID<br>2. SHORT_DASH<br>3. LONG_DASH<br>4. DOT<br>5. DASH_DOT<html>", minimum = 1, maximum = 5)
Integer lineStyleInt = 1;
@Override
public void initialize(String alias, InstrumentInfo info, Api api, InitialState initialState) {
lastTradeIndicator = api.registerIndicator("Last trade, no history",
GraphType.PRIMARY);
lastTradeIndicator.setColor(Color.GREEN);
lastTradeIndicator.setLineStyle(lineStyles.get(lineStyleInt));
}
@Override
public void stop() {
}
@Override
public void onTrade(double price, int size, TradeInfo tradeInfo) {
lastTradeIndicator.addPoint(price);
}
}
-
dmavro
- Posts: 52
- Joined: Thu Sep 24, 2020 9:20 pm
- Been thanked: 1 time
Post
by dmavro » Fri Mar 05, 2021 4:13 pm
Andrey,
Thats exactly what i was looking for. I tried looking in the API java doc but couldnt find the information.
Thanks,
Dean