Description
NOW YOU CAN GET THIS BOT FOR FREE
Download on this Website
The Bot is preset with the right optimization.
1 Trendrobot 8 Years Backtesting compatible with Prop Firms
Profitable algo which trades the EURUSD
6.6% return per Month in the last 8 Years
Backtesting from 11.05.2016-11.05.2024 with Tick Data and 0.1 Lot
In the last 8 years, it has generated an average of 40.10 Euros per Month with 600,- startcapital employed (6.6% return per Month), without the drawdown having been hit. (With 0.1 Lot)
With EURUSD trading, it is the largest and most liquid exchange: The Foreign Exchange. Thus, you can move larger sums of money in the market without any problems.
The Commissions now are only 30 per Million, not like in the backtest 35.
Time Horizon: Renko 5 Pips
The trades are held from one day to several weeks
Profitfactor: 1.94
Max Drawdown: 93% (by 600,- Euro)
average annual return: 79%
average Monthly return: 6.6%
Total Trades: 316
Winning Trades: 262
average Trades per Month: 3-4
No Martingale
Free to use for all Lotsizes and Assets
Just 1 Trade open always
100% automatic, runs 24h
recognizes open positions, so you can stopp in between
Ready to go immediately
100% made in Germany
I recommend starting with 0.1 Lot per 600,- Euro (last 8-Year max Drawdown 560,70/ by return of 40.10 per Month) of Capital on IC Markets. And you have to add the margin for 0.1 Lot, which depends on the leverage of your Broker.
If you want to use 0.2 lots, then use 1200,- Euro starting capital etc.
I strongly recommend using this bot with these parameter settings only for IC markets because I have optimized it only for this broker. With other brokers, the results can vary greatly in the Backtest. So test it for all other brokers beforehand.
email: german.algotrading@gmail.com
Please contact me for any questions.
Best regards,
Luke
using System;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
using cAlgo.Indicators;
namespace cAlgo.Robots
{
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class TrendAlgo : Robot
{
[Parameter(DefaultValue = "Trend Algo 3 Timeframe Re5")]
public string cBotLabel { get; set; }
[Parameter("Currency pair", DefaultValue = "EURUSD")]
public string TradeSymbol { get; set; }
[Parameter("Lot Size", DefaultValue = 0.1, MinValue = 0.01, Step = 0.01)]
public double LotSize { get; set; }
[Parameter("MA Type", DefaultValue = MovingAverageType.Hull)]
public MovingAverageType MAType { get; set; }
[Parameter("MA Period", DefaultValue = 132)]
public int MAPeriod { get; set; }
[Parameter("Signal candle,in bars", DefaultValue = 0, MinValue = 0)]
public int SignalCandle { get; set; }
[Parameter("Fixed TP", DefaultValue = true)]
public bool UseTP { get; set; }
[Parameter("TP Level", DefaultValue = 55.3)]
public double TakeProfit { get; set; }
[Parameter("TrailingStop", DefaultValue = true)]
public bool UseTS { get; set; }
[Parameter("Trailing Trigger", DefaultValue = 7.7)]
public double TrailingTrigger { get; set; }
[Parameter("Trailing Pips", DefaultValue = 26.1)]
public double TrailingPips { get; set; }
[Parameter("Reverse Trading", DefaultValue = true)]
public bool ReverseTrading { get; set; }
[Parameter("Nur Long Trades eröffnen", DefaultValue = false)]
public bool OnlyLongTrades { get; set; }
[Parameter("Nur Short Trades eröffnen", DefaultValue = false)]
public bool OnlyShortTrades { get; set; }
private MovingAverage MA;
protected override void OnStart()
{
// Erkennung offener Positionen beim Start
RecognizeOpenPositions();
// Überprüfung des Symbols
Symbol CurrentSymbol = Symbols.GetSymbol(TradeSymbol);
if (CurrentSymbol == null)
{
Print("Currency pair is not supported, please check!");
OnStop();
}
// Initialisiere den Moving Average
MA = Indicators.MovingAverage(MarketSeries.Close, MAPeriod, MAType);
}
private void RecognizeOpenPositions()
{
// LINQ-Abfrage, um offene Positionen zu erkennen
var openPositions = Positions.Where(position => position.SymbolCode == TradeSymbol);
if (openPositions.Any())
{
foreach (var position in openPositions)
{
Print($"Erkannte offene Position: {position.Label}, Volumen: {position.Volume}, Typ: {position.TradeType}");
// Hier kannst du weitere Logik hinzufügen, um auf die offenen Positionen zu reagieren
}
}
else
{
Print("Keine offenen Positionen gefunden.");
}
}
protected override void OnBar()
{
if (!ReverseTrading)
{
if (!OnlyShortTrades && MA.Result.Last(SignalCandle) < MarketSeries.Close.Last(SignalCandle) && MA.Result.Last(SignalCandle) > MarketSeries.Low.Last(SignalCandle) && Positions.FindAll(cBotLabel, TradeSymbol, TradeType.Buy).Length == 0)
{
ClosePosition(TradeType.Sell);
OpenMarketOrder(TradeType.Buy, TradeSymbol, LotSize);
}
else if (!OnlyLongTrades && MA.Result.Last(SignalCandle) > MarketSeries.Close.Last(SignalCandle) && MA.Result.Last(SignalCandle) < MarketSeries.High.Last(SignalCandle) && Positions.FindAll(cBotLabel, TradeSymbol, TradeType.Sell).Length == 0)
{
ClosePosition(TradeType.Buy);
OpenMarketOrder(TradeType.Sell, TradeSymbol, LotSize);
}
}
else
{
if (!OnlyLongTrades && MA.Result.Last(SignalCandle) > MarketSeries.Close.Last(SignalCandle) && MA.Result.Last(SignalCandle) < MarketSeries.High.Last(SignalCandle) && Positions.FindAll(cBotLabel, TradeSymbol, TradeType.Buy).Length == 0)
{
ClosePosition(TradeType.Sell);
OpenMarketOrder(TradeType.Buy, TradeSymbol, LotSize);
}
else if (!OnlyShortTrades && MA.Result.Last(SignalCandle) < MarketSeries.Close.Last(SignalCandle) && MA.Result.Last(SignalCandle) > MarketSeries.Low.Last(SignalCandle) && Positions.FindAll(cBotLabel, TradeSymbol, TradeType.Sell).Length == 0)
{
ClosePosition(TradeType.Buy);
OpenMarketOrder(TradeType.Sell, TradeSymbol, LotSize);
}
}
}
protected override void OnTick()
{
if (UseTS == true && Positions.FindAll(cBotLabel, TradeSymbol).Length > 0)
DoTrailingStop();
}
private void ClosePosition(TradeType tradeType)
{
foreach (var position in Positions.FindAll(cBotLabel, TradeSymbol, tradeType))
{
var result = ClosePosition(position);
if (!result.IsSuccessful)
{
Print("Closing market order error: {0}", result.Error);
OnStop();
}
}
}
private void OpenMarketOrder(TradeType tradeType, string strSymbol, double dLots)
{
var volumeInUnits = Symbol.QuantityToVolumeInUnits(dLots);
volumeInUnits = Symbol.NormalizeVolumeInUnits(volumeInUnits, RoundingMode.Down);
double TP_in_pips = 0.0;
if (UseTP == true)
TP_in_pips = TakeProfit;
var result = ExecuteMarketOrder(tradeType, strSymbol, volumeInUnits, cBotLabel, 0, TP_in_pips);
if (!result.IsSuccessful)
{
Print("Execute Market Order Error: {0}", result.Error.Value);
OnStop();
}
}
private void DoTrailingStop()
{
var cBotPositions = Positions.FindAll(cBotLabel, TradeSymbol);
foreach (var position in cBotPositions)
{
if (position.TradeType == TradeType.Buy && position.Pips >= TrailingTrigger && !position.HasTrailingStop)
{
var newSL = position.TradeType == TradeType.Buy ? (position.EntryPrice + (TrailingPips * Symbol.PipSize)) : (position.EntryPrice - (TrailingPips * Symbol.PipSize));
ModifyPosition(position, newSL, position.TakeProfit, true);
}
}
}
protected override void OnStop()
{
// Code zum Beenden des Bots
}
}
}
german.algotrading
Joined on 22.04.2024
- Distribution: Free
- Language: C#
- Trading platform: cTrader Automate
- File name: Trend Algo 3 Renko Chart 5 Pips.algo
- Rating: 0
- Installs: 88
- Modified: 23/10/2024 08:52