PDA

View Full Version : Tradesim exit price equals the trailing stop


Scott
21st July 2010, 02:52 AM
Hi guys,

I am very new to this so you are going to have to check this out for yourselves.

This is nothing fancy all I did was copy the trailing stop code (TrailingStop.c) in vitamin C and changed the result value to return the Prev price rather than an 0 or 1.

I use this as my exit price in tradesim so when my stop is triggered I exit at my stop value not the open, high, low or close values.

This covers off when you are trading CFD's and have a stop placed on the system. Very similar to the ExtFml("TradeSim.SetExitPriceToInitialStop"); function.

I checked out a few trades and it seemed to return the actual trailing stop value as the exit price.

Happy to get any feedback particularly if their was an easier way. Thanks

I called it "TrailingStopValue.c"

The tradesim code I used was:

ExitTrigger:= ExtFml("VitaminC.CallScript3",
"TrailingStop.c", {Normal Exit Trigger}
"TrailingStop(TRIGGER,LONG)",
Volatility,CLOSE,LOW);

ExitPrice:=ExtFml("VitaminC.CallScript3",
"TrailingStopValue.c", {Normal Exit Price}
"TrailingStop(TRIGGER,LONG)",
Volatility,CLOSE,LOW);


Vitamin C Code - changes in Red:

enum ModeEnum {
BAND,
TRIGGER
};

enum PositionEnum {
LONG,
SHORT
};

void TrailingStop(ModeEnum _Mode,PositionEnum _Position)
{
float Band;
float Prev=0;
float Stop;

if(_Position==SHORT)
Prev=1000000; // need this to initialize properly for short condition

for(int i=0;i<BarCount;i++)
{
if(_Position==LONG) // Long Side
{
Stop=User2[i]-User1[i];
if(User3[i]<=Prev)
{
Band=Stop;
if(_Mode==BAND) // Band
Result[i]=Band;
else // Trigger & return Price
Result[i]=Prev;
}
else
{
if(Stop>Prev) // check for new high
Band=Stop; // move the trailing stop band
else
Band=Prev; // keep it the same as before

if(_Mode==BAND) // Band
Result[i]=Band;
else // Trigger
Result[i]=0;
}
}
else // Short side
{
Stop=User2[i]+User1[i];
if(User3[i]>=Prev)
{
Band=Stop;
if(_Mode==BAND) // Band
Result[i]=Band;
else // Trigger & return Price
Result[i]=Prev;
}
else
{
if(Stop<Prev) // check for new low
Band=Stop; // move the trailing stop band
else
Band=Prev; // keep it the same as before

if(_Mode==BAND) // Band
Result[i]=Band;
else // Trigger
Result[i]=0;
}
}

Prev=Band;

}
}

End vitamin C Code