Welcome Features News Download Registration Support FAQ Wish list Links
Advanced stock charting and analysis program

AFL Library

This is read-only version of AFL library entry. Ability to add user formulas and comment is only available from members-only area.

Details:

Formula name: testing multiple system simulataneously
Author/Uploader: Paul Ho - (email hidden)
Date/Time added: 2009-05-13 07:53:58
Origin:
Keywords:
Level: medium
Flags: system

DISCLAIMER: Most formulas present in AFL on-line library are submitted by the users and are provided here on an "as is" and "as available" basis. AmiBroker.com makes no representations or warranties of any kind to the contents or the operation of material presented here. We do not maintain nor provide technical support for 3rd party formulas.
Description:

testing multiple system simulataneously

Formula:

function multiplex(Buy1, Sell1, BuyPrice1, SellPrice1,size1,PositionScore1, 
	Buy2, Sell2, BuyPrice2, SellPrice2, size2, PositionScore2)
{
	global Buy, Sell, PositionScore, size;
	Buy = Sell = False;
	PositionScore = 0;
	size = 0;
	BuyPrice =SellPrice = Null;
	sys = 0;
	for(i = 0; i < BarCount; i++)
	{
		switch(sys)
		{
			case 0:
			if(Buy1[i] && Buy2[i])
			{
				if(PositionScore1[i] >= PositionScore2[i])
				{
					sys = 1;
					size[i] = size1[i];
					BuyPrice[i] = BuyPrice1[i];
					PositionScore[i] = PositionScore1[i];
					Buy[i] = buy1[i];
				}
				else
				{
					sys = 2;
					size[i] = size2[i];
					BuyPrice[i] = BuyPrice2[i];
					PositionScore[i] = PositionScore2[i];
					Buy[i] = Buy2[i];
				}
			}
			else if (Buy1[i])
			{
				sys = 1;
				size[i] = size1[i];
				BuyPrice[i] = BuyPrice1[i];
				PositionScore[i] = PositionScore1[i];
				Buy[i] = Buy1[i];
			}
			else if (Buy2[i])
			{
				sys = 2; //both used at the same time;
				size[i] = size2[i];
				BuyPrice[i] = BuyPrice2[i];
				PositionScore[i] = PositionScore1[i];
				Buy[i] = Buy2[i];
			}
			break;
			case 1: //system 1 in use
			if(Sell1[i])
			{
				sys = 0;
				Sell[i] = Sell1[i];
				SellPrice[i] = SellPrice1[i];
			}
			break;
			case 2:
			if(Sell2[i])
			{
				sys = 0;
				Sell[i] = Sell2[i];
				SellPrice[i] = SellPrice2[i];
			}
		}
	}
	return;
}
				

Buy1 = C > MA(C, 30);
Sell1 = C < MA(C, 50);
size1 = 10;
PositionScore1 = 1/C;
BuyPrice1 = SellPrice1 = C; 
r = RSI();
Buy2 = 8* (Ref(R < 30, -1));
Sell2 = 8* ( Ref(R > 70, -1)); 
size2 = 5;
BuyPrice2 = SellPrice2 = O;
PositionScore2 = 1/O;
multiplex(Buy1, Sell1, BuyPrice1, SellPrice1,size1,PositionScore1, 
	Buy2, Sell2, BuyPrice2, SellPrice2, size2, PositionScore2);

Short = Cover = False;
SetPositionSize(size, spsPercentOfEquity);
SetOption("MaxOpenPositions", 10 );  // 10 and 100 as max pos makes 7 point
difference in winloss   
SetOption("InitialEquity", IE=100000);  
SetOption("AllowPositionShrinking", 0);   
SetOption("CommissionMode", 1);   
SetOption("CommissionAmount", 0);
SetOption("AllowSameBarExit", False);
SetOption("PriceBoundChecking", True);
SetOption("ActivateStopsImmediately", False);
Filter = Buy OR Sell;
AddColumn(Buy, "Buy", 7.0);
AddColumn(Sell, "sell", 7.0);

Comments:


About | Privacy | Terms of Use | Contact information
Copyright © 2001 AMIBROKER.COM