NEOBOT

by neoklis357 in category Other at 13/05/2018
Description

HEY GUYS I GREATE MY FIRST CBOT AND I WOULD IF YOU ALL CAN CHECK IT AND TELL IF IS GOOD OR IF IT'S NEEDS ANY MORE WORK THANK YOU ALL I AM WAITING FOR ALL YOU COMMENTS

Download
47 downloads
How to install
Warning! Executing the following cBot may result in loss of funds. Use it at your own risk.
Notification Publishing copyrighted material is strictly prohibited. If you believe there is copyrighted material in this section you may use the Copyright Infringement Notification form to submit a claim.
Formula / Source Code
Language: C#
Trading Platform: cAlgo
using System;
using cAlgo.API;
using cAlgo.API.Indicators;

namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.FullAccess)]
    public class neobot : Robot
    {
        [Parameter("x1", DefaultValue = 281)]
        public int x1 { get; set; }

        [Parameter("x2", DefaultValue = 100)]
        public int x2 { get; set; }

        [Parameter("x3", DefaultValue = 794)]
        public int x3 { get; set; }

        [Parameter("x4", DefaultValue = 566)]
        public int x4 { get; set; }

        [Parameter("FastMA", DefaultValue = 20)]
        public int FastMA { get; set; }

        [Parameter("SlowMA", DefaultValue = 21)]
        public int SlowMA { get; set; }

        [Parameter("Step", DefaultValue = 28)]
        public int Step { get; set; }

        [Parameter("StopLoss", DefaultValue = 550)]
        public int StopLoss { get; set; }

        [Parameter("Volume", DefaultValue = 10000)]
        public int Volume { get; set; }

        [Parameter("Order Multiplier", DefaultValue = 2)]
        public int _OrderMultiplier { get; set; }

        [Parameter("Take Profits (pips)", DefaultValue = 10)]
        public int _TP { get; set; }

        private MacdHistogram macd;
        private Position pos;
        private bool IsPosOpen = false;
        private double sl;
        protected override void OnStart()
        {
            macd = Indicators.MacdHistogram(SlowMA, FastMA, 3);
        }
        [Parameter("MA Type")]
        public MovingAverageType MAType { get; set; }

        protected override void OnTick()
        {
            int last = MarketSeries.Close.Count - 1;
            if (!(MarketSeries.Open[last] == MarketSeries.High[last] && MarketSeries.Open[last] == MarketSeries.Low[last]))
                return;
            double per = percertron();
            if (!IsPosOpen)
            {
                if (per > 0)
                {
                    Trade.CreateBuyMarketOrder(Symbol, Volume);
                    IsPosOpen = true;
                }
                if (per < 0)
                {
                    Trade.CreateSellMarketOrder(Symbol, Volume);
                    IsPosOpen = true;
                }
            }
            else
            {
                if (pos.TradeType == TradeType.Buy && per < 0)
                {
                    Trade.Close(pos);
                    Trade.CreateSellMarketOrder(Symbol, Volume);
                    return;
                }
                else
                {
                    if (Symbol.Ask > sl + StopLoss * 2 * Symbol.PointSize)
                        Trade.ModifyPosition(pos, Symbol.Ask - StopLoss * Symbol.PointSize, 0);
                }
                if (pos.TradeType == TradeType.Sell && per > 0)
                {
                    Trade.Close(pos);
                    Trade.CreateBuyMarketOrder(Symbol, Volume);
                }
                else
                {
                    if (Symbol.Bid < sl - StopLoss * 2 * Symbol.PointSize)
                        Trade.ModifyPosition(pos, Symbol.Bid + StopLoss * Symbol.PointSize, 0);
                }
            }
        }


        protected override void OnStop()
        {
            // Put your deinitialization logic here
        }

        protected override void OnPositionOpened(Position openedPosition)
        {
            pos = openedPosition;
            if (openedPosition.TradeType == TradeType.Buy)
            {
                sl = Symbol.Ask - StopLoss * Symbol.PointSize;
                Trade.ModifyPosition(openedPosition, sl, 0);
            }
            if (openedPosition.TradeType == TradeType.Sell)
            {
                sl = Symbol.Bid + StopLoss * Symbol.PointSize;
                Trade.ModifyPosition(openedPosition, sl, 0);
            }
        }

        private double percertron()
        {
            int last = MarketSeries.Close.Count - 1;
            double w1 = x1 - 100;
            double w2 = x2 - 100;
            double w3 = x3 - 100;
            double w4 = x4 - 100;
            double a1 = macd.Histogram[last - 1];
            double a2 = macd.Histogram[last - 1 - Step];
            double a3 = macd.Histogram[last - 1 - Step * 2];
            double a4 = macd.Histogram[last - 1 - Step * 3];
            return w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4;
        }
    }
}
Comments

neoklis357 - May 13, 2018 @ 19:52

So what you think guys? Is it good you backtest it?

Astroke - May 13, 2018 @ 21:45

we need more info. he's only based on MACD? 

neoklis357 - May 13, 2018 @ 22:50

YES ONLY ON MACD

DO YOU HAVE ANY SUGGESTIONS TO MAKE ?

DID YOU BACKTEST IT ? WHAT YOU THINK IS GOOD?

I AM THINKING TO ADD ALSO SOMETHING LIKE A NEWS CHECK UP AND IF IM ABLE TO COMBINE MACD WITH THAT WHAT YOU THINK?

neoklis357 - May 13, 2018 @ 22:51

@ASTROKE

 

neoklis357 - May 13, 2018 @ 22:51

Astroke

Astroke - May 13, 2018 @ 22:53

he's ok not the grail just ok. maybe you need to add some money management like lots size ajusted in risk % or add x lots per loose something like that. 

neoklis357 - May 13, 2018 @ 23:39

Astroke and how i can add all the above you suggest?

0