DAS Trader Pro Stop loss orders

In the previous post, I showed how an automatic stop loss is placed after an entry. There are other situations when you might need to update the current stop loss, and there are different stop loss types too.

Stop types

These are the stop types available in DAS Trader Pro with Guardian Trading

  • Market
  • Limit
  • Trailing
  • Range
  • RangeMkt
  • LimitP

Regular hours vs. extended hours stops

The first 5 stop types can be used for regular market hours between 9:30 AM and 4:00 PM. The LimitP stop type is intended for extended hours trading, although it works during regular hours too. It is a limit order type by design – thus requires a limit price setting and comes with all its disadvantages. It is quite recent feature and not every broker supports it as of today and many people do not know about this extremely useful possibility to protect their trades during extended hours trading.

You can use the LimitP stop type

  • for stop loss
  • for stop order entries

You can not use the LimitP stop type

  • for range OCO orders
  • for automatic trailing stops

3 ways to update the existing stop loss orders

From the montage

By dragging the order on the chart

By a script with a hotkey

Scripts to update the stop loss orders or place new stop loss orders for existing positions

Typically, after a partial exit or after change of situation, we might need to change the existing stop loss or place a new stop loss order to update its price or its share size.

Always test your hotkeys in simulator account first. After that, with a small amount/risk with live account.

Although DAS Trader Pro provides a replay mode, the following hotkeys are not meant for replay mode.

These scripts require the DAS Trader Pro is set up as described in this blog post

Regular hours

Set stop to break-even point

To set the stop loss order to your average price (break-even point) press the hotkey:

$MONTAGE=getwindowobj("MONTAGE1");
$MONTAGE.CXL ALLSYMB;
$MONTAGE.Route="Stop";
$MONTAGE.Price=$MONTAGE.AvgCost;
$MONTAGE.StopType="MARKET";
$MONTAGE.STOPPRICE=Round($MONTAGE.AvgCost,2);
$MONTAGE.Share=$MONTAGE.Pos;
$MONTAGE.TIF="DAY+";
$MONTAGE.SEND=Reverse;

The hotkey is universal for both long and short sides.


Set stop to desired price

This is a two-step process. 1st, double-click on the price where you want your stop to be set in the chart window. Then press the following hotkey:

$MONTAGE=getwindowobj("MONTAGE1");
$MONTAGE.CXL ALLSYMB;
$MONTAGE.Route="Stop";
$MONTAGE.StopType="MARKET";
$MONTAGE.STOPPRICE=Round($MONTAGE.Price,2);
$MONTAGE.Share=$MONTAGE.Pos;
$MONTAGE.TIF="DAY+";
$MONTAGE.Send=Reverse;

The hotkey is universal for both long and short sides.


Set a position flip order

This is the same as above, just the position is doubled, effectively flipping the position. After the order is triggered, you will have to set the new stop with one of the shown methods.

$MONTAGE=getwindowobj("MONTAGE1");
$MONTAGE.CXL ALLSYMB;
$MONTAGE.Route="Stop";
$MONTAGE.StopType="MARKET";
$MONTAGE.STOPPRICE=Round($MONTAGE.Price,2);
$MONTAGE.Share=$MONTAGE.Pos*2;
$MONTAGE.TIF="DAY+";
$MONTAGE.Send=Reverse;

The hotkey is universal for both long and short sides.

Pre-market and post-market scripts (extended hours)

The LimitP stop being a limit order is shown a bit differently on the charts, and also it is shown as SLP type in the orders window

For a long position, the upper price is the trigger price, while the lower is the limit price. It is calculated as 0.5% below the clicked price, rounded to 2 decimals.
For stocks moving quickly over 0.5% and for stocks trading below $1 it needs re-adjustment to different offset price and different rounding.

Set stop to break-even point

To set the stop loss order to your average price (break-even point) press the hotkey:

LONG
$MONTAGE=getwindowobj("MONTAGE1");
$MONTAGE.CXL ALLSYMB;
$MONTAGE.Route="Stop";
$MONTAGE.StopType="LimitP";
$MONTAGE.STOPPRICE=Round($MONTAGE.AVGCOST,2);
$MONTAGE.PRICE=ROUND($MONTAGE.STOPPRICE*0.995,2);
$MONTAGE.Share=$MONTAGE.Pos;
$MONTAGE.TIF="DAY+";
$MONTAGE.Sell=Send;
SHORT
$MONTAGE=getwindowobj("MONTAGE1");
$MONTAGE.CXL ALLSYMB;
$MONTAGE.Route="Stop";
$MONTAGE.StopType="LimitP";
$MONTAGE.STOPPRICE=Round($MONTAGE.AVGCOST,2);
$MONTAGE.PRICE=ROUND($MONTAGE.STOPPRICE*1.005,2);
$MONTAGE.Share=$MONTAGE.Pos;
$MONTAGE.TIF="DAY+";
$MONTAGE.Buy=Send;

Set stop to desired price

This is a two-step process. 1st, double-click on the price where you want your stop to be set in the chart window. Then press the following hotkey:

LONG
$MONTAGE=getwindowobj("MONTAGE1");
$MONTAGE.CXL ALLSYMB;
$MONTAGE.Route="Stop";
$MONTAGE.StopType="LimitP";
$MONTAGE.STOPPRICE=Round($MONTAGE.Price,2);
$MONTAGE.PRICE=ROUND($MONTAGE.STOPPRICE*0.995,2);
$MONTAGE.Share=$MONTAGE.Pos;
$MONTAGE.TIF="DAY+";
$MONTAGE.Sell=Send;
SHORT
$MONTAGE=getwindowobj("MONTAGE1");
$MONTAGE.CXL ALLSYMB;
$MONTAGE.Route="Stop";
$MONTAGE.StopType="LimitP";
$MONTAGE.STOPPRICE=Round($MONTAGE.Price,2);
$MONTAGE.PRICE=ROUND($MONTAGE.STOPPRICE*1.005,2);
$MONTAGE.Share=$MONTAGE.Pos;
$MONTAGE.TIF="DAY+";
$MONTAGE.Buy=Send;

Include the LimitP stop loss into the entry hotkeys

Double-click on the chart to define the stop loss price, and simply press the hotkey whenever you like to enter the trade.

Long

$MONTAGE=GetWindowObj("MONTAGE1");
$MONTAGE.CXL ALLSYMB;
$buyprice=$MONTAGE.Ask;
$risk=20;
$mystop=$MONTAGE.price;
$tmpstop=ROUND($mystop*0.995,2);
$pricetostop=$buyprice-$mystop;
$amount=$risk/$pricetostop;
$MONTAGE.share=$amount;
$MONTAGE.ROUTE="LIMIT";
$MONTAGE.Price=Round($buyprice*1.005,2);
$MONTAGE.TIF=DAY+;
$MONTAGE.Buy;
$MONTAGE.TriggerOrder=RT:STOP STOPTYPE:LimitP PX:$tmpstop ACT:SELL STOPPRICE:$mystop QTY:Pos TIF:DAY+;

Short

$MONTAGE=GetWindowObj("MONTAGE1");
$MONTAGE.CXL ALLSYMB;
$sellprice=$MONTAGE.Bid;
$risk=20;
$mystop=$MONTAGE.price;
$tmpstop=ROUND($mystop*1.005,2);
$pricetostop=$mystop-$sellprice;
$amount=$risk/$pricetostop;
$MONTAGE.share=$amount;
$MONTAGE.ROUTE="LIMIT";
$MONTAGE.Price=Round($sellprice*0.995,2);
$MONTAGE.TIF=DAY+;
$MONTAGE.Sell;
$MONTAGE.TriggerOrder=RT:STOP STOPTYPE:LimitP PX:$tmpstop ACT:Buy STOPPRICE:$mystop QTY:Pos TIF:DAY+;

I’m using a $TMPSTOP helper variable to calculate the offset for the limit order. Adapt the “risk=20;” line to your desired risk size. 20 means $20 dollar risk.