Now my problem is I bought 1 lot of US100 then I close partial volume using this code
double volume = 0.5;ModifyVolume(volume)
it says Bad Volume.
But when I close .5 lot using a normal close, I mean not using a bot, it accepted it.
Post your code. For all I know, your code could have done something else, or reduced the size already before, or you could be using the wrong position or something else.
Now my problem is I bought 1 lot of US100 then I close partial volume using this code
double volume = 0.5;ModifyVolume(volume)
it says Bad Volume.
But when I close .5 lot using a normal close, I mean not using a bot, it accepted it.
Post your code. For all I know, your code could have done something else, or reduced the size already before, or you could be using the wrong position or something else.
The code is below. To replicate, you have to buy 1 lot of US100 (Nasdaq).
using System;
using System.Linq;
using cAlgo.API;
namespace cAlgo.Robots
{
[Robot(AccessRights = AccessRights.None, AddIndicators = true)]
public class TestModifyOrder : Robot
{
protected override void OnStart()
{
var position = Positions.FirstOrDefault();
if (position != null)
{
try
{
double volume = 0.5;
TradeResult tradeResult = position.ModifyVolume(volume);
if (tradeResult.IsSuccessful)
{
Print("Success!");
}
else
{
Print($"Error: {tradeResult.Error}");
}
}
catch (Exception ex)
{
Print(ex.Message);
}
}
}
protected override void OnTick()
{
// Handle price updates here
}
protected override void OnStop()
{
// Handle cBot stop here
}
}
}
Now my problem is I bought 1 lot of US100 then I close partial volume using this code
double volume = 0.5;ModifyVolume(volume)
it says Bad Volume.
But when I close .5 lot using a normal close, I mean not using a bot, it accepted it.
Post your code. For all I know, your code could have done something else, or reduced the size already before, or you could be using the wrong position or something else.
The code is below. To replicate, you have to buy 1 lot of US100 (Nasdaq).
using System;using System.Linq;using cAlgo.API;namespace cAlgo.Robots{ [Robot(AccessRights = AccessRights.None, AddIndicators = true)] public class TestModifyOrder : Robot { protected override void OnStart() { var position = Positions.FirstOrDefault(); if (position != null) { try { double volume = 0.5; TradeResult tradeResult = position.ModifyVolume(volume); if (tradeResult.IsSuccessful) { Print("Success!"); } else { Print($"Error: {tradeResult.Error}"); } } catch (Exception ex) { Print(ex.Message); } } } protected override void OnTick() { // Handle price updates here } protected override void OnStop() { // Handle cBot stop here } }}
Works perfectly for me.
I bought 1 lots of NAS, then started the bot:
Your statement “var position = Positions.FirstOrDefault();” might not work as you want if you have other positions open at the time because “.first()” may or may not return NAS as the first position in the open positions you have.
Now my problem is I bought 1 lot of US100 then I close partial volume using this code
double volume = 0.5;ModifyVolume(volume)
it says Bad Volume.
But when I close .5 lot using a normal close, I mean not using a bot, it accepted it.
Post your code. For all I know, your code could have done something else, or reduced the size already before, or you could be using the wrong position or something else.
The code is below. To replicate, you have to buy 1 lot of US100 (Nasdaq).
using System;using System.Linq;using cAlgo.API;namespace cAlgo.Robots{ [Robot(AccessRights = AccessRights.None, AddIndicators = true)] public class TestModifyOrder : Robot { protected override void OnStart() { var position = Positions.FirstOrDefault(); if (position != null) { try { double volume = 0.5; TradeResult tradeResult = position.ModifyVolume(volume); if (tradeResult.IsSuccessful) { Print("Success!"); } else { Print($"Error: {tradeResult.Error}"); } } catch (Exception ex) { Print(ex.Message); } } } protected override void OnTick() { // Handle price updates here } protected override void OnStop() { // Handle cBot stop here } }}
Works perfectly for me.
I bought 1 lots of NAS, then started the bot:
Your statement “var position = Positions.FirstOrDefault();” might not work as you want if you have other positions open at the time because “.first()” may or may not return NAS as the first position in the open positions you have.
I think its a broker related problem then. Im using ICMarkets
firemyst
12 Apr 2025, 02:48
Not always. Depends on what you're trading.
For forex pairs, 1 lot = 100,000 units.
@firemyst