Category Other  Published on 26/05/2020

Simple Key Entry

Description

This bot was created for the purpose of confirming manual trading with past data by BackTest in visual mode, but it can also be used for real trading.


//This bot was created for the purpose of confirming manual trading with past data by BackTest, but it can also be used for real trading.
//
//<<<<< Entry >>>>>
// Buy : Shift + Left Mouse
// Sell: Ctrl + Left Mouse
//
//<<<<< Close >>>>>
// We will close Profit / Loss as you set or at any time.
//
// Only profit positions : Alt + Shift + Left Mouse
// Only Loss positions   : Alt + Ctrl  + Left Mouse
// All positions         : Alt + Shift + Ctrl + Left Mouse
//
using System;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
using cAlgo.Indicators;

namespace cAlgo
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class SimpleKeyEntry : Robot
    {
        private const string HowToUseText = "<<<<< Entry >>>>>\n Buy: Shift + Left Mouse\n Sell:Ctrl + Left Mouse\n\n <<<<< Close >>>>>\n Only profit positions : Alt + Shift + Left Mouse \n Only Loss positions : Alt + Ctrl  + Left Mouse \n All positions: Alt + Shift + Ctrl + Left Mouse\n";

        [Parameter("Stop Loss (pips)", Group = "Protection", DefaultValue = 30, MinValue = 1)]
        public int StopLossPips { get; set; }

        [Parameter("Take Profit (pips)", Group = "Protection", DefaultValue = 30, MinValue = 1)]
        public int TakeProfitPips { get; set; }

        [Parameter("Volume", Group = "Volume", DefaultValue = 10000, MinValue = 0, Step = 1)]
        public double Volume { get; set; }

        private string label = "SimpleKeyEntry";

        protected override void OnStart()
        {
            Chart.MouseDown += onChartMouseDown;
            howToUseText();
        }
        private void howToUseText()
        {
            Chart.DrawStaticText(label, HowToUseText, VerticalAlignment.Bottom, HorizontalAlignment.Left, Chart.ColorSettings.ForegroundColor);
        }
        private void onChartMouseDown(ChartMouseEventArgs args)
        {
            if (args.AltKey)
            {
                if (args.ShiftKey && args.CtrlKey)
                {
                    allClose();
                }
                else
                {
                    if (args.ShiftKey)
                    {
                        netProfitOnlyClose();
                    }
                    else if (args.CtrlKey)
                    {
                        netLossOnlyClose();
                    }
                }
            }
            else
            {
                if (args.ShiftKey)
                {
                    entry(TradeType.Buy);
                }
                else if (args.CtrlKey)
                {
                    entry(TradeType.Sell);
                }
            }
        }
        private void entry(TradeType type)
        {
            var order = ExecuteMarketOrder(type, SymbolName, Volume, label, StopLossPips, TakeProfitPips);
            if (!order.IsSuccessful)
            {
                Print("Error:{0}", order.Error.ToString());
                //throw new Exception(order.Error.ToString());
            }
        }
        private void allClose()
        {
            var positions = Positions.FindAll(label);
            foreach (Position p in positions)
            {
                ClosePosition(p);
            }
        }
        private void netProfitOnlyClose()
        {
            var positions = Positions.FindAll(label);
            foreach (Position p in positions)
            {
                if (p.NetProfit > 0)
                {
                    ClosePosition(p);
                }
            }
        }
        private void netLossOnlyClose()
        {
            var positions = Positions.FindAll(label);
            foreach (Position p in positions)
            {
                if (p.NetProfit < 0)
                {
                    ClosePosition(p);
                }
            }
        }
    }
}


K0
k0naka1jp

Joined on 25.05.2020

  • Distribution: Free
  • Language: C#
  • Trading platform: cTrader Automate
  • File name: SimpletKeyEntry.algo
  • Rating: 0
  • Installs: 2009
  • Modified: 13/10/2021 09:54
Comments
Log in to add a comment.
RI
rileyanthony365 · 8 months ago

Greetings, I'm Kyle Taylor, a student with a profound fondness for both sports and travel. When not engrossed in my studies, you'll often find me cycling, a pursuit that not only helps maintain my fitness but also facilitates an active lifestyle. Additionally, I harbor a deep passion for venturing into new locales and immersing myself in various cultures. The thrill of uncovering unfamiliar destinations and embracing diverse cultural experiences profoundly influences and broadens my perspective of the world.

JA
jamesj6428628 · 1 year ago

hey good one

JE
jeremyjeremy12121 · 1 year ago

Today's students face a lot of problems when they are assigned to write various writing assignments such as essays or essays. So that you do not suffer from a lot of homework, I recommend you to use this Assignmentguru online assignment writing service. This service allows you to save a lot of time and all your writing tasks will be solved without your participation by professional writers.

LA
lavishceramicsseo · 2 years ago

Different information is provided and useful in many ways in our website.

Read More : Top 10 Best Tiles Company

IN
indiasolving · 2 years ago

The information is well given, useful in many ways and a lot of help to me from here. You also know more information about NCT members.

Visit our official website : https://www.indiasolv.in/

JU
Julierape · 2 years ago

Concrete Curing Time: Thanks for Sharing the code. This code increase my knowledge