Help to code exit signal only if buy or sell generated previously.

#1
HellO Experts,

I am new to Amibroker, I have learnt a lot from you all. I would like to thank you all for your help and support.
I have one difficulty in coding the exit system in my AFL.. I kindly request everone of you here to try to fix me this. Let me post the code where I struggle..

Exitbuy = Ref( High, -1 ) == exitbu;
Exitsell = Ref( Low , -1 ) == exitse;
BUY = Buycondition AND timeOK;
Sell = Sellcondition AND timeOK;
Cover = Exitsell AND timeOK;
Short = Exitbuy AND timeOK;
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
Cover = ExRem(Cover,Short);
Short = ExRem(Short,Cover);
Exitbuy = ExRem(Exitbuy,Exitsell);
Exitsell = ExRem(Exitsell,Exitbuy);



In the above code, I get perfect entry signals (Buy and Sell) and everything works fine... But for exit singals (Cover and Short) I get it even if I dont have entry signals...
I would like to get exit signal of Buy (Short) only if the previous signal is Buy and exit signal of Sell (Cover) only if the previous signal is Sell. I dont want Cover signal (Exit for sell) for buy entry and vice versa.

NOTE: Its beccause the exit signal condition is met at many places. I want it to generate signals only if there is buy or sell signal.

I hope, I have explained it properly.. Please somebody help me... Thanks...
 

Attachments

lemondew

Well-Known Member
#2
Buy opens long position
Sell closes an existing long position
Short opens short position
Cover closes an existing short position

HellO Experts,

I am new to Amibroker, I have learnt a lot from you all. I would like to thank you all for your help and support.
I have one difficulty in coding the exit system in my AFL.. I kindly request everone of you here to try to fix me this. Let me post the code where I struggle..

Exitbuy = Ref( High, -1 ) == exitbu;
Exitsell = Ref( Low , -1 ) == exitse;
BUY = Buycondition AND timeOK;
Sell = Sellcondition AND timeOK;
Cover = Exitsell AND timeOK;
Short = Exitbuy AND timeOK;
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
Cover = ExRem(Cover,Short);
Short = ExRem(Short,Cover);
Exitbuy = ExRem(Exitbuy,Exitsell);
Exitsell = ExRem(Exitsell,Exitbuy);



In the above code, I get perfect entry signals (Buy and Sell) and everything works fine... But for exit singals (Cover and Short) I get it even if I dont have entry signals...
I would like to get exit signal of Buy (Short) only if the previous signal is Buy and exit signal of Sell (Cover) only if the previous signal is Sell. I dont want Cover signal (Exit for sell) for buy entry and vice versa.

NOTE: Its beccause the exit signal condition is met at many places. I want it to generate signals only if there is buy or sell signal.

I hope, I have explained it properly.. Please somebody help me... Thanks...
 
#3
Thank you very much for your quick reply.. If I change like that will it solve the problem. Anyhow thanks for your suggestion, I will change it right away. But please help me how we can fix the problem if your solution won't work.
 

lemondew

Well-Known Member
#4
You cant solve a problem before it occurs. You can never know whether a solution will work without applying it and seeing.

By the way can you tell me in advance what will you do if the code that you have written gives you negative returns. Or the next code that you have thought about also gives you negative returns
 
#5
You cant solve a problem before it occurs. You can never know whether a solution will work without applying it and seeing.

By the way can you tell me in advance what will you do if the code that you have written gives you negative returns. Or the next code that you have thought about also gives you negative returns


I understand that bro. I thought I may get late reply so I asked immediately to know any other options if that fails.. Anyway just give me few minutes. I will change it as per your idea and check it. I somehow need solution brother.
 
#6
You cant solve a problem before it occurs. You can never know whether a solution will work without applying it and seeing.

By the way can you tell me in advance what will you do if the code that you have written gives you negative returns. Or the next code that you have thought about also gives you negative returns
Thank you very much Sir.... Now, its okay... Still getting few signals, but I feel its okay... Thanks from bottom of my heart... Will seek for your help if needed after few tests...
 
#7
Hi sir im wont ask you cant fix one afl for Amibroker because work only to BTC if im put pairs show me error?
Code:
// Modified Renko Chart with custom date axis
// and high/low winks
// Loosely based on Renko chart formula by G. Kavanagh
// from AmBroker on-line formula library (id=521)
// Modifications & fixes TJ 2014
function FillRun( dir, num, changedir )
{
    global i, j, modified, dt, RKC, RKO, RKD, RKH, RKL;

    for( x = 1; x <= num AND j < BarCount - 1; x++ )
    {
        j++;
        extra = ( changedir AND x == 1 ) * dir;
        RKC[ j ] = RKC[ j - 1 ] + dir + extra;
        RKO[ j ] = RKC[ j - 1 ] + IIf( modified, 0, extra );
        RKD[ j ] = dt[ i ];
        RKH[ j ] = High[ i - 1 ];
        RKL[ j ] = Low[ i - 1 ];
    }
}
SetBarsRequired( sbrAll, sbrAll );
Brick = Param( "Brick Size", 0.001, 0.0001, 1.00, 0.001 );
reverse = 2;
intra = ParamToggle( "Intraday", "No|Yes", 0 );
modified = ParamToggle( "Modified", "No|Yes", 0 );
// Convert the closing price to rising and falling rounded bricks
CF = ceil( C / Brick );
CR = floor( C / Brick );
// initialize first element
j = 0;
RKC[j] = CF[0];
RKO[j] = CF[0] + 1;
RKD = 0;
RKH = 0;
RKL = 0;
dt = IIf( intra, floor( TimeNum() / 100 ), DateNum() );
dir = -1; // 1 is up, -1 is down

// Loop to produce the Renko values in number of bricks
for( i = 1; i < BarCount - 1; i++ )
{
    if( j >= BarCount )
        break; // no more room -> finish

    if( CF[i] <= RKC[j] - 1 AND dir < 0 )  // Continue down
    {
        num = RKC[j] - CF[i];
        FillRun( dir, num, False );
    }
    else
        if( CR[i] >= RKC[j] + Reverse AND dir < 0 )  // Change down to up
        {
            num = CR[i] - RKC[j];
            dir = 1;
            FillRun( dir, num, True );
        }
        else
            if( CR[i] >= RKC[j] + 1 AND dir > 0 )  // Continue Up
            {
                num = CR[i] - RKC[j];
                FillRun( dir, num, False );
            }
            else
                if( CF[i] <= RKC[j] - Reverse AND dir > 0 )  // Change up to down
                {
                    num = RKC[j] - CF[i];
                    dir = -1;
                    FillRun( dir, num, True );
                }
}

// move the chart to right end of chart space, ie last brick on last bar position
delta =  BarCount - 1 - j;
RKC = Ref( RKC, -delta );
RKO = Ref( RKO, -delta );
RKD = Ref( RKD, -delta );
RKH = Ref( RKH, -delta );
RKL = Ref( RKL, -delta );
C = RKC * Brick;
O = RKO * Brick;
H = IIf( modified, RKH, Max( C, O ) );
L = IIf( modified, RKL, Min( C, O ) );
Plot( C, "", IIf( C > O, colorGreen, colorRed ), styleCandle );
m1 = MA( ( C + H + L ) / 3, 8 );
m2 = MA( C, 8 );
Plot( m1, "SMA Typ", colorBlue );
Plot( m2, "SMA Renko", colorOrange );
Cover = Cross( m2, m1 );
Sell = Cross( m1, m2 );
Short = Sell AND C < O;
Buy = Cover AND C > O;
PlotShapes( shapeUpArrow * Buy, colorGreen, 0, m1 );
PlotShapes( shapeDownArrow * Sell, colorRed, 0, m1 );
PlotShapes( shapeHollowUpArrow * Cover, colorGreen, 0, m1, -25 );
PlotShapes( shapeHollowDownArrow * Short, colorRed, 0, m1, -25 );
color = IIf( Flip( Buy, Sell ), ColorRGB( 220, 255, 220 ),IIf( Flip( Short, Cover ), ColorRGB( 255, 220, 220 ), colorWhite ) );
Plot( 1, "", color, styleArea | styleOwnScale, 0, 1, 0, -1 );
xnum = floor( RKD / 1000 );
XChange = IIf( xnum != Ref( xnum, -1 ), 1, Null );
Plot( XChange, "", colorGrey50, styleHistogram | styleOwnScale, 0, 1 );
// Draw renko-date axis
MonthNames = "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec";
fvb = FirstVisibleValue( BarIndex() );
lvb = LastVisibleValue( BarIndex() );

for( i = fvb; i < lvb; i++ )
{
    if( XChange[ i ] )
    {
        if( intra )
            datetext = StrFormat( "%02gh", floor( RKD[ i ] / 100 ) );
        else
            if( ( xnum[ i ] % 100 ) == 1 )
                datetext = StrFormat( "%04.0f", 1900 + ( xnum[ i ] / 100 ) );
            else
                datetext = StrExtract( MonthNames, ( xnum[ i ] % 100 ) - 1 );

        PlotText( datetext  , i, LowestVisibleValue( Low ), colorGrey50, colorWhite, -20 );
    }
}

Title = Name() + StrFormat( " - 20%06.0f", RKD % 1000000 ) + " - Renko Chart : Last Value = " + RKC * Brick + " H: " + RKH + " L: " + RKL + ", Brick Size = " + Brick;
GraphXSpace = 5;
 

Attachments

Similar threads