0

我是 amibroker 的新手,上个月刚买的。我正在尝试做一个基本的 ORB 15 分钟突破。我们在 15 分钟的高点买入/在 15 分钟的低点做空(不等待蜡烛收盘)并在一天结束时退出头寸。即 15:15:00 。下面是我可以编写多少代码,但我似乎错过了一些东西,因为它没有给我正确的信号。同样,最先触发的也是buy.sell,直到一天结束。

N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
_SECTION_END();

_N(Title = StrFormat("{{NAME}} | {{INTERVAL}} | {{DATE}} | {{VALUES}}"  ));
SetChartOptions(0,chartShowArrows|chartShowDates);
SetBarFillColor( IIf( C>=O, colorLime, colorRed ) );
Plot( Close, "Price", IIf( C >= O, colorLime, colorRed ), styleCandle );

//plotting of 15min high and low
tn = TimeNum();
orb_st = tn == 091500;
orb_end = tn == 091500;

signalstart = tn == 093000;
signalend = tn == 151000;
signalsquareoff = tn == 151500;

myH = ValueWhen(orb_end , HighestSince(orb_st, H));
myL = ValueWhen(orb_end, LowestSince(orb_st,L));

Plot(myH,"ORBH",colorYellow,styleDots);
Plot(myL,"ORBL",colorWhite,styleDots);


// buy/sell signal on break of 15min high and low

Buy = Cross(H,myH) AND tn < 151500;
Short = Cross(myL,L) AND tn < 151500;

Sell = TimeNum() == signalsquareoff;
Cover = TimeNum() == signalsquareoff;

// removing repeated signals

Buy = ExRem(Buy,Short);
Short = ExRem(Short,Buy);


// Plot Buy and Sell Signal Arrows
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(Short, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Short, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);
PlotShapes(IIf(Short, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);


// backtesting param for points based results
SetPositionSize(1,spsShares);

如果有人可以帮助我指出我在上述代码中犯的错误,那就太棒了。刚刚意识到除了官方的 amibroker 论坛之外,没有任何其他合适的资源可以进行讨论,像我这样的新手可以学习..

谢谢并恭祝安康。做傻事

4

1 回答 1

0
N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
_SECTION_END();

_N(Title = StrFormat("{{NAME}} | {{INTERVAL}} | {{DATE}} | {{VALUES}}"  ));
SetChartOptions(0,chartShowArrows|chartShowDates);
SetBarFillColor( IIf( C>=O, colorLime, colorRed ) );
Plot( Close, "Price", IIf( C >= O, colorLime, colorRed ), styleCandle );
newday=day()!=ref(day(),-1);///// new code
//plotting of 15min high and low
tn = TimeNum();
orb_st = tn == 091500;
orb_end = tn == 091500;

signalstart = tn == 093000;
signalend = tn == 151000;
signalsquareoff = tn == 151500;

myH = ValueWhen(orb_end , HighestSince(orb_st, H));
myL = ValueWhen(orb_end, LowestSince(orb_st,L));

Plot(myH,"ORBH",colorYellow,styleDots);
Plot(myL,"ORBL",colorWhite,styleDots);


// buy/sell signal on break of 15min high and low

Buy = Cross(H,myH) AND tn < 151500;
Short = Cross(myL,L) AND tn < 151500;
buy=buy and sum(buy,barssince(newday))+sum(short,barssince(newday))<=1; //newcode
short=short and sum(buy,barssince(newday))+sum(short,barssince(newday))<=1; //newcode
Sell = TimeNum() == signalsquareoff;
Cover = TimeNum() == signalsquareoff;

// removing repeated signals

Buy = ExRem(Buy,Short);
Short = ExRem(Short,Buy);


// Plot Buy and Sell Signal Arrows
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(Short, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Short, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);
PlotShapes(IIf(Short, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);


// backtesting param for points based results
SetPositionSize(1,spsShares);

试试上面的。我刚刚添加了 3 行代码.. 我在这些行的末尾注释了新代码

于 2020-09-05T19:14:00.083 回答