Replies

louisangkq
22 May 2024, 05:44 ( Updated at: 22 May 2024, 07:24 )

RE: Using indicators to trade

PanagiotisCharalampous said: 

Hi there,

Can you share your indicator's code as well as the log created when you load is and the trade is missed?

Best regards,

Panagiotis

Hi Panagiotis, thank you for responding.

Below is my code:

 

using System;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Indicators;


namespace cAlgo
{
    [Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class OrderEntry : Indicator
    {
        //Panel Parameters
        private TextBox _textBox;

        private StackPanel _mainPanel;

        private TextBlock _errorMessageTextBlock;

        [Parameter("Horizontal Alignment", DefaultValue = HorizontalAlignment.Right, Group = "Panel")]
        public HorizontalAlignment HorizontalAlignment { get; set; }

        [Parameter("Vertical Alignment", DefaultValue = VerticalAlignment.Top, Group = "Panel")]
        public VerticalAlignment VerticalAlignment { get; set; }

        [Parameter("Opacity", DefaultValue = 1, MinValue = 0, MaxValue = 1, Group = "Panel")]
        public double Opacity { get; set; }
        

        protected override void Initialize()
        {

            _textBox = new TextBox 
            {
                Margin = 2,
                MinWidth = 100,
                BackgroundColor = Color.LightGray
            };

            var BuyButton = new Button 
            {
                Text = "Buy",
                Margin = 2,
                ForegroundColor   = Color.White,
                BackgroundColor  = Color.Green
            };

            BuyButton.Click += BuyButton_Click;
            
            var SellButton = new Button 
            {
                Text = "Sell",
                Margin = 2,
                ForegroundColor   = Color.White,
                BackgroundColor  = Color.Red
            };

            SellButton.Click += SellButton_Click;

            var panel = new StackPanel 
            {
                Orientation = Orientation.Horizontal
            };

            panel.AddChild(_textBox);
            panel.AddChild(BuyButton);
            panel.AddChild(SellButton);

            _mainPanel = new StackPanel 
            {
                Orientation = Orientation.Vertical,
                HorizontalAlignment = HorizontalAlignment,
                VerticalAlignment = VerticalAlignment,
                Margin = 2,
                Opacity = Opacity
            };

            _errorMessageTextBlock = new TextBlock 
            {
                FontWeight = FontWeight.Bold
            };

            _mainPanel.AddChild(panel);
            _mainPanel.AddChild(_errorMessageTextBlock);
            

            Chart.AddControl(_mainPanel);
            _mainPanel.IsVisible = true;             
            
        }

        public override void Calculate(int index)
        {
        }
        
        private void BuyButton_Click(ButtonClickEventArgs obj)
        {
            ExecuteMarketOrder(TradeType.Buy, SymbolName, Convert.ToDouble(_textBox.Text), "buy order", 10, 10);
        }
        private void SellButton_Click(ButtonClickEventArgs obj)
        {
            ExecuteMarketOrder(TradeType.Sell, SymbolName, Convert.ToDouble(_textBox.Text), "sell order", 10, 10);
        }
    }
}

 

Am I missing out something? 

How can I include execute Market Order & Limit Order commands inside Indicator coding?

 

Thank you in advance. 

 


@louisangkq