Using Virtual Trading Functions to Create Last Trade Loser Filter

The following code uses our new functions to synthetically keep track of our trading to determine when to enter a new trade. The Turtle System only took trades after a losing trade took place. Even with the Virtual Trade functions you still need to keep track of whether the entries/exits generated a profitable trade. It simple enough to track the real trades – compare the entries/exits when a the market position changes.

inputs: absEntryChanLen(55),entryChanlen(20),exitChanLen(10),lastTradeLoserFilter(false);

vars:lastTradeLoser(true),mp(0),virtmp(0),tradeProfit(0),virtBuyPrice(0),virtSellPrice(0),
myFillPrice(0);
mp = marketPosition;

If mp <> 1 and mp[1] = 1 then
Begin
	tradeProfit = ExitPrice(1) - EntryPrice(1);
	If tradeProfit > 0 then lastTradeLoser = false;
	print(date," Long Trader ",tradeProfit);
end;
If mp <> -1 and mp[1] = -1 then
Begin
	tradeProfit = EntryPrice(1) - ExitPrice(1);
	If tradeProfit > 0 then lastTradeLoser = false;
	print(date," Short Trader ",tradeProfit," ",lastTradeLoser);	
end;

If lastTradeLoserFilter = False then lastTradeLoser = True;

If lastTradeLoser = False then
Begin
	print(date," In Virtual Section And VirtTmp = ",virTmp);
	If(virtmp = 1) then
	Begin
		if(virtualLongExit(lowest(low[1],exitChanLen),1,myFillPrice) =1) then
		Begin
			tradeProfit = myFillPrice - virtBuyPrice;
			If tradeProfit < 0 then lastTradeLoser = true;
			virtmp = 0;
		end;
	end;	
	If(virtmp = -1) then
	Begin
		if(virtualShortExit(highest(high[1],exitChanLen),1,myFillPrice) =1) then
		Begin
			tradeProfit = virtSellPrice - myFillPrice;
			If tradeProfit < 0 then lastTradeLoser = true;
			virtmp = 0;
		end;
	end;		
	if(virtualBuy(highest(high[1],entryChanLen),1,myFillPrice) = 1) then
	Begin
		if virtmp <> 1 then
		begin
			virtBuyPrice = myFillPrice;
			virtmp = 1;
			tradeProfit = 0;
			If virtmp[1] = -1 then tradeProfit = virtSellPrice - virtBuyPrice;
			If tradeProfit < 0 then lastTradeLoser = true;
		end;
	end;
	if(virtualSell(lowest(low[1],entryChanLen),1,myFillPrice) = 1) then
	Begin
		if virtmp <> -1 then
		begin
			virtsellPrice = myFillPrice;
			virtmp = -1;
			tradeProfit = 0;
			If virtmp[1] = 1 then tradeProfit =  virtBuyPrice - virtSellPrice;
			If tradeProfit < 0 then lastTradeLoser = true;
		end;
	end;
	print("End of Virtual Module : virTmp = ",virTmp);
end;