Modify Positions is modiying takeprofit when it shouldn't
Modify Positions is modiying takeprofit when it shouldn't
27 Jan 2024, 12:24
The strategy I'm using uses a parabolic SAR stop loss but since its not always consistent I have the initial stoploss be at a certain price and for the takeprofit I use pips so I take the currentprice +/- TakeProfit(in pips) to get the takeprofit price for it .
double AClose3 = Bars.ClosePrices.Last(3);
double StopLoss1 = Aclose3;
double takeprofits = Symbol.Ask + TakeProfit;
OpenTrade(TradeType.Buy,StopLoss1,takeprofits);
double AClose3 = Bars.ClosePrices.Last(3);
double StopLoss1 = AClose3;
double takeprofits = Symbol.Ask - TakeProfit;
OpenTrade(TradeType.Sell,StopLoss1,takeprofits);
Here is the opentrade. :
private void OpenTrade(TradeType type, double StopLoss, double TakeProfit1)
{
// calculate volume from lots
var volume = Symbol.QuantityToVolumeInUnits(Quantity);
volume = Symbol.NormalizeVolumeInUnits(volume, RoundingMode.Down);
ExecuteMarketOrder(type, SymbolName, volume, StrategyName, StopLoss, TakeProfit1);
}
But for some weird reason the parabolic SAR code just modifies the take profit when it clearly shouldn't .
private void SetSARTrailingStop()
{
var buyPositions = Positions.FindAll(StrategyName, SymbolName, TradeType.Buy);
var sellPositions = Positions.FindAll(StrategyName, SymbolName, TradeType.Sell);
foreach ( Position position in buyPositions)
{
double newStopLoss = parabolicSAR.Result.LastValue;
bool isProtected = position.StopLoss.HasValue;
if ( isProtected)
{
if (newStopLoss > Bid)
return;
if (newStopLoss - position.StopLoss < Symbol.TickSize)
return;
}
var takeprofits1 = position.TakeProfit;
ModifyPosition(position, newStopLoss, takeprofits1);
}
foreach (Position position in sellPositions)
{
double newStopLoss = parabolicSAR.Result.LastValue;
bool isProtected = position.StopLoss.HasValue;
if ( isProtected)
{
if (newStopLoss < Bid)
return;
if (position.StopLoss - newStopLoss < Symbol.TickSize)
return;
}
var takeprofits1 = position.TakeProfit;
ModifyPosition(position, newStopLoss, takeprofits1);
}
}
As you can see the TP is different even though no code in there modifies the takeprofit .
I also noticed that the tp price is over 2k pips away when I set the pips to 10, why does that happen ? Anyone know why ?
This also happens for the stoploss , i don't know why because I set the initial stoploss at a definite price
Replies
AlgoCreators
28 Jan 2024, 09:14
Hi, you need to use this command to change the stop loss
Position.ModifyStopLossPips(newStopLoss);
@AlgoCreators
mihlali700
29 Jan 2024, 12:58
RE: Modify Positions is modiying takeprofit when it shouldn't
ctrader.guru said:
Try changing in the foreach statement the return; with the continue;
The Trailing stop is working, what im trying to figure out is why I get a stop loss thats more than 1k pips away .
@mihlali700
mihlali700
29 Jan 2024, 12:58
RE: Modify Positions is modiying takeprofit when it shouldn't
ctrader.guru said:
Try changing in the foreach statement the return; with the continue;
The Trailing stop is working, what im trying to figure out is why I get a stop loss thats more than 1k pips away .
@mihlali700
mihlali700
29 Jan 2024, 12:58
RE: Modify Positions is modiying takeprofit when it shouldn't
ctrader.guru said:
Try changing in the foreach statement the return; with the continue;
The Trailing stop is working, what im trying to figure out is why I get a stop loss thats more than 1k pips away .
@mihlali700
ctrader.guru
29 Jan 2024, 16:23
RE: RE: Modify Positions is modiying takeprofit when it shouldn't
mihlali700 said:
ctrader.guru said:
Try changing in the foreach statement the return; with the continue;
The Trailing stop is working, what im trying to figure out is why I get a stop loss thats more than 1k pips away .
It would be better if you shared the whole source code, we will be able to help you better.
@ctrader.guru
ctrader.guru
28 Jan 2024, 06:35
Try changing in the foreach statement the return; with the continue;
@ctrader.guru