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);
}
}
}
}
}
}
IR
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: 836
- Modified: 05/05/2023 11:11
Warning! Running cBots downloaded from this section may lead to financial losses. Use them at your own risk.
Note that publishing copyrighted material is strictly prohibited. If you believe there is copyrighted material in this section, please use the Copyright Infringement Notification form to submit a claim.
Comments
Log in to add a comment.
AR
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