Ajuda ao um novato em programação
Ajuda ao um novato em programação
23 May 2023, 05:00
Sou novato em programação. E gostaria de ajuda para entender porque o bot não executa as ordens. Quando coloco em onTick ele abre um monte de ordens. Mas no onBar ele não abre posições. Obrigado pela ajuda
[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 = 200)]
public int PeriodoAZUL { get; set; }
private SimpleMovingAverage AZUL;
private double lastBuyClose;
private 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;
Print("BullsxBears");
}
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(0) < AZUL.Result.Last(0)
&& Bars.ClosePrices.Last(0) < Bars.OpenPrices.Last(0))
{
Print("C");
ExecuteMarketOrder(TradeType.Buy, Symbol, Lote);
}
// Condição de venda 01
if (Bars.ClosePrices.Last(0) > AZUL.Result.Last(0)
&& Bars.ClosePrices.Last(0) > Bars.OpenPrices.Last(0))
{
Print("V");
ExecuteMarketOrder(TradeType.Sell, Symbol, Lote);
// ExecuteMarketOrder(TradeType.Buy, Symbol, Volume, cBotLabel, StopLoss, TakeProfit);
}
// Fechamento COMPRA
if (positionCompra != null
&& Bars.ClosePrices.Last(0) > AZUL.Result.Last(0))
//ClosePositionsAsync
{
ClosePosition(positionCompra);
//(positionCompra.GrossProfit > 0)
}
// Fechamento Venda
if (positionVenda != null
&& Bars.ClosePrices.Last(0) < AZUL.Result.Last(0))
{
ClosePosition(positionVenda);
}
}
}
}
Replies
BullsxBears
23 May 2023, 15:18
( Updated at: 25 May 2023, 00:20 )
RE:
PanagiotisChar said:
Hi there,
Bars.ClosePrices.Last(0) and Bars.OpenPrices.Last(0) are always equal when the new bar is opened, since they represent the values of the current value. Try using Bars.ClosePrices.Last(1) and Bars.OpenPrices.Last(1) instead
Need help? Join us on Telegram
Need premium support? Trade with us
Muito obrigado pela ajuda! Principalmente pela rapidez da resposta.
Ainda estou aprendendo a programar. E quero aprender cada vez mais.
Gostaria, se possível que me ajudasse em outras duas questões:
1º Gostaria de somente realizar nova venda acima da última venda realizada. Somente quando uma nova barra de alta se formar e fechar acima da última compra. Estou operando contra a tendência, buscando o retorno a média.
2º As ordens não estão sendo fechadas ao cruzar a média (SMA). Como posso fazer para fechar todas as ordens quando fechar abaixo da média ou fechar somente as que estão no lucro?
Novamente, muito obrigado!
@BullsxBears
PanagiotisChar
23 May 2023, 08:57
Hi there,
Bars.ClosePrices.Last(0) and Bars.OpenPrices.Last(0) are always equal when the new bar is opened, since they represent the values of the current value. Try using Bars.ClosePrices.Last(1) and Bars.OpenPrices.Last(1) instead
Aieden Technologies
Need help? Join us on Telegram
Need premium support? Trade with us
@PanagiotisChar