usingcAlgo.API;usingSystem;usingSystem.Globalization;usingSystem.Linq;namespacecAlgo.Robots{// This sample shows how to modify a pending order// It uses order comment to find the order, you can use order label instead if you want to// Set stop loss and take profit to 0 if you don't want to change it// Leave expiry parameter empty if you don't want to change it or 0 if you want to remove it// If you don't want to change the target price set it to 0// If you don't want to change the volume set it to 0[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]publicclassPendingOrderModificationSample:Robot{[Parameter("Order Comment")]publicstringOrderComment{get;set;}[Parameter("Order Label")]publicstringOrderLabel{get;set;}[Parameter("Target Price", DefaultValue = 0.0)]publicdoubleTargetPrice{get;set;}[Parameter("Stop Loss (Pips)", DefaultValue = 10)]publicdoubleStopLossInPips{get;set;}[Parameter("Stop Loss Trigger Method", DefaultValue = StopTriggerMethod.Trade)]publicStopTriggerMethodStopLossTriggerMethod{get;set;}[Parameter("Take Profit (Pips)", DefaultValue = 10)]publicdoubleTakeProfitInPips{get;set;}[Parameter("Expiry (HH:mm:ss)")]publicstringExpiry{get;set;}[Parameter("Volume (Lots)", DefaultValue = 0.01)]publicdoubleVolumeInLots{get;set;}[Parameter("Has Trailing Stop", DefaultValue = false)]publicboolHasTrailingStop{get;set;}[Parameter("Order Trigger Method", DefaultValue = StopTriggerMethod.Trade)]publicStopTriggerMethodOrderTriggerMethod{get;set;}[Parameter("Limit Range (Pips)", DefaultValue = 10)]publicdoubleLimitRangeInPips{get;set;}protectedoverridevoidOnStart(){PendingOrderorder=null;if(!string.IsNullOrWhiteSpace(OrderComment)&&!string.IsNullOrWhiteSpace(OrderComment)){order=PendingOrders.FirstOrDefault(iOrder=>string.Equals(iOrder.Comment,OrderComment,StringComparison.OrdinalIgnoreCase)&&string.Equals(iOrder.Label,OrderLabel,StringComparison.OrdinalIgnoreCase));}elseif(!string.IsNullOrWhiteSpace(OrderComment)){order=PendingOrders.FirstOrDefault(iOrder=>string.Equals(iOrder.Comment,OrderComment,StringComparison.OrdinalIgnoreCase));}elseif(!string.IsNullOrWhiteSpace(OrderLabel)){order=PendingOrders.FirstOrDefault(iOrder=>string.Equals(iOrder.Label,OrderLabel,StringComparison.OrdinalIgnoreCase));}if(order==null){Print("Couldn't find the order, please check the comment and label");Stop();}vartargetPrice=TargetPrice==0?order.TargetPrice:TargetPrice;varorderSymbol=Symbols.GetSymbol(order.SymbolName);varstopLossInPips=StopLossInPips==0?order.StopLossPips:(double?)StopLossInPips;vartakeProfitInPips=TakeProfitInPips==0?order.TakeProfitPips:(double?)TakeProfitInPips;DateTime?expiryTime;if(string.IsNullOrWhiteSpace(Expiry)){expiryTime=order.ExpirationTime;}elseif(Expiry.Equals("0",StringComparison.OrdinalIgnoreCase)){expiryTime=null;}else{varexpiryTimeSpan=default(TimeSpan);if(!TimeSpan.TryParse(Expiry,CultureInfo.InvariantCulture,outexpiryTimeSpan)){Print("Your provided value for expiry is not valid, please use HH:mm:ss format");Stop();}expiryTime=expiryTimeSpan==default(TimeSpan)?null:(DateTime?)Server.Time.Add(expiryTimeSpan);}varvolumeInUnits=VolumeInLots==0?order.VolumeInUnits:orderSymbol.QuantityToVolumeInUnits(VolumeInLots);if(order.OrderType==PendingOrderType.Limit){ModifyPendingOrder(order,targetPrice,stopLossInPips,takeProfitInPips,expiryTime,volumeInUnits,HasTrailingStop,StopLossTriggerMethod);}elseif(order.OrderType==PendingOrderType.Stop){ModifyPendingOrder(order,targetPrice,stopLossInPips,takeProfitInPips,expiryTime,volumeInUnits,HasTrailingStop,StopLossTriggerMethod,OrderTriggerMethod);}elseif(order.OrderType==PendingOrderType.StopLimit){ModifyPendingOrder(order,targetPrice,stopLossInPips,takeProfitInPips,expiryTime,volumeInUnits,HasTrailingStop,StopLossTriggerMethod,OrderTriggerMethod,LimitRangeInPips);}}}}
usingcAlgo.API;usingSystem;usingSystem.Linq;namespacecAlgo.Robots{// This sample shows how to cancel a pending order[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]publicclassPendingOrderCancelationSample:Robot{[Parameter("Order Comment")]publicstringOrderComment{get;set;}[Parameter("Order Label")]publicstringOrderLabel{get;set;}protectedoverridevoidOnStart(){PendingOrderorder=null;if(!string.IsNullOrWhiteSpace(OrderComment)&&!string.IsNullOrWhiteSpace(OrderLabel)){order=PendingOrders.FirstOrDefault(iOrder=>string.Equals(iOrder.Comment,OrderComment,StringComparison.OrdinalIgnoreCase)&&string.Equals(iOrder.Label,OrderLabel,StringComparison.OrdinalIgnoreCase));}elseif(!string.IsNullOrWhiteSpace(OrderComment)){order=PendingOrders.FirstOrDefault(iOrder=>string.Equals(iOrder.Comment,OrderComment,StringComparison.OrdinalIgnoreCase));}elseif(!string.IsNullOrWhiteSpace(OrderLabel)){order=PendingOrders.FirstOrDefault(iOrder=>string.Equals(iOrder.Label,OrderLabel,StringComparison.OrdinalIgnoreCase));}if(order==null){Print("Couldn't find the order, please check the comment and label");Stop();}CancelPendingOrder(order);}}}
usingcAlgo.API;namespacecAlgo.Robots{// This sample shows how to use PendingOrders events[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]publicclassPendingOrderEvents:Robot{protectedoverridevoidOnStart(){PendingOrders.Cancelled+=PendingOrders_Cancelled;PendingOrders.Modified+=PendingOrders_Modified;PendingOrders.Filled+=PendingOrders_Filled;}privatevoidPendingOrders_Filled(PendingOrderFilledEventArgsobj){varpendingOrderThatFilled=obj.PendingOrder;varfilledPosition=obj.Position;}privatevoidPendingOrders_Modified(PendingOrderModifiedEventArgsobj){varmodifiedOrder=obj.PendingOrder;}privatevoidPendingOrders_Cancelled(PendingOrderCancelledEventArgsobj){varcancelledOrder=obj.PendingOrder;varcancellationReason=obj.Reason;}}}
varresult=PlaceLimitOrder(TradeType.Buy,Symbol,10000,targetPrice);varorder=result.PendingOrder;Print("The order's volume is: {0}",order.VolumeInUnits);
varresult=PlaceLimitOrder(TradeType.Buy,Symbol,10000,Symbol.Bid,null,10,10,null,"this is a comment");varorder=result.PendingOrder;Print("comment = {0}",order.Comment);
When HasTrailingStop set to true,server updates Stop Loss every time position moves in your favor.
Signature
1
publicabstractboolHasTrailingStop{get;}
Return Value
bool
Examples
12
ExecuteMarketOrder(TradeType.Buy,Symbol,10000,"myLabel",10,10,2,"comment",true);Print("Position was opened, has Trailing Stop = {0}",result.Position.HasTrailingStop);