How do you add Parameters for LineStyles to a project?

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

How do you add Parameters for LineStyles to a project?

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: 85 times

Re: How do you add Parameters for LineStyles to a project?

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

Re: How do you add Parameters for LineStyles to a project?

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

Post Reply