PureBytes Links
Trading Reference Links
|
Have you tried uncommenting the following line?
PositionScore = IIf( firstofmonth, Rank, scoreNoRotate );
paolo
--- In amibroker@xxxxxxxxxxxxxxx, "bistrader" <bistrader@xxx> wrote:
>
> Need help with CBT. Want to buy from a watchlist on First of Month with delay =1, MaxOpenPos of 3 and Worst1 of 6. This works fine.
>
> On other than First of Month, want to sell a ticker if ranking drops to below Worst2 which is 10 and not replace ticker until next First of Month. I can not get this to work. Sell example code below. Help appreciated.
>
> ***********
> // Rotation_with_MidLevelCBT_v2.0.afl
>
> // An example using Mid Level CBT
>
> MaxOpenPos = 3;
> Worst1 = 6;
> Worst2 = 10;
>
> BuyPrice = SellPrice = ShortPrice = CoverPrice = Close;
>
> Delay = 1;
> SetTradeDelays( Delay, Delay, Delay, Delay );
>
> SetOption("MaxOpenPositions", MaxOpenPos );
> SetOption("WorstRankHeld", Worst2 );
> EnableRotationalTrading( True );
> PositionSize = -100/GetOption("MaxOpenPositions");
>
> firstofmonth = Month() != Ref( Month(), -1 );
> firstofmonth2 = Ref(firstofmonth,-Delay);// Need for Mid Level Backtester
>
> Rank = 1/RSI(14);
> PositionScore = rank;
> //PositionScore = IIf( firstofmonth, Rank, scoreNoRotate );
>
> // THIS IS MID LEVEL BACKTESTER
> // Want to buy on First of Month with delay =1, MaxOpenPos of 3
> // and Worst1 of 6.
> // On other than First of Month, want to sell a ticker if ranking
> // drops to below Worst2 which is 10 and not replace ticker
> // until next First of Month
>
> SetOption("UseCustomBacktestProc", True );
> //SetOption("UseCustomBacktestProc", False );
>
> barDates = DateTime();
>
> // FirstOfMonth with MaxOpenPos of 3 and Worst1 of 6.
> // This section of code works just fine.
> if( Status("action") == actionPortfolio )
> {
> bo = GetBacktesterObject();
> bo.PreProcess();
>
> for( bar = 0; bar < BarCount; bar++ )
> {
> barDate = barDates[bar];
> if( firstofmonth2[ bar ] )
> {
> TopSymbols = "";
> for( i = 0, sig = bo.GetFirstSignal( bar );
> sig AND i < Worst1;
> sig = bo.GetNextSignal( bar ), i++ )
> {
> TopSymbols += sig.Symbol + ",";
> }
>
> _TRACE(NumToStr(barDate, formatDateTime) + " Top " + Worst1 + " Symbols: " + TopSymbols );
>
> for( pos = bo.GetFirstOpenPos(); pos; pos = bo.GetNextOpenPos() )
> {
> if( NOT StrFind( TopSymbols, pos.Symbol + "," ) )
> {
> _TRACE("Exiting position not found in top list: " + pos.Symbol );
> // exit the position
> bo.ExitTrade( bar, pos.Symbol, pos.GetPrice( bar, "C" ), 9 ); // modify price field if needed here
> }
>
> }
> }
>
>
> // On other than FirstOfMonth, want to sell a ticker if ranking falls below
> // worst2 of 10 and not replace it until next FirstOfMonth. THE FOLLOWING
> // DOES NOT WORK AS IT ROTATES INTO THE NEXT TICKER RATHER THAN JUST
> // SELLING THE TICKER.
> if( NOT firstofmonth2[ bar ] )
> {
> TopSymbols = "";
> for( i = 0, sig = bo.GetFirstSignal( bar );
> sig AND i < Worst1;
> sig = bo.GetNextSignal( bar ), i++ )
> {
> TopSymbols += sig.Symbol + ",";
> }
>
> _TRACE(NumToStr(barDate, formatDateTime) + " Top " + Worst2 + " Symbols: " + TopSymbols );
>
> for( pos = bo.GetFirstOpenPos(); pos; pos = bo.GetNextOpenPos() )
> {
> if( NOT StrFind( TopSymbols, pos.Symbol + "," ) )
> {
> _TRACE("Exiting position not found in top list: " + pos.Symbol );
> // exit the position, but do NOT replace position
> bo.ExitTrade( bar, pos.Symbol, pos.GetPrice( bar, "C" ), 8 ); // modify price field if needed here
> }
>
> }
> }
>
> bo.ProcessTradeSignals( bar );
> }
> bo.PostProcess();
> }
>
> // The End
>
------------------------------------
**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
TO GET TECHNICAL SUPPORT send an e-mail directly to
SUPPORT {at} amibroker.com
TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/amibroker/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/amibroker/join
(Yahoo! ID required)
<*> To change settings via email:
mailto:amibroker-digest@xxxxxxxxxxxxxxx
mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx
<*> To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|