PureBytes Links
Trading Reference Links
|
Hello,
The code can be made much faster by moving LLV outside the
loop, as shown below:
<SPAN
>/////////////////////////////////
<SPAN
>// HB Parabolic
Stop for Long positions
<SPAN
>//
<SPAN
>// Written by:
Tomasz Janeczko
<SPAN
>//
Modified by: Howard Bandy to allow setting of initial
level
<SPAN
>//
at the start of each new long position.
<SPAN
>//
<SPAN
>// Parabolic
SAR re-implemented in
<SPAN
>// native
AFL.
<SPAN
>//
<SPAN
>// Example of
for/if/else control statements
<SPAN
>//
<SPAN
>//
Requires:
<SPAN
>// AmiBroker
4.31.1
<SPAN
>//
<SPAN
>
<SPAN
>
<SPAN
>
<SPAN
>//
Set trade delays to trade the day the buy and sell signals are
received.
<SPAN
>
<SPAN
>SetTradeDelays<FONT
face="Courier New" color=black size=1><SPAN
>(<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>);
<SPAN
>
<SPAN
>//
Trading system entry logic goes here.
<SPAN
>//
Exit will be made by the price dropping through the
<SPAN
>//
parabolic level.
<SPAN
>
<SPAN
>//
For example, use moving average crossover entry.
<SPAN
>
<SPAN
>MALen =
<SPAN
>Param<FONT
face="Courier New" color=black size=1><SPAN
>(<FONT
face="Courier New" color=fuchsia size=1><SPAN
>"MALen"<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>30<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>100<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>);
<SPAN
>MAvg =
<SPAN
>MA<FONT
face="Courier New" color=black size=1><SPAN
>(<SPAN
>C,MALen);
<SPAN
>Buy<FONT
face="Courier New" color=black size=1><SPAN
> =
<SPAN
>Cross<FONT
face="Courier New" color=black size=1><SPAN
>(<SPAN
>C,MAvg);
<SPAN
>
<SPAN
>//
Code below assumes that entry will be made at the close of the day the
<SPAN
>//
buy signal is generated.
<SPAN
>
<SPAN
>//
Setting TradeAtStop to 1 assumes that there is a stop in place
<SPAN
>//
and the trade exits intraday at the stop price.
<SPAN
>//
Setting TradeAtStop to 0 assumes that intraday exit cannot take
place
<SPAN
>//
(as in mutual fund end-of-day trading) and the trade takes
place
<SPAN
>//
at the close of the signal day.
<SPAN
>
<SPAN
>TradeAtStop =
<SPAN
>Param<FONT
face="Courier New" color=black size=1><SPAN
>(<FONT
face="Courier New" color=fuchsia size=1><SPAN
>"TradeAtStop"<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>);
<SPAN
>
<SPAN
>//
Set the initial stop level at the lowest low for some number of
days.
<SPAN
>//
Other ways to set the initial level include ATR, Standard Deviation,
etc.
<SPAN
>
<SPAN
>LBDays =
<SPAN
>Param<FONT
face="Courier New" color=black size=1><SPAN
>(<FONT
face="Courier New" color=fuchsia size=1><SPAN
>"LBDays"<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>3<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>10<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>);
<SPAN
>
<SPAN
>//
Set the Acceleration factor and Maximum Acceleration.
<SPAN
>
<SPAN
>IAF =
<SPAN
>Param<FONT
face="Courier New" color=black size=1><SPAN
>(<FONT
face="Courier New" color=fuchsia size=1><SPAN
>"IAF"<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0.02<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0.001<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0.1<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0.001<FONT
face="Courier New" color=black size=1><SPAN
>);
<SPAN
>// acceleration
factor
<SPAN
>MaxAF =
<SPAN
>Param<FONT
face="Courier New" color=black size=1><SPAN
>(<FONT
face="Courier New" color=fuchsia size=1><SPAN
>"MaxAF"<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0.2<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0.001<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1.0<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0.001<FONT
face="Courier New" color=black size=1><SPAN
>);
<SPAN
>// max
acceleration
<SPAN
>
<SPAN
>Psar = <SPAN
>Close;
<SPAN
>//
initialize
<SPAN
>mp =
<SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>;
<SPAN
>// flat initial
Market Position
<SPAN
>Sell<FONT
face="Courier New" color=black size=1><SPAN
> =
<SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>;
<SPAN
>// clear sell
signals array
<SPAN
>af =
IAF; <FONT
face="Courier New" color=green size=1><SPAN
>// initial
acceleration factor
<SPAN
>hp = <SPAN
>High [ <FONT
face="Courier New" color=fuchsia size=1><SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>
];<SPAN
>
<SPAN
>Lp =
<SPAN
>LLV<FONT
face="Courier New" color=black size=1><SPAN
>(<SPAN
>Low,LBDays);<FONT
face="Courier New" color=black size=1><SPAN
>
<SPAN
>lp[ 0 ] =
Low [ <FONT
face="Courier New" color=fuchsia size=1><SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>
];
<SPAN
>
<SPAN
>for<FONT
face="Courier New" color=black size=1><SPAN
>( i =
<SPAN
>2<FONT
face="Courier New" color=black size=1><SPAN
>; i <
BarCount; i++ )
<SPAN
>{
<SPAN
>
<SPAN
>//
Check for exit from long position
<SPAN
>
<SPAN
>
<SPAN
>if<FONT
face="Courier New" color=black size=1><SPAN
> ( (mp ==
<SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>) <SPAN
>AND (<SPAN
>Low[i] < Psar[i-<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>])
)
<SPAN
>
{
<SPAN
>
Sell[i] = <FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>;
<SPAN
>
<SPAN
>if<FONT
face="Courier New" color=black size=1><SPAN
>
(TradeAtStop)
<SPAN
>
{
<SPAN
>
SellPrice[i] =
Psar[i-<SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>];
<SPAN
>
}
<SPAN
>
<SPAN
>else
<SPAN
>
{
<SPAN
>
SellPrice[i] = <SPAN
>Close[i];
<SPAN
>
}
<SPAN
>
mp = <SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>;
<SPAN
>
}
<SPAN
>
<SPAN
>
<SPAN
>//
Continuation of long position -- adjust stop
<SPAN
>
<SPAN
>
<SPAN
>if<FONT
face="Courier New" color=black size=1><SPAN
> ( mp ==
<SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>
)
<SPAN
>
{
<SPAN
>
<SPAN
>if<FONT
face="Courier New" color=black size=1><SPAN
> (<SPAN
>High[i] > Hp)
<SPAN
>
{
<SPAN
>
Hp = High[i];
<SPAN
>
af = af + IAF;
<SPAN
>
<SPAN
>if<FONT
face="Courier New" color=black size=1><SPAN
> (af >
MaxAF) af = MaxAF;
<SPAN
>
}
<SPAN
>
psar [ i ] = psar [ i-<FONT face="Courier New" color=fuchsia
size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
> ] + af * ( hp
- psar [ i-<SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
> ]
);
<SPAN
>
}
<SPAN
>
<SPAN
>else
<SPAN
>
{
<SPAN
>
<SPAN
>//
not in a long position.
<SPAN
>
<SPAN
>//
value of psar is not important.
<SPAN
>
<SPAN
>//
set the psar level so it will plot on the price graph.
<SPAN
>
<SPAN
>
psar[i] = Close[<SPAN
>BarCount-<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>];
<SPAN
>
}
<SPAN
>
<SPAN
>
<SPAN
>//
Check for new long position
<SPAN
>
<SPAN
>
<SPAN
>if<FONT
face="Courier New" color=black size=1><SPAN
> ( (mp ==
<SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>) <SPAN
>AND (<SPAN
>Buy[i]) )
<SPAN
>
{
<SPAN
>
BuyPrice[i] = <SPAN
>Close[i];
<SPAN
>
Psar[i] = Lp[i];
<SPAN
>
Hp = High[i];
<SPAN
>
af = IAF;
<SPAN
>
mp = <SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>;
<SPAN
>
}
<SPAN
>}
<SPAN
>
<SPAN
>Plot<FONT
face="Courier New" color=black size=1><SPAN
>( <SPAN
>Close, <FONT
face="Courier New" color=fuchsia size=1><SPAN
>"Price"<FONT
face="Courier New" color=black size=1><SPAN
>, <SPAN
>colorBlack, <SPAN
>styleCandle );
<SPAN
>Plot<FONT
face="Courier New" color=black size=1><SPAN
>( MAvg,
<SPAN
>"MAvg"<FONT
face="Courier New" color=black size=1><SPAN
>, <SPAN
>colorBlue,<SPAN
>styleLine);
<SPAN
>Plot<FONT
face="Courier New" color=black size=1><SPAN
>( psar,
<SPAN
>"SAR"<FONT
face="Courier New" color=black size=1><SPAN
>, <SPAN
>colorRed, <SPAN
>styleDots | <SPAN
>styleNoLine | <SPAN
>styleThick );
<SPAN
>
<SPAN
>
Hope this helps.
Best regards,Tomasz Janeczkoamibroker.com
<BLOCKQUOTE
>
----- Original Message -----
<DIV
>From:
Ken Close
To: <A title=amibroker@xxxxxxxxxxxxxxx
href="">amibroker@xxxxxxxxxxxxxxx
Sent: Sunday, December 14, 2003 3:42
PM
Subject: RE: [amibroker] exiting flat
positions
<SPAN
>Howard:
<SPAN
>
<SPAN
>So, so
beautiful! I tried to do this once back in the days of Vbscript and was
never successful (I got it to plot but could not use it for some
reason). I never went back to it when the new looping capability showed
up. Your code produces a great looking plot. I am anxious to try
it out various places.
<SPAN
>
<SPAN
>Thanks.
<SPAN
>
<SPAN
>Ken
<SPAN
>
<SPAN
>
<SPAN
>-----Original
Message-----From: Howard
Bandy [mailto:howardbandy@xxxxxxxxx] <SPAN
>Sent: <FONT face=Tahoma
size=2>Sunday, December 14,
2003<SPAN
> <FONT face=Tahoma
size=2>8:59
AM<SPAN
><SPAN
>To: amibroker@xxxxxxxxxxxxxxx<SPAN
>Subject: RE: [amibroker] exiting flat
positions
<SPAN
>
<SPAN
>Hi Dave
–
<SPAN
>
<SPAN
>Have you tried the
Parabolic trailing stop? Tomasz posted the afl code for it a while
back. I have modified it so that I can set the initial level at a point
of my own choosing, rather than always at the price at which the reversal took
place. If desired, it would be easy to add code to track the number of
bars since entry and the profit to date, and exit trades based on that
information.
<SPAN
>
<SPAN
>A simplified version
which handles only long trades is copied here.
<SPAN
>
<SPAN
>Howard
<SPAN
>
<SPAN
>============================================================
<SPAN
>
<SPAN
>/////////////////////////////////
<SPAN
>// HB
Parabolic Stop for Long positions
<SPAN
>//
<SPAN
>// Written
by: Tomasz Janeczko
<SPAN
>//
Modified by: Howard Bandy to allow setting of initial
level
<SPAN
>//
at the start of each new long position.
<SPAN
>//
<SPAN
>// Parabolic
SAR re-implemented in
<SPAN
>// native
AFL.
<SPAN
>//
<SPAN
>// Example of
for/if/else control statements
<SPAN
>//
<SPAN
>//
Requires:
<SPAN
>// AmiBroker
4.31.1
<SPAN
>//
<SPAN
>
<SPAN
>
<SPAN
>
<SPAN
>//
Set trade delays to trade the day the buy and sell signals are
received.
<SPAN
>
<SPAN
>SetTradeDelays<FONT
face="Courier New" color=black size=1><SPAN
>(<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>);
<SPAN
>
<SPAN
>//
Trading system entry logic goes here.
<SPAN
>//
Exit will be made by the price dropping through the
<SPAN
>//
parabolic level.
<SPAN
>
<SPAN
>//
For example, use moving average crossover entry.
<SPAN
>
<SPAN
>MALen =
<SPAN
>Param<FONT
face="Courier New" color=black size=1><SPAN
>(<FONT
face="Courier New" color=fuchsia size=1><SPAN
>"MALen"<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>30<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>100<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>);
<SPAN
>MAvg =
<SPAN
>MA<FONT
face="Courier New" color=black size=1><SPAN
>(<SPAN
>C,MALen);
<SPAN
>Buy<FONT
face="Courier New" color=black size=1><SPAN
> =
<SPAN
>Cross<FONT
face="Courier New" color=black size=1><SPAN
>(<SPAN
>C,MAvg);
<SPAN
>
<SPAN
>//
Code below assumes that entry will be made at the close of the day the
<SPAN
>//
buy signal is generated.
<SPAN
>
<SPAN
>//
Setting TradeAtStop to 1 assumes that there is a stop in
place
<SPAN
>//
and the trade exits intraday at the stop price.
<SPAN
>//
Setting TradeAtStop to 0 assumes that intraday exit cannot take
place
<SPAN
>//
(as in mutual fund end-of-day trading) and the trade takes
place
<SPAN
>//
at the close of the signal day.
<SPAN
>
<SPAN
>TradeAtStop =
<SPAN
>Param<FONT
face="Courier New" color=black size=1><SPAN
>(<FONT
face="Courier New" color=fuchsia size=1><SPAN
>"TradeAtStop"<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>);
<SPAN
>
<SPAN
>//
Set the initial stop level at the lowest low for some number of
days.
<SPAN
>//
Other ways to set the initial level include ATR, Standard Deviation,
etc.
<SPAN
>
<SPAN
>LBDays =
<SPAN
>Param<FONT
face="Courier New" color=black size=1><SPAN
>(<FONT
face="Courier New" color=fuchsia size=1><SPAN
>"LBDays"<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>3<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>10<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>);
<SPAN
>
<SPAN
>//
Set the Acceleration factor and Maximum Acceleration.
<SPAN
>
<SPAN
>IAF =
<SPAN
>Param<FONT
face="Courier New" color=black size=1><SPAN
>(<FONT
face="Courier New" color=fuchsia size=1><SPAN
>"IAF"<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0.02<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0.001<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0.1<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0.001<FONT
face="Courier New" color=black size=1><SPAN
>);
<SPAN
>//
acceleration factor
<SPAN
>MaxAF =
<SPAN
>Param<FONT
face="Courier New" color=black size=1><SPAN
>(<FONT
face="Courier New" color=fuchsia size=1><SPAN
>"MaxAF"<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0.2<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0.001<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1.0<FONT
face="Courier New" color=black size=1><SPAN
>,<FONT
face="Courier New" color=fuchsia size=1><SPAN
>0.001<FONT
face="Courier New" color=black size=1><SPAN
>);
<SPAN
>// max
acceleration
<SPAN
>
<SPAN
>Psar =
<SPAN
>Close;
<SPAN
>//
initialize
<SPAN
>mp =
<SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>;
<SPAN
>// flat
initial Market Position
<SPAN
>Sell<FONT
face="Courier New" color=black size=1><SPAN
> =
<SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>;
<SPAN
>// clear sell
signals array
<SPAN
>af =
IAF; <FONT
face="Courier New" color=green size=1><SPAN
>// initial
acceleration factor
<SPAN
>hp = <SPAN
>High [ <FONT
face="Courier New" color=fuchsia size=1><SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>
];
<SPAN
>lp = <SPAN
>Low [ <FONT
face="Courier New" color=fuchsia size=1><SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>
];
<SPAN
>
<SPAN
>for<FONT
face="Courier New" color=black size=1><SPAN
>( i =
<SPAN
>2<FONT
face="Courier New" color=black size=1><SPAN
>; i <
BarCount; i++
)
<SPAN
>{
<SPAN
>
<SPAN
>//
Check for exit from long position
<SPAN
>
<SPAN
>
<SPAN
>if<FONT
face="Courier New" color=black size=1><SPAN
> ( (mp
== <SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>) <SPAN
>AND (<SPAN
>Low[i] < Psar[i-<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>])
)
<SPAN
>
{
<SPAN
>
Sell[i] = <FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>;
<SPAN
>
<SPAN
>if<FONT
face="Courier New" color=black size=1><SPAN
>
(TradeAtStop)
<SPAN
>
{
<SPAN
>
SellPrice[i] =
Psar[i-<SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>];
<SPAN
>
}
<SPAN
>
<SPAN
>else
<SPAN
>
{
<SPAN
>
SellPrice[i] = <SPAN
>Close[i];
<SPAN
>
}
<SPAN
>
mp = <SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>;
<SPAN
>
}
<SPAN
>
<SPAN
>
<SPAN
>//
Continuation of long position -- adjust stop
<SPAN
>
<SPAN
>
<SPAN
>if<FONT
face="Courier New" color=black size=1><SPAN
> ( mp ==
<SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>
)
<SPAN
>
{
<SPAN
>
<SPAN
>if<FONT
face="Courier New" color=black size=1><SPAN
> (<SPAN
>High[i] > Hp)
<SPAN
>
{
<SPAN
>
Hp = High[i];
<SPAN
>
af = af + IAF;
<SPAN
>
<SPAN
>if<FONT
face="Courier New" color=black size=1><SPAN
> (af >
MaxAF) af = MaxAF;
<SPAN
>
}
<SPAN
>
psar [ i ] = psar [ i-<FONT face="Courier New" color=fuchsia
size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
> ] + af * (
hp - psar [ i-<FONT face="Courier New" color=fuchsia
size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
> ]
);
<SPAN
>
}
<SPAN
>
<SPAN
>else
<SPAN
>
{
<SPAN
>
<SPAN
>//
not in a long position.
<SPAN
>
<SPAN
>//
value of psar is not important.
<SPAN
>
<SPAN
>//
set the psar level so it will plot on the price graph.
<SPAN
>
<SPAN
>
psar[i] = Close[<SPAN
>BarCount-<FONT
face="Courier New" color=fuchsia size=1><SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>];
<SPAN
>
}
<SPAN
>
<SPAN
>
<SPAN
>//
Check for new long position
<SPAN
>
<SPAN
>
<SPAN
>if<FONT
face="Courier New" color=black size=1><SPAN
> ( (mp
== <SPAN
>0<FONT
face="Courier New" color=black size=1><SPAN
>) <SPAN
>AND (<SPAN
>Buy[i]) )
<SPAN
>
{
<SPAN
>
BuyPrice[i] = <SPAN
>Close[i];
<SPAN
>
Lp = <SPAN
>LLV<FONT
face="Courier New" color=black size=1><SPAN
>(<SPAN
>Low,LBDays);
<SPAN
>
Psar[i] = Lp[i];
<SPAN
>
Hp = High[i];
<SPAN
>
af = IAF;
<SPAN
>
mp = <SPAN
>1<FONT
face="Courier New" color=black size=1><SPAN
>;
<SPAN
>
}
<SPAN
>}
<SPAN
>
<SPAN
>Plot<FONT
face="Courier New" color=black size=1><SPAN
>( <SPAN
>Close, <FONT
face="Courier New" color=fuchsia size=1><SPAN
>"Price"<FONT
face="Courier New" color=black size=1><SPAN
>, <SPAN
>colorBlack, <SPAN
>styleCandle );
<SPAN
>Plot<FONT
face="Courier New" color=black size=1><SPAN
>( MAvg,
<SPAN
>"MAvg"<FONT
face="Courier New" color=black size=1><SPAN
>, <SPAN
>colorBlue,<SPAN
>styleLine);
<SPAN
>Plot<FONT
face="Courier New" color=black size=1><SPAN
>( psar,
<SPAN
>"SAR"<FONT
face="Courier New" color=black size=1><SPAN
>, <SPAN
>colorRed, <SPAN
>styleDots | <SPAN
>styleNoLine | <SPAN
>styleThick );
<SPAN
>
<SPAN
>
<SPAN
>
<SPAN
>============================================================
<SPAN
>
<SPAN
>-----Original
Message-----From: Dave
Merrill [mailto:dmerrill@xxxxxxx] <SPAN
>Sent: Friday, December 12, 2003 2:45
PMTo:
amibroker@xxxxxxxxxxxxxxx<SPAN
>Subject: [amibroker] exiting flat
positions
<SPAN
>
<FONT face="Courier New"
size=2>Obviously, losses are a problem. But so
are positions that hang in there<FONT face="Courier New"
size=2><FONT
face="Courier New">forever taking up available cash but going nowhere, without
hitting profittargets or
stops.How would you code
that, assuming you're dealing with a system that tries
todump losers but let winners run
as long as they're advancing.<FONT
face="Courier New">I tried starting from a modest stoploss, with the stop
percentage advancingevery day
until it becomes negative, enforcing the requirement to make
aprofit or get off the bus. I'm
not certain, but I think it's working, just<FONT
face="Courier New">not very profitable in the context I tried
it:.Here's the
code:<FONT
face="Courier New">----------------<FONT
face="Courier New">bars_since_buy = NZ(BarsSince(buy),
BarCount);bars_since_short =
NZ(BarsSince(short), BarCount);<FONT
face="Courier New">bars_since_entry = IIf(bars_since_buy <
bars_since_short, bars_since_buy,<FONT
face="Courier New">bars_since_short);<FONT
face="Courier New">stoploss_rise = Optimize("stoploss rise", .5, .1, 1,
.1);stoploss = 13 -
(stoploss_rise * bars_since_entry);<FONT
face="Courier New">ApplyStop(stopTypeLoss, stopModePercent, stoploss, false,
true, 0);<FONT
face="Courier New">----------------<FONT
face="Courier New">Anyone see any problems with the implementation? Any other
ideas foravoiding sitting in
stagnant positions?<FONT
face="Courier New">Dave
<TD
bgColor=#ffffcc>
<FONT
face="Times New Roman" color=#003399 size=2><SPAN
>Send BUG
REPORTS to <FONT face="Courier New"
size=2><SPAN
>bugs@xxxxxxxxxxxxx<FONT
face="Courier New" size=2><SPAN
><FONT
face="Courier New">Send SUGGESTIONS to
suggest@xxxxxxxxxxxxx<FONT
face="Courier New">-----------------------------------------<FONT
face="Courier New">Post AmiQuote-related messages ONLY to:
amiquote@xxxxxxxxxxxxxxx <FONT
face="Courier New">(Web page: <A
href="">http://groups.yahoo.com/group/amiquote/messages/)<FONT
face="Courier New">--------------------------------------------<FONT
face="Courier New">Check group FAQ at: <A
href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html
<SPAN
>Your use of Yahoo! Groups is
subject to the Yahoo! Terms
of Service.<SPAN
>
<SPAN
><FONT
face="Times New Roman" size=3><SPAN
><FONT
face="Courier New" size=2><SPAN
>Send BUG REPORTS to
bugs@xxxxxxxxxxxxx<FONT face="Courier New"
size=2><SPAN
><FONT
face="Courier New">Send SUGGESTIONS to
suggest@xxxxxxxxxxxxx<FONT
face="Courier New">-----------------------------------------<FONT
face="Courier New">Post AmiQuote-related messages ONLY to:
amiquote@xxxxxxxxxxxxxxx <FONT
face="Courier New">(Web page: <A
href="">http://groups.yahoo.com/group/amiquote/messages/)<FONT
face="Courier New">--------------------------------------------<FONT
face="Courier New">Check group FAQ at: <A
href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html
<SPAN
>Your use of Yahoo! Groups is
subject to the Yahoo! Terms
of Service.<SPAN
>
<SPAN
> Send
BUG REPORTS to bugs@xxxxxxxxxxxxxSend SUGGESTIONS to
suggest@xxxxxxxxxxxxx-----------------------------------------Post
AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx (Web page: <A
href="">http://groups.yahoo.com/group/amiquote/messages/)--------------------------------------------Check
group FAQ at: <A
href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Your use of Yahoo! Groups is subject to the <A
href="">Yahoo! Terms of Service.
Yahoo! Groups Sponsor
Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
|