PureBytes Links
Trading Reference Links
|
Without looking at your code, add these statements at the top:
SetOption("MaxOpenPositions", numPos = Param("Max Open
Positions",15,5,50,1));
Fixed = Param("Amount to trade, 0 ",0,1000,50000,1000);
//Using 0 will auto compute % to trade based on Max# Positions
PositionSize = IIf(Fixed,Fixed,round(-100/numPos));
//Param("Position Size - see notes in
SetOptions.afl",-10,-100,1000000,1);
Check out SetOptions in HELP for more useful things to set.
--
Terry
-----Original Message-----
From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx] On
Behalf Of benson_jt
Sent: Thursday, July 20, 2006 11:42
To: amibroker@xxxxxxxxxxxxxxx
Subject: [amibroker] Newbee System Programming - Need some Help...
/* For all of you who are more expert than I am I have finally
completed my first new system... However, it only selects 1 stock
with 100% winning ratio... The thing is, I am puzzeled because when
I look manually at a stock chart, I see these "requirements" being
met several times over. I expect many buy and sell and short and
cover signals, but that isn't what I am getting. If someone would be
kind enough to run this code, look at it, and perhaps help me
understand why it is not working as expected, I would appreciate the
help! thank you! */
Price = (High+Low+(4*(Open+Close)))/6;
SetForeign("^RUT");
TimeFrameSet(inWeekly);
MarketWeekRSI = RSI(14);
MarketWeekMACD = MACD();
MarketWeekSignal = Signal();
MarketWeekEMAOpen = EMA(Open,18);
MarketWeekEMAClose = EMA(Close,14);
TimeFrameRestore();
TimeFrameSet(inMonthly);
MarketMonthRSI = RSI(7);
MarketMonthMACD = MACD();
MarketMonthSignal = Signal();
MarketMonthEMAOpen = EMA(Open,10);
MarketMonthEMAClose = EMA (Close,7);
TimeFrameRestore();
MarketDailyRSI = RSI(21);
MarketDailyMACD = MACD();
MarketDailySignal = Signal();
MarketDailyEMAOpen = EMA(Open,21);
MarketDailyEMAClose = EMA (Close,20);
RestorePriceArrays();
TimeFrameSet(inWeekly);
WeekRSI = RSI(14);
WeekMACD = MACD();
WeekSignal = Signal();
WeekEMAOpen = EMA(Open,18);
WeekEMAClose = EMA(Close,14);
TimeFrameRestore();
TimeFrameSet(inMonthly);
MonthRSI = RSI(7);
MonthMACD = MACD();
MonthSignal = Signal();
MonthEMAOpen = EMA(Open,10);
MonthEMAClose = EMA (Close,7);
TimeFrameRestore();
Buy =
Close > Param("Minimum Stock Price
(Long)",5.00,0.01,500,0.01)
AND Cross(EMA(Close,20),EMA(Open,21))
AND Cross(TimeFrameExpand
(WeekEMAClose,inWeekly),TimeFrameExpand(WeekEMAOpen,inWeekly))
//AND Cross(TimeFrameExpand
(MonthEMAClose,inMonthly),TimeFrameExpand(MonthEMAOpen,inMonthly))
AND Cross(TimeFrameExpand
(MarketWeekEMAClose,inWeekly),TimeFrameExpand
(MarketWeekEMAOpen,inWeekly))
//AND Cross(TimeFrameExpand
(MarketMonthEMAClose,inMonthly),TimeFrameExpand
(MarketMonthEMAOpen,inMonthly))
AND Cross(Close,MA(Low,2))
AND Cross(RSI(21),50)
AND Cross(TimeFrameExpand(WeekRSI ,inWeekly),50)
//AND Cross(TimeFrameExpand(MonthRSI,inMonthly),50)
//AND Cross(MACD(),Signal())
AND Cross(TimeFrameExpand(WeekMACD,inWeekly),TimeFrameExpand
(WeekSignal,inWeekly))
//AND Cross(TimeFrameExpand
(MonthMACD,inMonthly),TimeFrameExpand(MonthSignal,inMonthly))
AND Cross(TimeFrameExpand(MarketWeekRSI,inWeekly),50)
//AND Cross(TimeFrameExpand(MarketMonthRSI,inMonthly),50)
//AND Cross(TimeFrameExpand
(MarketWeekMACD,inWeekly),TimeFrameExpand(MarketWeekSignal,inWeekly))
//AND Cross(TimeFrameExpand
(MarketMonthMACD,inMonthly),TimeFrameExpand
(MarketMonthSignal,inMonthly))
;
BuyPrice = Max( Price, Low );
Sell =
Close > Param("Minimum Stock Price (Short)",5.00,5,500,0.01)
AND Cross(EMA(Open,21),EMA(Close,20))
AND Cross(TimeFrameExpand
(WeekEMAOpen,inWeekly),TimeFrameExpand(WeekEMAClose,inWeekly))
//AND Cross(TimeFrameExpand
(MonthEMAOpen,inMonthly),TimeFrameExpand(MonthEMAClose,inMonthly))
AND Cross(TimeFrameExpand
(MarketWeekEMAOpen,inWeekly),TimeFrameExpand
(MarketWeekEMAClose,inWeekly))
//AND Cross(TimeFrameExpand
(MarketMonthEMAOpen,inMonthly),TimeFrameExpand
(MarketMonthEMAClose,inMonthly))
AND Cross(MA(High,2),Close)
AND Cross(50,RSI(21))
AND Cross(50,TimeFrameExpand(WeekRSI ,inWeekly))
//AND Cross(50,TimeFrameExpand(MonthRSI,inMonthly))
//AND Cross(Signal(),MACD())
AND Cross(TimeFrameExpand
(WeekSignal,inWeekly),TimeFrameExpand(WeekMACD,inWeekly))
//AND Cross(TimeFrameExpand
(MonthSignal,inMonthly),TimeFrameExpand(MonthMACD,inMonthly))
AND Cross(50,TimeFrameExpand(MarketWeekRSI,inWeekly))
//AND Cross(50,TimeFrameExpand(MarketMonthRSI,inMonthly))
//AND Cross(TimeFrameExpand
(MarketWeekSignal,inWeekly),TimeFrameExpand(MarketWeekMACD,inWeekly))
//AND Cross(TimeFrameExpand
(MarketMonthSignal,inMonthly),TimeFrameExpand
(MarketMonthMACD,inMonthly))
;
SellPrice = Min( Price, High );
Short = Sell;
ShortPrice = SellPrice;
Cover = Buy;
CoverPrice = BuyPrice;
e = Equity();
RoundLotSize = Param("Round Lot Size",1,1,100);
TickSize = Param("Tick Size",.01,.0001,1);
Capital = Param("Starting Capital",10000,1000,1000000);
/* IMPORTANT: Set it also in the Settings: Initial Equity */
CapitalRiskPct = 0.01;
/* Assumes Risking No More Than 0.5% of Capital*/
Risk = Param("% of Capital To Risk",CapitalRiskPct,0.001,0.03,0.001)
*Capital;
ProfitTargetRatio=Param("Profit Target Ratio",0.618,0.05,10,0.001);
/*Initialize Variables*/
TrailStopAmount = 0;
ProfitTarget = 0;
StopLoss = SAR();
for( i = 0; i < BarCount; i++ )
{
if( Buy[i] == 1)
{
ProfitTarget[i] = abs(BuyPrice[i] - (BuyPrice[i] *
ProfitTargetRatio[i]));
TrailStopAmount[i] = abs(Price[i] - StopLoss[i]);
PositionSize[i] = (Risk[i]/TrailStopAmount[i])
*BuyPrice[i];
}
else
if (Short[i] == 1)
{
ProfitTarget[i] = abs(ShortPrice[i] -
(ShortPrice[i] * ProfitTargetRatio[i]));
TrailStopAmount[i] = abs(Price[i] - StopLoss
[i]);
PositionSize[i] = (Risk[i]/TrailStopAmount
[i])*ShortPrice[i];
}
else if (Sell[i] == 1 OR Cover[i] == 1)
TrailStopAmount[i] = 0;
}
exitAtStop = Param("Apply Stop Exit At Stop", 1,0,1);
Volatile = Param("Apply Stop Volatile", 1,0,1);
ReEntryDelay = Param("Reentry Delay", 0,0,360);
PctRisk=Param("Max Loss %",10,1,20,0.5);
ProfitStop = IIf(ProfitTarget < Low, Low, IIf(ProfitTarget > High,
High, ProfitTarget));
ApplyStop( stopTypeProfit, stopModePoint, ProfitStop,
exitAtStop ,Volatile,ReEntryDelay);
ApplyStop( stopTypeTrailing, stopModePoint,
TrailStopAmount,exitAtStop ,Volatile,ReEntryDelay);
Filter = Buy OR Sell OR Short OR Cover;
AddColumn(DateTime(), "Date / Time", formatDateTime );
AddColumn(Close,"Close");
AddColumn(Buy,"Buy");
AddColumn(Sell,"Sell");
AddColumn(Short,"Short");
AddColumn(Cover,"Cover");
AddColumn(Price,"Price");
AddColumn(SAR(),"SAR()");
AddColumn(TrailStopAmount,"Trail Stop Amount");
AddColumn(ProfitTarget,"Profit Target");
AddColumn(PositionSize,"Position Size");
AddColumn(BuyPrice,"Buy Price");
AddColumn(MA(Volume,40),"Avg. Volume (40)");
AddColumn(MA(Volume,5),"Avg. Volume (5)");
AddColumn(Volume,"Volume");
AddColumn(RSI(7),"RSI (7)");
AddColumn(RSI(14),"RSI(14)");
AddColumn(RSI(21),"RSI(21)");
AddColumn( TimeFrameExpand(WeekRSI ,inWeekly), "weekly RSI
14");
AddColumn( TimeFrameExpand(MonthRSI ,inMonthly), "monthly
RSI 7");
AddColumn(MACD(),"MACD()");
AddColumn(Signal(),"Signal()");
AddColumn(Open,"Open");
AddColumn(High,"High");
AddColumn(Low,"Low");
/*
Please note that this group is for discussion between users only.
To get support from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com
For other support material please check also:
http://www.amibroker.com/support.html
Yahoo! Groups Links
http://groups.yahoo.com/group/amibroker/
amibroker-unsubscribe@xxxxxxxxxxxxxxx
http://docs.yahoo.com/info/terms/
|