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;}}}
importclrclr.AddReference("cAlgo.API")# Import cAlgo API typesfromcAlgo.APIimport*# Import trading wrapper functionsfromrobot_wrapperimport*fromSystemimportTimeSpanclassPendingOrderModificationSample():defon_start(self):order=Noneorders=[]iflen(api.OrderComment)>0andlen(api.OrderLabel)>0:orders=[oforoinapi.PendingOrdersifo.Comment==api.OrderCommentando.Lebel==api.OrderLabel]eliflen(api.OrderComment)>0:orders=[oforoinapi.PendingOrdersifo.Comment==api.OrderComment]eliflen(api.OrderLabel)>0:orders=[oforoinapi.PendingOrdersifo.Lebel==api.OrderLabel]iflen(orders)==0:api.Print("Couldn't find any matching order, please check the comment and label")else:fororderinorders:self.modify_order(order)api.Stop()defmodify_order(self,order):targetPrice=order.TargetPriceifapi.TargetPrice==0elseapi.TargetPriceorderSymbol=api.Symbols.GetSymbol(order.SymbolName);stopLossInPips=order.StopLossPipsifapi.StopLossInPips==0elseapi.StopLossInPipstakeProfitInPips=order.TakeProfitPipsifapi.TakeProfitInPips==0elseapi.TakeProfitInPipsiflen(api.Expiry)==0:expiryTime=order.ExpirationTimeelifapi.Expiry=="0":expiryTime=Noneelse:expiryTimeSpan=TimeSpan.Parse(api.Expiry)expiryTime=api.Server.Time.Add(expiryTimeSpan)volumeInUnits=order.VolumeInUnitsifapi.VolumeInLots==0elseorderSymbol.QuantityToVolumeInUnits(api.VolumeInLots)iforder.OrderType==PendingOrderType.Limit:api.ModifyPendingOrder(order,targetPrice,stopLossInPips,takeProfitInPips,expiryTime,volumeInUnits,api.HasTrailingStop,api.StopLossTriggerMethod)eliforder.OrderType==PendingOrderType.Stop:api.ModifyPendingOrder(order,targetPrice,stopLossInPips,takeProfitInPips,expiryTime,volumeInUnits,api.HasTrailingStop,api.StopLossTriggerMethod,api.OrderTriggerMethod)eliforder.OrderType==PendingOrderType.StopLimit:api.ModifyPendingOrder(order,targetPrice,stopLossInPips,takeProfitInPips,expiryTime,volumeInUnits,api.HasTrailingStop,api.StopLossTriggerMethod,api.OrderTriggerMethod,api.LimitRangeInPips)
1 2 3 4 5 6 7 8 9101112131415161718192021
importclrclr.AddReference("cAlgo.API")# Import cAlgo API typesfromcAlgo.APIimport*# Import trading wrapper functionsfromrobot_wrapperimport*classPendingOrderCancelationSample():defon_start(self):orders=[]iflen(api.OrderComment)>0andlen(api.OrderLabel)>0:orders=[oforoinapi.PendingOrdersifo.Comment==api.OrderCommentando.Lebel==api.OrderLabel]eliflen(api.OrderComment)>0:orders=[oforoinapi.PendingOrdersifo.Comment==api.OrderComment]eliflen(api.OrderLabel)>0:orders=[oforoinapi.PendingOrdersifo.Lebel==api.OrderLabel]iflen(orders)==0:api.Print("Couldn't find any matching order, please check the comment and label")else:fororderinorders:api.CancelPendingOrder(order)api.Stop()
varresult=PlaceLimitOrder(TradeType.Buy,Symbol.Name,10000,targetPrice);varorder=result.PendingOrder;Print("The order's volume is: {0}",order.VolumeInUnits);
123
result=api.PlaceLimitOrder(TradeType.Buy,api.Symbol.Name,10000,targetPrice)order=result.PendingOrderprint(f"The order's volume is: {order.VolumeInUnits}")
varresult=PlaceLimitOrder(TradeType.Buy,Symbol.Name,10000,Symbol.Bid,null,10,10,ProtectionType.Relative,null,"this is a comment");varorder=result.PendingOrder;Print("comment = {0}",order.Comment);
123
result=api.PlaceLimitOrder(TradeType.Buy,api.Symbol.Name,10000,api.Symbol.Bid,None,10,10,ProtectionType.Relative,None,"this is a comment")order=result.PendingOrderprint(f"comment = {order.Comment}")
Quantity
Summary
Quantity (lots) of this order
Signature
1
publicabstractdoubleQuantity{get;}
Return Value
double
HasTrailingStop
Summary
When HasTrailingStop set to true,server updates Stop Loss every time position moves in your favor.