Topics
08 Jul 2013, 17:43
 3122
 5
21 Jun 2013, 10:49
 5637
 12
Replies

elodie
24 Jul 2013, 20:28

RE:
gorin said:

Hi,

You can limit by adding a statement like :

if (volume > 800k )
    volume = 800k;

you can put this statement in the code in the "ExecuteTrade" method at the beginning.


thank you very much....

élodie


@elodie

elodie
23 Jul 2013, 17:00

RE:
elodie said:

hello
on the robot;alembex

/algos/robots/show/251
I would like a formula to limit the volumes
eg 800k (0.8m) max
thank you very much.

élodie


hello
I found a few examples,
but I have not managed to adapt
thank you


@elodie

elodie
26 Jun 2013, 19:02

RE:
atrader said:

It's here: /algos/robots/show/307

If you (or anyone else) have any ideas about how to optimize it further, go ahead and let me know I will modify it.


great !!

thank you


@elodie

elodie
26 Jun 2013, 14:49

yes for "}".
c is a copy error
but can you help me to develop fully the "RiskPct" lever 500 ..
malgres all my efforts I n unable to operate "RiskPCT.
I'm still with volume 10000.
whatever starting capital.(backtesting)
thank you very much


@elodie

elodie
25 Jun 2013, 14:15

RE:
atrader said:

I'm not sure what you mean. Do you still need help? Post the code you managed to come up with so far and I will try to correct it.

hi I have tried several solutions without success thank you in advance for your help...

using System;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Requests;

namespace cAlgo.Robots
{
    [Robot]
    public class CCI_20 : Robot
    {
        [Parameter(DefaultValue = 1, MinValue = 0, MaxValue = 50)]
        public int RiskPct{get;set;}

        [Parameter(DefaultValue = 500, MinValue = 100, MaxValue = 500)]
        public int Leverage{get;set;}

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

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

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

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

        private Position _position;
        private CommodityChannelIndex _cci;

        protected override void OnStart()
        {
            _cci = Indicators.CommodityChannelIndex(Periods);
        }
        protected int getVolume
        {
            get
            {
                var risk = (int) (RiskPct*Account.Balance/100);
                var volumeOnRisk = (int) (risk*Symbol.Ask/(Symbol.PipSize*StopLoss)); // or Bid
               
                double maxVolume = Account.Equity*Leverage*100/101;
                
                var vol = Math.Min(volumeOnRisk, maxVolume);

                return (int)Math.Truncate(Math.Round(vol) / 10000) * 10000; // round to 10K
            }
        }

        } protected override void OnBar()
        {
            if (Trade.IsExecuting)
                return;

            bool isLongPositionOpen = _position != null && _position.TradeType == TradeType.Buy;
            bool isShortPositionOpen = _position != null && _position.TradeType == TradeType.Sell;

            if (_cci.Result.HasCrossedBelow(0.0, 2) && !isShortPositionOpen)
                OpenPosition(TradeType.Sell);

            else if (_cci.Result.HasCrossedAbove(0.0, 2) && !isLongPositionOpen)
                OpenPosition(TradeType.Buy);
        }

        private void OpenPosition(TradeType type)
        {
            if (_position != null)
                Trade.Close(_position);

            Request request = new MarketOrderRequest(type, Volume)
                                  {
                                      Label = "CCI 20",
                                      StopLossPips = StopLoss > 0?  StopLoss: (int?) null,
                                      TakeProfitPips = TakeProfit > 0? TakeProfit: (int?) null,
                                  };
            Trade.Send(request);
        }

        
        protected override void OnPositionOpened(Position openedPosition)
        {
            _position = openedPosition;
        }
    }
}


@elodie

elodie
24 Jun 2013, 12:10

RE: RE:
elodie said:
atrader said:

There is something similar in this robot: /algos/robots/show/271 Is this the one you are saying it's difficult to reproduce?

I haven't tested this but I think it should be something like this:

        protected int getVolume
        {
            get
            {
                var risk = (int) (RiskPct*Account.Balance/100);
                var volumeOnRisk = (int) (risk*Symbol.Ask/(Symbol.PipSize*StopLoss)); // or Bid
               
                double maxVolume = Account.Equity*Leverage*100/101;
                
var vol = Math.Min(volumeOnRisk, maxVolume);
return (int)Math.Truncate(Math.Round(vol) / 10000) * 10000; // round to 10K } }




thank you
but it does not work

hi

with this method,it allows to adjust the lever :

[Parameter(DefaultValue = 500, MinValue = 100, MaxValue = 500)]
public int Leverage{get;set;}

thank you very much


@elodie

elodie
21 Jun 2013, 12:51

RE:
atrader said:

There is something similar in this robot: /algos/robots/show/271 Is this the one you are saying it's difficult to reproduce?

I haven't tested this but I think it should be something like this:

        protected int getVolume
        {
            get
            {
                var risk = (int) (RiskPct*Account.Balance/100);
                var volumeOnRisk = (int) (risk*Symbol.Ask/(Symbol.PipSize*StopLoss)); // or Bid
               
                double maxVolume = Account.Equity*Leverage*100/101;
                
var vol = Math.Min(volumeOnRisk, maxVolume);
return (int)Math.Truncate(Math.Round(vol) / 10000) * 10000; // round to 10K } }




thank you
but it does not work


@elodie

elodie
18 Jun 2013, 11:16

hi
why the download does not work ..?

http://www.calgofx.com/view_page?pid=jedi-scalper-1354962455


@elodie

elodie
07 Jun 2013, 13:45

not trade sell

hello !!!

not trade sell...?

error flag3 and flag 5.

the error may be here

someone has a 't have any idea ..?

 

if ((flag3 && this.Tbounce > 0) || (flag5 && this.Tbreak > 0))
                {
                    MarketOrderRequest request2 = new MarketOrderRequest(TradeType.Sell, (int)((double)this.InitialVolume * num7))

    bool flag = num6 >= (double)this.Starttime && num6 < (double)this.Stoptime;
            bool flag2 = (base.Symbol.Digits == 4 && Math.Truncate(num2) > Math.Truncate(num5) && Math.Truncate(num3) > Math.Truncate(num5)) || (base.Symbol.Digits == 5 && Math.Truncate(num2 * 100.0) > Math.Truncate(num5 * 100.0) && Math.Truncate(num3 * 100.0) > Math.Truncate(num5 * 100.0));
            bool flag3 = (base.Symbol.Digits == 4 && Math.Truncate(num2) < Math.Truncate(num4) && Math.Truncate(num3) < Math.Truncate(num4)) || (base.Symbol.Digits == 5 && Math.Truncate(num2 * 100.0) < Math.Truncate(num4 * 100.0) && Math.Truncate(num3 * 100.0) < Math.Truncate(num5 * 100.0));
            bool flag4 = (base.Symbol.Digits == 4 && Math.Truncate(num2) < Math.Truncate(num4) && Math.Truncate(num3) > Math.Truncate(num5)) || (base.Symbol.Digits == 5 && Math.Truncate(num3 * 100.0) > Math.Truncate(num5 * 100.0));
            bool flag5 = (base.Symbol.Digits == 4 && Math.Truncate(num2) > Math.Truncate(num5) && Math.Truncate(num3) < Math.Truncate(num4)) || (base.Symbol.Digits == 5 && Math.Truncate(num3 * 100.0) < Math.Truncate(num5 * 100.0));
            if (num < 1 && flag)


@elodie