Amibroker if condition gives error although numeric argument.

kingsmasher1

Well-Known Member
#1
_SECTION_BEGIN("EMA buy sell Signal");

buysignal = IIf(Cross(MA(Close, 3), EMA(Close,8)), 1, 0);
sellsignal = IIf(Cross(EMA(Close, 8), MA(Close,3)), 1, 0);

if(buysignal == 1)
{
PlotShapes(shapeSquare,colorGreen,o,L,Offset=-40);
PlotShapes(shapeSquare,colorLime,0,L,Offset=-50);
PlotShapes(shapeUpArrow,colorWhite,0,L,Offset=-45);
}

if(sellsignal = 1)
{
PlotShapes(shapeSquare,colorRed,o,L,Offset=40);
PlotShapes(shapeSquare,shapeNone,colorOrange,0,L,Offset=50);
PlotShapes(shapeDownArrow,colorWhite,0,L,Offset=-45);
}

_SECTION_END();

The if condition here, gives me an error: Condition in iff while for has to be numeric. I believe, the vaiables buysignal, sellsignal stores 1 or 0 as per the conditional iff:

buysignal = IIf(Cross(MA(Close, 3), EMA(Close,8)), 1, 0);
sellsignal = IIf(Cross(EMA(Close, 8), SMA(Close,3)), 1, 0);

What am i missing? Please help
 

kingsmasher1

Well-Known Member
#2
Seems like this works:
Although needs a lot of changes.

_SECTION_BEGIN("EMA buy sell Signal");

buysignal = Cross(MA(Close, 3), EMA(Close,8));
sellsignal = Cross(EMA(Close, 8), MA(Close,3));

if(buysignal[BarCount-1] == 1)
{
PlotShapes(shapeSquare,colorGreen,o,L,Offset=-40);
PlotShapes(shapeSquare,colorLime,0,L,Offset=-50);
PlotShapes(shapeUpArrow,colorWhite,0,L,Offset=-45);
}

if(sellsignal[BarCount-1] == 1)
{
PlotShapes(shapeSquare,colorRed,o,L,Offset=40);
PlotShapes(shapeSquare,shapeNone,colorOrange,0,L,Offset=50);
PlotShapes(shapeDownArrow,colorWhite,0,L,Offset=-45);
}

_SECTION_END();
 

kingsmasher1

Well-Known Member
#3
I modified it and much better now, but for some reason this does not work on Shorts:
Please help. (Applied it on Gail 12th April and saw does not detect the morning short where there was an EMA crossover)

Code:
GraphXSpace = 15;
SetChartOptions(0,chartShowArrows|chartShowDates);

SetTradeDelays(1,1,1,1);
//SetPositionSize(100,spsShares);

FirstTradeTime = 091500;				// Earliest time to take a trade
LastTradeTime = 151500;					// Latest time to take new trades
ExitAllPositionsTime = 151500;		// Exit all trades

//parameters

//10min - 3,50
//15min - 2,36

P = ParamField("Price field",-1);
per1 = Param("EMA1",3,1,20,1);
per2 = Param("EMA2",8,1,50,1);


//Buy = Cross(EMA(C,per1),EMA(C,per2)) AND (TimeNum() >= FirstTradeTime AND TimeNum() <= LastTradeTime ) AND Volume >= MA(Volume,5);
//Sell= Cross(EMA(C,per2),EMA(C,per1)) OR  TimeNum() >= ExitAllPositionsTime AND Volume >= MA(Volume,5);

Buy = Cross(EMA(C,per1),EMA(C,per2)) AND (TimeNum() >= FirstTradeTime AND TimeNum() <= LastTradeTime );
Sell= Cross(EMA(C,per2),EMA(C,per1)) OR  TimeNum() >= ExitAllPositionsTime;

Buy=ExRem(Buy,Sell); 
Sell=ExRem(Sell,Buy);

Short=Sell AND (TimeNum() >= FirstTradeTime AND TimeNum() <= LastTradeTime );
Cover=Buy OR 	 TimeNum() >= ExitAllPositionsTime;

//Cover=ExRem(Cover,Short); 
//Short=ExRem(Short,Cover);

Plot( EMA( P, per1 ), "EMA1", ParamColor( "Color1", colorCycle ), ParamStyle("Style") ); 
Plot( EMA( P, per2 ), "EMA2", ParamColor( "Color2", colorCycle ), ParamStyle("Style") ); 

PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);                      
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45); 
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);                      
PlotShapes(IIf(Sell, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);


PlotShapes(IIf(TimeNum() >= ExitAllPositionsTime,5,-1e10),colorGreen,0 ,H,5);
PlotShapes(IIf(TimeNum() >= ExitAllPositionsTime,6,-1e10),colorRed,0,L,5);
 
Last edited:

Similar threads