Description
Comment and ENjoy optimizing this bot its higly optimizable. its a simple but effective price action bot i build a couple of months ago. I share to u free. comment please. check me on TELEGRAM:
// copyright: Lawrence
// RUSSIAN STRATEGY, JUST 2MA AND RSI
// GOOD PERFOORMANCE
using System;
using System.Collections.Generic;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Indicators;
namespace cAlgo
{
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)]
public class MyBot : Robot
{
[Parameter("Take Profit", Group = "Risk Management", DefaultValue = 0)]
public int takeProfit { get; set; }
[Parameter("Quantity (Lots)", Group = "Volume", DefaultValue = 1000, MinValue = 1000, Step = 1000)]
public double Quantity { get; set; }
[Parameter("Stop Loss", Group = "Risk Management", DefaultValue = 5)]
public int stopLoss { get; set; }
[Parameter("Percent K", Group = "Stochastic", DefaultValue = 5, MinValue = 0, Step = 1, MaxValue = 1000)]
public int percentK { get; set; }
[Parameter("Percent K Slowing", Group = "Stochastic", DefaultValue = 3, MinValue = 0, Step = 1, MaxValue = 1000)]
public int percentKSlow { get; set; }
[Parameter("Percent D", Group = "Stochastic", DefaultValue = 3, MinValue = 0, Step = 1, MaxValue = 1000)]
public int percentD { get; set; }
[Parameter("stoch MA Type", Group = "Stochastic")]
public MovingAverageType stochMAType { get; set; }
[Parameter("Stoch-sell threshold", Group = "Stochastic", DefaultValue = 75)]
public int sellingstoch { get; set; }
[Parameter("Stoch-buy threshold", Group = "Stochastic", DefaultValue = 35)]
public int buyingstoch { get; set; }
//MA
[Parameter("MA Type", Group = "Moving Average")]
public MovingAverageType MAType { get; set; }
//MA SOURCE
[Parameter("Source", Group = "Moving Average")]
public DataSeries SourceSeries { get; set; }
[Parameter("Slow Periods", Group = "Moving Average", DefaultValue = 100)]
public int SlowPeriods { get; set; }
[Parameter("Fast Periods", Group = "Moving Average", DefaultValue = 5)]
public int FastPeriods { get; set; }
//MA
[Parameter("Stoch-k index", Group = "Stochastic", DefaultValue = 1, MinValue = 0, Step = 1)]
public int indexK { get; set; }
[Parameter("Number of bars to consider", DefaultValue = 2, MinValue = 0, Step = 1)]
public int BarsToConsider { get; set; }
private MovingAverage slowMa;
private MovingAverage fastMa;
private const string label = "Kilimanjaro peaks cBot";
private StochasticOscillator stochasticOscillator;
protected override void OnStart()
{
fastMa = Indicators.MovingAverage(SourceSeries, FastPeriods, MAType);
slowMa = Indicators.MovingAverage(SourceSeries, 50, MAType);
stochasticOscillator = Indicators.StochasticOscillator(percentK, percentKSlow, percentD, stochMAType);
}
protected override void OnTick()
{
}
protected override void OnBar()
{
var longPosition = Positions.Find(label, SymbolName, TradeType.Buy);
var shortPosition = Positions.Find(label, SymbolName, TradeType.Sell);
var currentSlowMa = slowMa.Result.Last(0);
var currentFastMa = fastMa.Result.Last(0);
var previousSlowMa = slowMa.Result.Last(1);
var previousFastMa = fastMa.Result.Last(1);
if (Positions.Count < 1)
{
///my algo
if (currentFastMa > currentSlowMa && longPosition == null)
{
if (Bars.ClosePrices.Last(2) < Bars.HighPrices.Last(BarsToConsider + 1) && Bars.LowPrices.Last(2) < Bars.LowPrices.Last(BarsToConsider + 1))
{
// Higher highs and higher lows, check for sell signal
if (Bars.ClosePrices.Last(1) > Bars.OpenPrices.Last(1) && stochasticOscillator.PercentK.Last(1) < buyingstoch && stochasticOscillator.PercentK.Last(indexK) <= buyingstoch)
//&& rsi.Result.LastValue < buyRSI
{
if (shortPosition != null)
ClosePosition(shortPosition);
ExecuteMarketOrder(TradeType.Buy, SymbolName, Quantity, "Scalp", stopLoss, takeProfit);
}
}
if (currentFastMa < currentSlowMa && shortPosition == null)
{
if (Bars.ClosePrices.Last(2) > Bars.HighPrices.Last(BarsToConsider + 1) && Bars.LowPrices.Last(2) > Bars.LowPrices.Last(BarsToConsider + 1))
{
// lower lows and lower high, check for sell signal
if (Bars.ClosePrices.Last(1) < Bars.OpenPrices.Last(1) && stochasticOscillator.PercentK.Last(1) > sellingstoch && stochasticOscillator.PercentK.Last(indexK) >= sellingstoch)
//&& rsi.Result.LastValue > sellRSI && stochasticOscillator.PercentK.Last(2) > sellingstoch
{
if (longPosition != null)
ClosePosition(longPosition);
ExecuteMarketOrder(TradeType.Sell, SymbolName, Quantity, "Scalp", stopLoss, takeProfit);
}
}
}
}
}
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
DA
davidmwabuka
Joined on 07.03.2023
- Distribution: Free
- Language: C#
- Trading platform: cTrader Automate
- File name: pata pata BOT.algo
- Rating: 5
- Installs: 818
- Modified: 04/07/2023 15:13
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.
Looks interesting. Can you post some tweaked parameters?