[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] Re: Optimisation Problems



PureBytes Links

Trading Reference Links

That's true. 

break statement is required, otherwise execution continues
http://www.amibroker.com/guide/keyword/switch.html

Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message ----- 
From: "Mike" <sfclimbers@xxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Saturday, March 15, 2008 10:46 AM
Subject: [amibroker] Re: Optimisation Problems


>I don't have the user guide in front of me. But I would guess that 
> you need to add a "break;" statement to end of each "case" body. 
> Without a break statement, code continues to execute each following 
> case body such that all scenarios will end with the settings set 
> in "case 3".
> 
> Mike
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "Graham Johnson" <grahamj@xxx> 
> wrote:
>>
>> Been bashing my head against the proverbial brick wall for a couple 
>> of days now.
>> 
>> I'm trying to test 3 different exit strategies using the Optiniser.
>> 
>> The Optimiser runs 3 times but gives the same number of trades and 
>> the same profit - should not be possible, so I am obviously missing 
>> something in the logic.
>> 
>> Testing against ASX300 for 2000 - 2007.
>> 
>> See relevant code below.  Any help please.
>> 
>> Graham
>> 
>> vaIsValidSignal = BuyLongTrig == True
>> AND PriceGate == True
>> AND MFGate == True;
>> vaBgColour = IIf(vaIsValidSignal == 0, BkGndColor, colorOrange);
>> 
>> //vEntry = 3; 
>> vEntry = Optimize("Entry Strategy", 1,1, 3, 1);
>> vTime = 1; 
>> //vTime = Optimize("Time Exit Strategy", 1,1, 2, 1);
>> 
>> switch(vEntry) // Entry Strategies
>> {
>> case 1: //Stop entry next bar at signal bar High
>> vaEntryPrice = Ref(High, -1);
>> Buy = Ref(vaIsValidSignal,-1) AND High >= 
>> vaEntryPrice;
>> BuyPrice = Max(Open, vaEntryPrice);
>> case 2: //Stop entry next bar at signal bar Close
>> vaEntryPrice = Ref(Close, -1);
>> Buy = Ref(vaIsValidSignal,-1) AND High >= 
>> vaEntryPrice;
>> BuyPrice = Max(Open, vaEntryPrice);
>> case 3: //Enter at next bar Open
>> vaEntryPrice = Open;
>> Buy = Ref(vaIsValidSignal,-1);
>> BuyPrice = Open;
>> }
>> 
>> Sell = 0;
>> 
>> vaTrailStop = Null;
>> vaSellStop =  0;
>> vaSellTarget = 0;
>> vATRMult = 0;
>> //vATRMult  = Optimize("ATR Multiplier", 0, 0, 2, 0.2);
>> vATRPer = 5;
>> //vATRPer  = Optimize("ATR Period", 5, 5, 20, 5);
>> VEntryBar = 0;
>> vTempStop = 0;
>> vaInitStop = EMA(Open, MAPd) - (vAtrMult * ATR(vATRPer));
>> vTimeStop = 5;
>> //vTimeStop = Optimize("Time Stop", 7, 5, 10, 1);
>> vTrigger = 0;
>> 
>> for(vCnt = 1; vCnt < BarCount; vCnt++)
>> {
>> if(vTempStop == 0
>> AND Buy[vCnt] == 1) // Entry Bar & 0 positions 
>> open
>> {
>> // Position Opened 
>> vTempStop = vaInitStop[vCnt - 1];
>> vEntryBar = vCnt;
>> }
>> else
>> {
>> Buy[vCnt] = 0; // Remove excess Buy signals
>> } // Not Entry Bar
>> 
>> if(vTempStop > 0)
>> {
>> if ((vCnt - vEntryBar) - 1 == vTimeStop) // 
>> need -1 so that stop is adjusted the bar after vTimeStop is reached
>> { // test # Bars Open
>> switch(vTime) // BreakEven/Exit Strategies
>> {
>> case 1: // Move stop to entry price
>> vTempStop = Max
>> (vTempStop, BuyPrice[vEntryBar]);
>> case 2: // Move stop to entry price 
>> if Close > entry price
>> if (Close[vCnt] > 
>> BuyPrice[vEntryBar])
>> {
>> vTempStop = 
>> Max(vTempStop, BuyPrice[vEntryBar]);
>> }
>> } 
>> } // Position Open & not Entry Bar
>> 
>> vTempStop = Max(vaInitStop[vCnt - 1], vTempStop);
>> vaTrailStop[vCnt - 1] = Max(vaTrailStop[vCnt - 1], 
>> vTempStop); 
>> if(Low[vCnt] <= vaTrailStop[vCnt - 1])
>> {
>> Sell[vCnt] = 1;
>> SellPrice[vCnt] = Min(Open[vCnt], vaTrailStop
>> [vCnt - 1]);
>> vTempStop = 0;
>> } 
>> //_TRACE("Bar " + BarIndex() + " Buy " + Buy + " Sell " + Sell + " 
>> Target " + vaTargetVal + " Stop " + vTempStop);
>> } // Position Open
>> } // for
>>
> 
> 
> 
> ------------------------------------
> 
> Please note that this group is for discussion between users only.
> 
> To get support from AmiBroker please send an e-mail directly to 
> SUPPORT {at} amibroker.com
> 
> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> http://www.amibroker.com/devlog/
> 
> For other support material please check also:
> http://www.amibroker.com/support.html
> Yahoo! Groups Links
> 
> 
> 

------------------------------------

Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/