Topics
10 Oct 2017, 21:18
 2479
 7
Replies

anjupeguforex@gmail.com
17 Oct 2017, 06:49

RE: RE: RE:

afhacker said:

anjupeguforex@gmail.com said:

afhacker said:

try this: /algos/indicators/show/1425

Alert.dll is not available .Please help me.

I just updated it and added the DLL files download link with a new test indicator.

Can you add sound option with alert window? 


@anjupeguforex@gmail.com

anjupeguforex@gmail.com
12 Oct 2017, 13:12

RE:

Panagiotis Charalampous said:

Hi anjupeguforex@gmail.com,

You get this exception because you are trying to access an array item that does not exist. Before accessing a position in Positions using index You should always check that the index is within the range of the array. I propose to change checks like the following 

            if (poz[1] != null)

to

            if (poz.Length > 1)

Best Regards,

Panagiotis

 Now all are working.Thank You very much.


@anjupeguforex@gmail.com

anjupeguforex@gmail.com
12 Oct 2017, 07:23

Same issue Again


using System;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Internals;

namespace cAlgo.Robots
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class FXGODREWORKING : Robot
    {
        [Parameter("Position Volume", DefaultValue = 1000, MinValue = 1000, Step = 5000)]
        public int InitialVolume { get; set; }

        [Parameter("Buy ", DefaultValue = true)]
        public bool buy { get; set; }

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

        [Parameter("Take Profit", DefaultValue = 150)]
        public int TakeProfit { get; set; }

        [Parameter("New Position Add", DefaultValue = 20)]
        public int NewAdd { get; set; }

        private const string mylabel = "POS-INDEX-SAMPLE";


        protected override void OnStart()
        {
            Positions.Closed += OnPositionsClosed1;
            //  Positions.Closed += OnPositionsClosed2;
            Positions.Opened += PositionsOnOpened1;

            var position = Positions.Find(mylabel, Symbol);
            if (position == null)
            {
                if (buy == true)
                    ExecuteMarketOrder(TradeType.Buy, Symbol, InitialVolume, mylabel, StopLoss, TakeProfit);
                else

                    ExecuteMarketOrder(TradeType.Sell, Symbol, InitialVolume, mylabel, StopLoss, TakeProfit);
            }

        }


        ////////////////////////////////////////////////////////////////////////////////////
        /* I have Some Other uses so Please help me making it Correct by using Position Index, 
          
        */
        /////////////////////////////////////////////////////////////////////////////////////////


     private void PositionsOnOpened1(PositionOpenedEventArgs args)
        {
            var position = args.Position;
            Position[] poz = Positions.FindAll(mylabel);
            var poz1 = poz[0];
            var poz2 = poz[1];

            foreach (var order in PendingOrders)
            {
                if (order.Label == position.Label)
                {
                    if (order != null)
                        CancelPendingOrder(order);
                }
            }

            if (Positions.Count == 1)
            {
                // one position exit it place One buy and One Sell Pending Order
                PlaceStopOrder(TradeType.Buy, Symbol, InitialVolume, position.EntryPrice + NewAdd * Symbol.PipSize, mylabel, NewAdd, TakeProfit);
                PlaceStopOrder(TradeType.Sell,Symbol, InitialVolume, position.EntryPrice - NewAdd * Symbol.PipSize, mylabel, NewAdd, TakeProfit);
            }

            if (poz2 != null)
            {
                // If poz2 or more position exist
                // placing pending order by looking last and 2nd last existing position
                if (poz1.TradeType == TradeType.Buy && poz2.TradeType == TradeType.Buy)
                {
                    PlaceStopOrder(TradeType.Buy, Symbol, InitialVolume, position.EntryPrice + NewAdd * Symbol.PipSize, mylabel, NewAdd, TakeProfit);
                }
                else if (poz1.TradeType == TradeType.Sell && poz2.TradeType == TradeType.Sell)
                {
                    PlaceStopOrder(TradeType.Buy, Symbol, InitialVolume, position.EntryPrice + NewAdd * Symbol.PipSize, mylabel, NewAdd, TakeProfit);

                }
            }
        }

        ////////////////////////////////////////////////
        private void OnPositionsClosed1(PositionClosedEventArgs args)
        {
            Print("Closed");
            var position = args.Position;
            Position[] pos = Positions.FindAll(mylabel, Symbol);
            var pos1 = pos[0];
            var pos2 = pos[1];

            if (pos1.GrossProfit < 0)
            {
                // If last position make loss by Sl it take a new reverse position 
                if (pos1.TradeType == TradeType.Buy)
                    ExecuteMarketOrder(TradeType.Buy, Symbol, InitialVolume, mylabel, NewAdd, TakeProfit);
                else
                    ExecuteMarketOrder(TradeType.Sell, Symbol, InitialVolume, mylabel, NewAdd, TakeProfit);
            }

            if (pos2 != null)
            {
                // // If last position make loss modity position pos2 Stoploss to Its Entry Price
                if (pos1.TradeType != pos2.TradeType)
                    ModifyPosition(pos2, pos2.EntryPrice, pos2.TakeProfit);
            }

        }


    }

}




 


@anjupeguforex@gmail.com

anjupeguforex@gmail.com
12 Oct 2017, 06:49

Using an index making IndexOutOfRangeException Error

Using Index makeing   IndexOutOfRangeException: Index was outside the bounds of the array.


using System;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Internals;

namespace cAlgo.Robots
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class FXGODREWORKING : Robot
    {
        [Parameter("Position Volume", DefaultValue = 1000, MinValue = 1000, Step = 5000)]
        public int InitialVolume { get; set; }

        [Parameter("Buy ", DefaultValue = true)]
        public bool buy { get; set; }

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

        [Parameter("Take Profit", DefaultValue = 150)]
        public int TakeProfit { get; set; }

        [Parameter("New Position Add", DefaultValue = 150)]
        public int NewAdd { get; set; }

        private const string mylabel = "POS-INDEX-SAMPLE";

        protected override void OnStart()
        {
            Positions.Closed += OnPositionsClosed1;
            //  Positions.Closed += OnPositionsClosed2;
            Positions.Opened += PositionsOnOpened1;

            var position = Positions.Find(mylabel, Symbol);
            if (position == null)
            {
                if (buy == true)
                    ExecuteMarketOrder(TradeType.Buy, Symbol, InitialVolume, mylabel, StopLoss, TakeProfit);
                else

                    ExecuteMarketOrder(TradeType.Sell, Symbol, InitialVolume, mylabel, StopLoss, TakeProfit);
            }

        }


        ////////////////////////////////////////////////////////////////////////////////////
/* I have Some Other uses so Please help me making it Correct by using Position Index, 
          
        */
        /////////////////////////////////////////////////////////////////////////////////////////


                private void PositionsOnOpened1(PositionOpenedEventArgs args)
        {

            var position = args.Position;
            Position[] poz = Positions.FindAll(mylabel);

            foreach (var order in PendingOrders)
            {
                if (order.Label == position.Label)
                {
                    if (order != null)
                        CancelPendingOrder(order);
                }
            }

            if (Positions.Count == 1)
            {
                // one position exit it place One buy and One Sell Pending Order
                PlaceStopOrder(TradeType.Buy, Symbol, InitialVolume, position.EntryPrice + NewAdd * Symbol.PipSize, mylabel, NewAdd, TakeProfit);
                PlaceStopOrder(TradeType.Sell, Symbol, InitialVolume, position.EntryPrice - NewAdd * Symbol.PipSize, mylabel, NewAdd, TakeProfit);
            }

            if (poz[1] != null)
            {
                // If poz[1] or more position exist
                // placing pending order by looking last and 2nd last existing position
                if (poz[0].TradeType == TradeType.Buy && poz[1].TradeType == TradeType.Buy)
                {
                    PlaceStopOrder(TradeType.Buy, Symbol, InitialVolume, position.EntryPrice + NewAdd * Symbol.PipSize, mylabel, NewAdd, TakeProfit);
                }
                else if (poz[0].TradeType == TradeType.Sell && poz[1].TradeType == TradeType.Sell)
                {
                    PlaceStopOrder(TradeType.Buy, Symbol, InitialVolume, position.EntryPrice + NewAdd * Symbol.PipSize, mylabel, NewAdd, TakeProfit);

                }
            }
        }

        ////////////////////////////////////////////////
        private void OnPositionsClosed1(PositionClosedEventArgs args)
        {
            Print("Closed");
            var position = args.Position;
            Position[] pos = Positions.FindAll(mylabel, Symbol);
            if (pos[0].GrossProfit < 0)
            {
                // If last position make loss by Sl it take a new reverse position 
                if (pos[0].TradeType == TradeType.Buy)
                    ExecuteMarketOrder(TradeType.Buy, Symbol, InitialVolume, mylabel, NewAdd, TakeProfit);
                else
                    ExecuteMarketOrder(TradeType.Sell, Symbol, InitialVolume, mylabel, NewAdd, TakeProfit);
            }

            if (pos[1] != null)
            {
                //  If last position make loss modity position pos[1] Stoploss to Its Entry Price
                if (pos[0].TradeType != pos[1].TradeType)
                    ModifyPosition(pos[1], pos[1].EntryPrice, pos[1].TakeProfit);
            }

        }

    }

}




 


@anjupeguforex@gmail.com

anjupeguforex@gmail.com
11 Oct 2017, 09:11

RE: RE: RE:

afhacker said:

anjupeguforex@gmail.com said:

afhacker said:

try this: /algos/indicators/show/1425

Alert.dll is not available .Please help me.

I just updated it and added the DLL files download link with a new test indicator.

Thank you, Thank you, Thank you Many many thanks.


@anjupeguforex@gmail.com

anjupeguforex@gmail.com
11 Oct 2017, 06:39

RE:

afhacker said:

try this: /algos/indicators/show/1425

Alert.dll is not available .Please help me.


@anjupeguforex@gmail.com