ÕâÊÇÒ»¸öÍ»ÆÆϵͳ£¬Ò²ÊÇÒ»¸öÇ÷ÊƸú×Ùϵͳ¡£¡¾½»Ò×֪ʶmacd.org.cnÊÕ¼¯ÕûÀí¡¿
The Turtles are one of the most successful groups of traders that the world has ever seen. The group was formed due to a bet between two very profitable traders, Bill Eckhardt and Richard Dennis. Dennis was convinced that trading was a skill and could be taught, so he set out to prove his assertions. He chose a variety of different people from all walks of life who responded to a newspaper advertisement. Only about 50% of this original group continued trading. The others quit. They could not follow the simple trading system set out for them due some form of psychological resistance. The group is called the ‘Turtles’ because less than 50% of the wild turtles actually make it to the ocean to have a chance at survival to adulthood. 50% die on their way to the ocean from predators or other dangers. ¡¾½»Ò×֪ʶmacd.org.cnÊÕ¼¯ÕûÀí¡¿
The Turtles consistently derive annual returns in excess of 70%, yet their trading system only produces correct entry signals 35% of the time. The probability of a ‘win’ is insignificant when you consider the importance of the size of your wins compared to the size of your losses. Here is a summary of how their system works:
Entry rules
1. Get in on a 20-bar breakout.
2. Before reversing the trend using the 20-bar breakout, there must be a losing trade in the opposite direction.
3. Always enter on a 55 bar breakout.
4. (Subjective) If the market is sideways, use a 55 bar breakout.
5. Once there is a profit in one direction, you can continue to trade in that direction, but to trade in the opposite direction, there must first be a loss.
Stop rules
1. On the day of entry, use a 1/2 (Average True Range) ATR stop. If the trade gets stopped out during the intraday trading, then get back in if the intraday market gives a new signal (makes new lows or highs).
2. Use a 10-day trailing stop.
3. The day after the entry, use a 2 ATR protective stop. Sometimes the 10 day trailing stop is too far away. The 10-day trailing stop assures you will not be risking more than 2-ATR on a trade (except when there is a gap open against your trade).¡¾½»Ò×֪ʶmacd.org.cnÊÕ¼¯ÕûÀí¡¿
4. When the trade is at a 2.5 ATR profit, move the protective stop to breakeven.
5. Once the 10-day trailing stop or the 2.5 ATR rule moves the stop to breakeven, start using a wider trailing stop of 20 bars.
6. Once you are ahead by 10 ATR, use a 3 bar pivot as a trailing stop and the 20 bar breakout as a trailing stop.
Additional Techniques
1. Enter additional positions at a 55-day breakout, provided the protective stop on the first positions have been moved to breakeven.
2. After a big profit of 10 ATR or more, do not trade in the opposite direction for 45 bars using the 20 bar breakout method. Use the 55 bar breakout instead.
3. Wait for a sideways market to start trading and get in on a 55 bar breakout.
Money Management Rules
1. Do not risk more than 1% of your account per trade.
2. Do not expose your account to more than a 2 ATR risk at any time.
3. Use fractional entry technique. ¡¾½»Ò×֪ʶmacd.org.cnÊÕ¼¯ÕûÀí¡¿
4. If in one trade, wait for that trade to be moved to breakeven before adding any new trades.
5. Trade the strongest commodity within a complex, such as grains and currencies.
6. Trade when the volatility shrinks. When the volatility shrinks by 50%, it allows more contracts to be used for the same dollar risk.¡¾½»Ò×֪ʶmacd.org.cnÊÕ¼¯ÕûÀí¡¿
Ò»¸ö°æ±¾
Variable: ATR(0), Acct(0), MaxAcct(0), DDown(0), Risk(0), Risk2(0), Contr(0);
ATR = AvgTrueRange(15);
Acct = 100000 + NetProfit; {This is the account size you want to put in}
If Acct > MaxAcct then MaxAcct = Acct;
If MaxAcct > 1 then DDown = Acct / MaxAcct;
Risk = Acct * .02;{Per trade risk by Decimal}
Risk2 = Risk;
{Risk of Ruin}
If DDown <= 0.9 and DDown > 0.8 then Risk2 = Risk2 * 0.8;
If DDown <= 0.8 and DDown > 0.7 then Risk2 = Risk2 * 0.64;
If DDown <= 0.7 and DDown > 0.75 then Risk2 = Risk2 * 0.5;
If DDown <= 0.75 and DDown > 0.6 then Risk2 = Risk2 * 0.4;
If DDown <= 0.6 and DDown > 0.5 then Risk2 = Risk2 * 0.32;
If DDown <= 0.5 then Begin;
Alert("Busted!!");
Risk2 = 0;
End;
Contr = Risk2 / ((2 * ATR) * BigPointValue);
{Entry}
Variable: PLFactor(-1), InitContr(0), InitATR(0), LongFS(-1), ShortFS(-1);
Condition1 = CurrentBar > 0 and High > HighestFC(High, 20)[1];
Condition2 = CurrentBar > 0 and Low < LowestFC(Low, 20)[1];
If PositionProfit > 0 then PLFactor = 1;
If PositionProfit < 0 then PLFactor = -1;
If MarketPosition <= 0 and Condition1 and LongFS = -1 Then Begin;
If PLFactor = -1 then Begin;
Buy("L-Entry") Contr Contracts at Close + 1 Point Stop;
InitContr = Contr;
InitATR = ATR;
ShortFS = -1;
End;
If PLFactor = 1 then Begin;
ShortFS = -1;
LongFS = 1;
PLFactor = -1;
End;
End;
If MarketPosition >= 0 and Condition2 and ShortFS = -1 Then Begin;
If PLFactor = -1 then Begin;
Sell("S-Entry") Contr Contracts at Close - 1 Point Stop;
InitContr = Contr;
InitATR = ATR;
LongFS = -1;
End;
If PLFactor = 1 then Begin;
LongFS = -1;
ShortFS = 1;
PLFactor = -1;
End;
End;
Condition8 = CurrentBar > 0 and High > HighestFC(High, 50)[1];
Condition9 = CurrentBar > 0 and Low < LowestFC(Low, 50)[1];
If MarketPosition <= 0 and LongFS = 1 and Condition8 then Begin;
Buy("L-Entry-FS") Contr Contracts at Close + 1 Point Stop;
InitContr = Contr;
InitATR = ATR;
LongFS = -1;
End;
If MarketPosition >= 0 and ShortFS = 1 and Condition9 then Begin;;
Sell("S-Entry-FS") Contr Contracts at Close - 1 Point Stop;
InitContr = Contr;
InitATR = ATR;
ShortFS = -1;
End;
{Pyramid}
Condition3 = MarketPosition = 1 and CurrentBar > 0 and High > Highest(High, 50)[1];
Condition4 = Marketposition = -1 and CurrentBar > 0 and Low < Lowest(Low, 50)[1];
Condition5 = ATR < (InitATR * 6);
Condition6 = CurrentEntries <= 1;
Condition7 = OpenPositionProfit >= (CurrentEntries * (InitATR * 0.5) * BigPointValue);
If Condition4 and Condition5 and Condition6 and Condition7 then Begin;
If Contr < InitContr then Sell("S-Pyramid") Contr Contracts at EntryPrice(0) - ((InitATR * 0.5)-1 Point) Stop
Else Sell("S-Pyramid.") InitContr Contracts at EntryPrice(1) - ((InitATR * 0.5)- 1 Point) Stop;
End;}
{Stops}
Variable:PyraCont(0);
If CurrentEntries > 0 then PyraCont = CurrentContracts / CurrentEntries;
If CurrentEntries = 1 then ExitLong("2 ATR EL") at EntryPrice(0) - (InitATR * 2) Stop;
If CurrentEntries = 1 then ExitShort("2 ATR ES") at EntryPrice(0) + (InitATR * 2) Stop;
If Low < LowestFC(Low, 10)[1] then ExitLong("Rev BrkOut EL") at Close - 1 Point Stop;
If High > HighestFC(High, 10)[1] then ExitShort("Rev BrkOut ES") at Close + 1 Point Stop;
ExitLong("RangeStop EL") LowestFC(Low, 10) - 1 Point Stop;
ExitShort("RangeStop ES") Highest(High, 10) + 1 Point Stop;
If CurrentEntries <= 1 and OpenPositionProfit < 0 and BarsSinceEntry(0) >= 10 then ExitLong("10 day EL") at Open;
If CurrentEntries <= 1 and OpenPositionProfit < 0 and BarsSinceEntry(0) >= 10 then ExitShort("10 day ES") at Open;