It's not setting your SL or TP in the new method because you said Protection Type is “None”. So if there's no protection type, why would you expect a SL or TP protection to be set? :-)
I feel so stupid right now lol
My bad.
Btw, what is Relative or distance based protection type? is it by pips?
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
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
}
}
}
agent.xzxz
27 May 2025, 13:09 ( Updated at: 27 May 2025, 13:10 )
RE: Problem with PlaceLimitOrder and PlaceStopOrder
firemyst said:
I feel so stupid right now lol
My bad.
Btw, what is Relative or distance based protection type? is it by pips?
@agent.xzxz