Description
this bot set take profit and stop loss for all position by percent based on balance
support us for more free indicator and bot by sign up in LiteFinance broker from this link
using System;
using System.Linq;
using cAlgo.API;
namespace cAlgo
{
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class AWCPStep : Robot
{
[Parameter("Modify TP ", DefaultValue = true)]
public bool TpOption { get; set; }
[Parameter("Take Profit Percent", DefaultValue = 3)]
public double TpPercent { get; set; }
[Parameter("Modify Sl ", DefaultValue = true)]
public bool SlOption { get; set; }
[Parameter("Stop Loss Profit Percent", DefaultValue = 3)]
public double SlPercent { get; set; }
protected override void OnStart()
{
Settpsl();
Positions.Modified += PositionsOnModified;
Positions.Opened += PositionsOnOpened;
Positions.Closed += PositionsOnClosed;
PendingOrders.Filled += PendingOrdersOnFilled;
}
protected override void OnTick()
{
}
private void PositionsOnModified(PositionModifiedEventArgs obj)
{
Settpsl();
}
private void PositionsOnOpened(PositionOpenedEventArgs args)
{
Settpsl();
}
private void PositionsOnClosed(PositionClosedEventArgs args)
{
Settpsl();
}
private void PendingOrdersOnFilled(PendingOrderFilledEventArgs args)
{
Settpsl();
}
private void Settpsl()
{
foreach (var position in Positions)
{
var smValue = Symbols.GetSymbol(position.SymbolName).PipValue;
var smSize=Symbols.GetSymbol(position.SymbolName).PipSize;
double tpcalc = Math.Round((((Account.Balance * (1 + TpPercent / 100)) - Account.Balance)-(2*position.Commissions)+position.Swap) / (smValue * position.VolumeInUnits), 1);
double slcalc = Math.Round((Account.Balance - (Account.Balance * (1 - SlPercent / 100))+(2*position.Commissions)+position.Swap) / (smValue * position.VolumeInUnits), 1);
if (position.TradeType == TradeType.Buy)
{
var tp = position.EntryPrice + tpcalc * smSize;
var sl = position.EntryPrice - slcalc * smSize;
if (TpOption && position.TakeProfit != tp)
{
ModifyPosition(position, position.StopLoss, tp);
}
if (SlOption && position.StopLoss != sl)
{
ModifyPosition(position, sl, position.TakeProfit);
}
}
if (position.TradeType == TradeType.Sell)
{
var tp = position.EntryPrice - tpcalc * smSize;
var sl = position.EntryPrice + slcalc * smSize;
if (TpOption && position.TakeProfit != tp)
{
ModifyPosition(position, position.StopLoss, tp);
}
if (SlOption && position.StopLoss != sl)
{
ModifyPosition(position, sl, position.TakeProfit);
}
}
}
}
}
}
IRCtrader
Joined on 17.06.2021
- Distribution: Free
- Language: C#
- Trading platform: cTrader Automate
- File name: Aw set TP-SL percent.algo
- Rating: 0
- Installs: 798
- Modified: 05/05/2023 11:11
Comments
There are very a lot of details this way to consider. Which is a wonderful denote bring up. I provide you with the thoughts above as general inspiration but clearly there are actually questions like the one you talk about the location where the most essential thing might be doing work in honest great faith. I don?t know if best practices have emerged around things like that, but More than likely that your chosen job is clearly referred to as a reasonable game. Both little ones notice the impact of just a moment’s pleasure, for the rest of their lives.how to be a credit card processor
the best addition on our garden that we have are those garden swings, the garden swings made our kids very very happy“Packers and Movers Pune
Oh my goodness! an awesome write-up dude. Thank you However I am experiencing issue with ur rss . Don’t know why Unable to subscribe to it. Is there everyone finding identical rss dilemma? Everyone who knows kindly respond. ThnkxSlot88