Stock Portfolio Organizer

The ultimate porfolio management solution.

Shares, Margin, CFD's, Futures and Forex
EOD and Realtime
Dividends and Trust Distributions
And Much More ....
For Portfolio Manager Click Here

WiseTrader Toolbox

#1 Selling Amibroker Plugin featuring:

Advanced Adaptive Indicators
Advanced Pattern Exploration
Neural Networks
And Much More ....
Find Out More Here

Think-Algo Modify for Amibroker (AFL)

Rating:
3 / 5 (Votes 2)
Tags:
trading system, amibroker

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

Copy & Paste Friendly
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/*
 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

1. abdalelah

good

Leave Comment

Please login here to leave a comment.

Back