Não fecha as ordens
Não fecha as ordens
25 May 2023, 04:25
Sou novo na área de programação, principalmente em bots. Escrevi esse código para aprender e testar uma estratégia bem simples. Mas as ordens não fecham de forma alguma. Nem todas as ordens, nem somente as que estão no lucro. Não sei o que pode estar acontecendo. Me ajudem, por favor!
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 Teste04 : Robot
{
[Parameter("Val Lote", DefaultValue = 0.01)]
public double Lote { get; set; }
[Parameter("Take Proft", DefaultValue = 0)]
public double TakeProfit { get; set; }
[Parameter("Stop Loss", DefaultValue = 0)]
public double StopLoss { get; set; }
[Parameter("Source")]
public DataSeries Source { get; set; }
[Parameter("AZUL:", DefaultValue =20)]
public int PeriodoAZUL { get; set; }
public SimpleMovingAverage AZUL;
public double lastBuyClose;
public double lastSellClose;
protected override void OnStart()
{
Lote = Lote * Symbol.LotSize;
AZUL = Indicators.SimpleMovingAverage(Source, PeriodoAZUL);
lastBuyClose = double.MinValue; // Inicializa com um valor muito baixo
lastSellClose=double.MinValue;
}
protected override void OnTick()
{
}
protected override void OnBar()
{
var positionCompra = Positions.Find("COMPRA", Symbol, TradeType.Buy);
var positionVenda = Positions.Find("VENDA", Symbol, TradeType.Sell);
// Condição de compra 01
if (Bars.ClosePrices.Last(1) < AZUL.Result.Last(1)
&& Bars.ClosePrices.Last(1) < Bars.OpenPrices.Last(1))
{
if (positionCompra == null || Bars.ClosePrices.Last(1) < lastBuyClose)
{
Print("C");
ExecuteMarketOrder(TradeType.Buy, Symbol, Lote);
Chart.DrawIcon(Bars.OpenTimes.LastValue.ToString(), ChartIconType.UpArrow, Bars.OpenTimes.Last(1), Bars.LowPrices.Last(1), Color.Blue);
}
}
// Condição de venda 01
if (Bars.ClosePrices.Last(1) > AZUL.Result.Last(1)
&& Bars.ClosePrices.Last(1) > Bars.OpenPrices.Last(1))
{
if (positionVenda == null || Bars.ClosePrices.Last(1) > lastSellClose)
{
Print("V");
ExecuteMarketOrder(TradeType.Sell, Symbol, Lote);
Chart.DrawIcon(Bars.OpenTimes.LastValue.ToString(), ChartIconType.DownArrow, Bars.OpenTimes.Last(1), Bars.HighPrices.Last(1), Color.Red);
}
}
// Fechamento das posições de compra
if (positionCompra != null && positionCompra.GrossProfit > 0 && (Bars.ClosePrices.Last(1) > AZUL.Result.Last(1)))
{
ClosePositionAsync(positionCompra);
Print("fechando a compra" );
}
// Fechamento das posições de venda
if (positionVenda != null && positionVenda.GrossProfit > 0 && (Bars.ClosePrices.Last(1) < AZUL.Result.Last(1)))
{
ClosePositionAsync(positionVenda);
Print("fechando a venda");
}
}
}
}
PanagiotisChar
25 May 2023, 08:12
Hi there,
Your problem is here
You are searching for a position using a label but you never define a label on execution
Aieden Technologies
Need help? Join us on Telegram
Need premium support? Trade with us
@PanagiotisChar