Not sure if this will work, and there are no error messages in the
chart strip for this indicator.  Basically, long entry/exits are based
on the Jurik RSX indicator going up or down, respectively.  

When RSX starts to go up, I want to transmit a long buy order for 100
shres, and when RSX starts to go down I want to initiate a sell order. 

However, for the buy order, I also want to immediately follow with a
GTC trailing stop (sell) order based on 3% of the last close when the
buy order was made. 

Please let me know if you think this will work.  The parameters at the
beginning were borrowed from the Jurik RSX indicator graph commands. 
Thx - LP 

// ----- Chart Parameters ---------------

StopLevel = Param("Trailing stop %", 3, 0.1, 10, 0.1)/100;

series    = ParamField("Series", 4);
len       = Param( "RSX length", 20, 2, 200, 1, 10 );
topLine   = Param( "Upper Threshold Line", 80, -1, 101, 1, 0 );
botLine   = Param( "Lower Threshold line", 20, -1, 101, 1, 0 );

style     = ParamStyle( "Style", styleThick);
fill_Flag = ParamToggle( "Solid Color Fill?", "No|Yes", 1);
dyna_Flag = ParamToggle( "Dynamic Color Change?", "No|Yes", 1);
label     = ParamStr( "label text", "RSX" );

UPcolor   = ParamColor( "Long Color", ColorRGB(0,255,0)); 
DNcolor   = ParamColor( "Short Color", colorRed); 
NOcolor   = ParamColor( "Null Color", ColorRGB(219,219,219)); 

// ----- Analysis -----------------------

SetBarsRequired(ceil(3.5 * Len)) ;   // minimum lookback required for
stability //
RSXarray        = JurikRSX(series, len);


Buy = RSXarray > botline AND (RSXarray > Ref(RSXarray,-1) OR RSXarray
> 99);

Sell = RSXarray < topline AND (RSXarray < Ref(RSXarray,-1) OR RSXarray
< 1);


if( LastValue( Buy ) )
{
   ibc = GetTradingInterface("IB");

   // check if we are connected OK
   if( ibc.IsConnected() )
    {
       // place orders only if we do not have already open position on
this symbol
      if( ibc.GetPositionSize( Name() ) == 0 )
       {
         // retrieve orderID from previous run, will be empty if no
order was placed before  
          OrderID = StaticVarGetText("OrderID"+Name());
      
          // place or modify the order - don't transmit yet
          OrderID = ibc.ModifyOrder( OrderID, Name(), "BUY",
100,"MKT", 0, 0, "Day", True );
          ibc.PlaceOrder( Name(), "Sell", 100, "TRAIL", 0, LastValue(
C ) * StopLevel, "GTC", True );           
         // store orderID for next run so we know which order to modify
         StaticVarSetText("OrderID"+Name(), OrderID);
       }
    }
} 


if( LastValue( Sell ) )
{
   ibc = GetTradingInterface("IB");

   // check if we are connected OK
   if( ibc.IsConnected() )
    {
       // place orders only if we do not have already open position on
this symbol
      if( ibc.GetPositionSize( Name() ) == 0 )
       {
         // retrieve orderID from previous run, will be empty if no
order was placed before  
          OrderID = StaticVarGetText("OrderID"+Name());
      
          // place or modify the order - don't transmit yet
          OrderID = ibc.ModifyOrder( OrderID, Name(), "Sell",
100,"MKT", 0, 0, "Day", True );
         // store orderID for next run so we know which order to modify
         StaticVarSetText("OrderID"+Name(), OrderID);
       }
    }
} 

Reply via email to