Stock Portfolio Organizer
The ultimate porfolio management solution.
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
Think-Algo Modify for Amibroker (AFL)
This program is for illustrative purposes only and
not construed as specific advisory recommendations.
- It is not guaranteed to be free of errors.
- Trades placed from this algorithm are taken at your
own risk for your own account. - Past performance is not necessarily indicative of
future results.
Indicator / Formula
/*
Author: www.Think-Algo.com
www.facebook.com/ThinkAlgo
Date: May 2016
*** This program is for illustrative purposes only and
not construed as specific advisory recommendations.
*** It is not guaranteed to be free of errors.
*** Trades placed from this algorithm are taken at your
own risk for your own account.
*** Past performance is not necessarily indicative of
future results.
*/
// Initial Capital SetOption("InitialEquity", 1000000 ); // Commission is set to 0.1% SetOption("CommissionMode",1);
SetOption("CommissionAmount",0.1);
// Buy/Sell at ATO one day after the signals are triggered SetTradeDelays(1,1,0,0);
RoundLotSize = 100;
BuyPrice = Open;
SellPrice = Open;
// Maximum position sizes
MaxPos = 30;
SetOption("MaxOpenPositions", MaxPos);
// Lookback periods
period1 = 20;
period2 = 60;
// Two Moving Averages
EMA_short = EMA(Close,period1);
EMA_long = EMA(Close,period2);
//********** Conditions to BUY *************
// Liquidity is larger than 10 MB per day (on average)
Liquid = MA(C*V,period2) > 10e6;
// The short EMA crosses the longer EMA up in the past 3 days
BuyCon1 = BarsSince( Cross(EMA_short,EMA_long)) <= 3;
// ADX is trending up with +DMI > -DMI
BuyCon2 = ADX()> EMA(ADX(),period2) AND PDI() > MDI();
// The market is in a good condition trade
SetForeign("SET",True);
SETBuyCon = RSI()>EMA(RSI(),period1) ;
RestorePriceArrays();
Buy = Liquid AND BuyCon1 AND BuyCon2 AND SETBuyCon;
//********** Conditions to SELL *************
// The short EMA crosses the longer EMA down
SellCon1 = Cross(EMA_long,EMA_short);
// -DMI > +DMI indicates down trend
SellCon2 = PDI() < MDI();
Sell= SellCon1 OR SellCon2 ;//OR SellConMKC; // Use ExRem to remove excessive Buy/Sell signals Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
// ******** Position Size and Position Score **** // Invest equally in each stock PositionSize = -100/MaxPos;
// If there are more than one buy signals at a given time,
// the priority of the Buy is based on the ranking from
// position score. Here, our criterion is the ratio of
// today's value with respect to the average past value PositionScore = C*V/MA(C*V,period2);
// Stop Loss ***************************************
// Exit next day if the loss is larger than 10 % ApplyStop(stopTypeLoss,stopModePercent,10,2);
Plot(C,"Test Think Algo system",colorDefault,styleCandle);
PlotShapes(shapeUpArrow*Buy,ParamColor("UpArrow",10),0,L);
PlotShapes(shapeDownArrow*Sell,ParamColor("DownArrow",11),0,H);
_SECTION_BEGIN("Automatic Trend-line");
if (ParamToggle("Automatic Trend-line","Off|On",1))
{
//////// Created by Tomasz Janeczko & Modify By Chaiset setindex ///////
periodT = Param("period",50,1,250,1);
ColorLine = ParamColor("Color Trend-line",colorRed);
StyleTrend = ParamStyle("Style Trend line",styleLine,maskDefault);
x = Cum(1);
perchg = 0.3*LastValue( Highest( ROC( Low, periodT ) ));
startvalue = LastValue( Trough( Low, perchg, 1 ) );
endvalue1 = LastValue( Trough( Low, perchg, 2 ) );
startbar = LastValue( ValueWhen( Low == startvalue, x, 1 ) );
endbar = LastValue( ValueWhen( Low == endvalue1, x, 1 ) );
Aa = (endvalue1-startvalue)/(endbar-startbar);
b = startvalue;
trendline = Aa * ( x - startbar ) + b;
Plot( IIf( x >= endbar, trendline, Null ), "Trendline", ColorLine,StyleTrend );
}
_SECTION_END();
1 comments
Leave Comment
Please login here to leave a comment.
Back
good