Hello Edward,wow..great .   .i was looking for something like this [ i.e- your 
code ]Thank you

--- On Sun, 29/8/10, Edward Pottasch <[email protected]> wrote:

From: Edward Pottasch <[email protected]>
Subject: Re: [amibroker] Re: Formula Help Needed
To: [email protected]
Date: Sunday, 29 August, 2010, 1:18 AM















 
 



  


    
      
      
      


Jeff,
 
I agree with cas soni that plotting the problem makes it 
easier to solve.
 
You can use the valuewhen() function but the 
problem is that before a sell is found new buy signals emerge. That is why I 
would solve such a problem using an exit loop. See code below. If this can be 
solved using array calculations only I woud not know how,
 
regards, Ed
 
 
procedure 
buySell_proc(BuyXX,sellStopProfit,sellStopLoss,initPer) 
{
global 
BuyAdjusted;
global BuyPriceAdjusted;
global SellAdjusted;
global 
SellPriceAdjusted;
global stopProfitArray;
global 
stopLossArray;
 
BuyAdjusted = 0;
BuyPriceAdjusted = 
0;
SellAdjusted = 0;
SellPriceAdjusted = 0;
stopProfitArray = 
Null;
stopLossArray = Null;
slip = 0;
 
for( i = initPer + 1; i < BarCount; i++ ) 

{
 if (BuyXX[ i ]) 
 {
  BuyAdjusted[ i ] = 
1;
  BuyPriceAdjusted[ i ] = C[ i ] + 
slip;
  stopProfitArray[ i ] = BuyPriceAdjusted[ i ] + 
sellStopProfit[ i ];
  stopLossArray[ i ] = BuyPriceAdjusted[ i ] - 
sellStopLoss[ i ];
  
  for (j = i + 1; j < 
BarCount; j++) 
  { 
   stopLossArray[ j ] = 
stopLossArray[ i ];
   stopProfitArray[ j ] = stopProfitArray[ 
i ];
   // exit at stop loss
   if (C[ j ] 
< stopLossArray[ j 
])
   {
    SellAdjusted[ j ] = 
1;
    SellPriceAdjusted[ j ] = C[ j ] - 
slip;
    i = 
j;
    break;
   }  
   // 
exit at stop profit
   else if (C[ j ] > stopProfitArray[ j 
])
   {
    SellAdjusted[ j ] = 
1;
    SellPriceAdjusted[ j ] = C[ j ]- 
slip;
    i = 
j;
    break;
   }
   // 
to avoid problems at the end of the array
   else if (j == 
BarCount - 1) 
   { 
    i = 
BarCount;
    break;
   }
  }
 } 

} 
}
 
SetBarsRequired(sbrAll,sbrAll);
 
ATRx = Optimize("ATR Multiplier", 3, 1, 5, 1); // ATR 
Multiplier
WATR = ((Ref(ATR(8),-2)*8) + (ATR(1)*1.125) + 
(Ref(ATR(1)*1.125,-1)))/10; //Weighted ATR (last 20% has a 12.5% weighting 
factor)
twentydayupper = Ref(HHV(H, 20), -1);
 
BuyXX = Cross(C, 
twentydayupper);
buySell_proc(BuyXX,WATR*ATRx,WATR*2,8);
Buy = 
BuyAdjusted;
BuyPrice = BuyPriceAdjusted;
Sell = 
SellAdjusted;
SellPrice = SellPriceAdjusted;
 
// chart
GraphXSpace = 5;
SetChartOptions(0, 
chartShowDates);
Plot( C, "\nCandle",colorWhite, styleCandle 
);
Plot(twentydayupper,"",colorBlue,1); 

Plot(stopLossArray,"\nsellStopLoss",colorRed,1);
Plot(stopProfitArray,"\nsellStopProfit",colorGreen,1);
PlotShapes(IIf(Buy,shapeUpArrow,shapeNone),colorGreen,0,L,-15);
PlotShapes(IIf(Buy,shapeHollowSmallCircle,shapeNone),colorWhite,0,BuyPrice,0);
PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed,0,H,-15);
PlotShapes(IIf(Sell,shapeHollowSmallCircle,shapeNone),colorWhite,0,SellPrice,0);
 




From: JEFF F 
Sent: Saturday, August 28, 2010 7:14 PM
To: [email protected] 
Subject: [amibroker] Re: Formula Help Needed

  

Thanks cas soni,
I appreciate your input, and adding the plot. The problem 
I am having is the sellprice and sellstop seem to be floating numbers and 
recalculated every day. I want them to be calculated once at entry, and remain 
that fixed value until a sell is triggered. Any help is much 
appreciated.

--- In [email protected], cas soni 
<soni...@...> wrote:
>
> Hello Jeff ,
> First let me say 
i am not an afl expert , 
> so please try this .... 
> ATRx = 
Optimize("ATR Multiplier", 3, 1, 5, 1); // ATR Multiplier 
> WATR = 
(Ref(ATR(8),-2)*8 + (ATR(1)*1.125) + (Ref(ATR(1)*1.125,-1)))/10; //Weighted ATR 
(last 20% has a 12.5% weighting factor) 
> twentydayupper = Ref(HHV(H, 
20), -1); 
> 
> 
> 
> Plot(C,"",3,64); 
> 
Plot(twentydayupper,"",7,1); 
> 
> 
> Buy = Cross(C, 
twentydayupper); 
> 
> BuyPrice=ValueWhen(Buy,C,1); 
> 

> Sellstop = BuyPrice - WATR*2; 
> 
> SellPrice = BuyPrice + 
WATR*ATRx; 
> Sell = Cross(Sellstop, C) OR Cross(C, SellPrice); 
> 
Plot(SellPrice,"sellprice",4,1); 
> Plot(Sellstop,"sellstop",6,1); 

> 
> PlotShapes(Buy*shapeUpArrow,colorGreen,0,L,-5); 
> 
PlotShapes(Sell*shapeDownArrow,colorRed,0,H,-5); 
> 
> 
AddColumn(ATRx, "ATRx"); 
> AddColumn(ATR(10), "ATR"); 
> 
AddColumn(WATR, "Weighted ATR"); 
> AddColumn(Ref(ATR(8),-2), "ATR(8) Two 
Days Ago"); 
> AddColumn(ATR(1)*1.125, "Weighted ATR Today"); 
> 
AddColumn(Ref(ATR(1)*1.125,-1), "Weighted ATR Yesterday"); 
> 
AddColumn(twentydayupper, "20 Day Upper"); 
> AddColumn(Sellstop, 
"Sellstop"); 
> AddColumn(SellPrice, "SellPrice"); 
> 
AddColumn(BuyPrice, "BuyPrice"); 
> AddColumn(C, "Close"); 
> 

> Filter=1; 
> Hope this helps
> Thank you
> 
> 
--- On Sat, 28/8/10, JEFF F <je...@...> wrote:
> 
> 
> 
From: JEFF F <je...@...>
> Subject: [amibroker] Formula Help 
Needed
> To: [email protected]
> 
Date: Saturday, 28 August, 2010, 8:53 PM
> 
> 
>   

> 
> 
> 
> If one of the AFL experts out there could 
help me out, it would be greatly appreciated. I do not understand why, in this 
formula the sell price is not being executed according to my stops. Please 
understand this is a work-in-progress and not meant to be a complete formula. I 
put in all the columns to try and trace the calculations. I'm sure it is a 
simple answer, but I seem to be missing it.
> 
> ATRx = 
Optimize("ATR Multiplier", 3, 1, 5, 1); // ATR Multiplier
> WATR = 
((Ref(ATR(8),-2)*8) + (ATR(1)*1.125) + (Ref(ATR(1)*1.125,-1)))/10; //Weighted 
ATR (last 20% has a 12.5% weighting factor)
> twentydayupper = Ref(HHV(H, 
20), -1);
> 
> Sellstop = BuyPrice - WATR*2;
> SellPrice = 
BuyPrice + WATR*ATRx;
> 
> Buy = Cross(C, twentydayupper);
> 
Sell = Cross(Sellstop, C) OR Cross(C, SellPrice);
> 
> 
AddColumn(ATRx, "ATRx");
> AddColumn(ATR(10), "ATR");
> 
AddColumn(WATR, "Weighted ATR");
> AddColumn(Ref(ATR(8),-2), "ATR(8) Two 
Days Ago");
> AddColumn(ATR(1)*1.125, "Weighted ATR Today");
> 
AddColumn(Ref(ATR(1)*1.125,-1), "Weighted ATR Yesterday");
> 
AddColumn(twentydayupper, "20 Day Upper");
> AddColumn(Sellstop, 
"Sellstop");
> AddColumn(SellPrice, "SellPrice");
> 
AddColumn(BuyPrice, "BuyPrice");
> AddColumn(C, "Close");
> 
> 
Filter=1;
> 
> Any help is appreciated
>




    
     

    
    


 



  










Reply via email to