Page 3 of 3

Re: keyboard shortcuts for trading

Posted: Mon Apr 06, 2020 8:22 pm
by mateusz
+1

Re: keyboard shortcuts for trading

Posted: Thu Jul 23, 2020 4:44 am
by kb_trader

Re: keyboard shortcuts for trading

Posted: Thu Oct 15, 2020 10:11 pm
by czoa
+1.

Definitely should be an integral part of the application, as in any other trading platform.

Re: keyboard shortcuts for trading

Posted: Tue Nov 09, 2021 10:11 am
by michael_loboyko
Hi,
Hotkeys are available in 7.3 now, you can set different shortcuts or use the default. Go to Setting -> Keyboard shortcuts -> Instruments Trading. 

Re: keyboard shortcuts for trading

Posted: Tue Jan 04, 2022 1:45 am
by humberto_najera
AndreyR wrote:
Thu Aug 08, 2019 5:49 am
Hi all,
you may want to implement these features yourself.
Use Simplified interface, create a KeyEventDispatcher object and assign keys to desired actions.
Here's an example:

Code: Select all

 
package com.bookmap.api.simple.simplified;

import java.awt.KeyEventDispatcher;
import java.awt.KeyboardFocusManager;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;

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.annotations.Layer1TradingStrategy;
import velox.api.layer1.common.Log;
import velox.api.layer1.data.ExecutionInfo;
import velox.api.layer1.data.InstrumentInfo;
import velox.api.layer1.data.OrderInfoUpdate;
import velox.api.layer1.simplified.Api;
import velox.api.layer1.simplified.CustomModule;
import velox.api.layer1.simplified.OrdersListener;
import velox.api.layer1.simplified.InitialState;
import velox.api.layer1.data.OrderSendParameters;
import velox.api.layer1.data.SimpleOrderSendParametersBuilder;

@Layer1SimpleAttachable
@Layer1StrategyName("Send Order By Key")
@Layer1ApiVersion(Layer1ApiVersionValue.VERSION1)
@Layer1TradingStrategy
public class SendOrderByKey implements CustomModule, OrdersListener {
    Api api;
    private String alias;
    private KeyEventDispatcher customDispatcher;
    List<OrderInfoUpdate> list = new ArrayList<>();
    
    String orderAliasTarget;
    String orderAliasStop;
    int updateCount;

    @Override
    public void initialize(String alias, InstrumentInfo info, Api api, InitialState initialState) {
        this.alias = alias;
        this.api = api;
        listenForKey();
    }

    @Override
    public void stop() {
        KeyboardFocusManager.getCurrentKeyboardFocusManager().removeKeyEventDispatcher(customDispatcher);
    }
    
    private void sendMarketOrber (boolean isBuy ) {
        if (isBuy) {
        SimpleOrderSendParametersBuilder shortOrderSendParameters = new  SimpleOrderSendParametersBuilder (alias, false, 1);
        shortOrderSendParameters.setSize(10);
        shortOrderSendParameters.setBuy(isBuy);
        OrderSendParameters shortOrder = shortOrderSendParameters.build();
        api.sendOrder(shortOrder);
        
        } else {
            SimpleOrderSendParametersBuilder OrderSendParameters = new SimpleOrderSendParametersBuilder (alias, false, 1);
            OrderSendParameters.setLimitPrice(6300);
            OrderSendParameters.setSize(10);
            OrderSendParameters.setBuy(isBuy);
            OrderSendParameters.setTakeProfitOffset(5);
            OrderSendParameters.setStopLossOffset(6);
            OrderSendParameters.setStopLossClientId(isBuy?"longStop":"shortStop");
            OrderSendParameters.setTakeProfitClientId(isBuy?"longTarget":"shortTarget");            
            OrderSendParameters orderParam = OrderSendParameters.build();
            orderAliasStop = OrderSendParameters.getStopLossClientId();
            orderAliasTarget= OrderSendParameters.getTakeProfitClientId();
            api.sendOrder(orderParam);
        }
        
    }

    private void listenForKey() {
        customDispatcher = new KeyEventDispatcher() {
            @Override
            public boolean dispatchKeyEvent(KeyEvent e) {
                switch (e.getID()) {
                case KeyEvent.KEY_PRESSED:
                    if (e.getKeyChar() == 'b') {
                        sendMarketOrber(true);
                    }
                    if (e.getKeyChar() == 's') {
                        sendMarketOrber(false);
                    }
                    break;
                case KeyEvent.KEY_RELEASED:
                    break;
                case KeyEvent.KEY_TYPED:
                    break;
                }
                return false;
            }
        };
        
        KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(customDispatcher);
    }
    
    @Override
    public void onOrderUpdated(OrderInfoUpdate orderInfoUpdate) {
        list.add(orderInfoUpdate);
        Log.info("UPDATE " + updateCount++);
    }

    @Override
    public void onOrderExecuted(ExecutionInfo executionInfo) {
        // TODO Auto-generated method stub
    }
}

Hi AndryR, did you make it work with DxFeed? 
I'm getting the following error: Most of the API Modules are not allowed for this instrument. On DXFeed you can check "This is a demo account" in connection configuration to use this strategy with delayed data


 

Re: keyboard shortcuts for trading

Posted: Mon Jan 10, 2022 1:13 pm
by Andry API support
Hi, sorry for replying so late. DxFeed puts some limitations on running modules. Please contact support for more information.