脑系统。交易系统开发和交易 - 页 15

 
jpsdyb:
我注意到离小节结束还有1分钟0秒。

你是用什么来显示这个信息的呢?

谢谢你

没什么,这只是一个指标,它显示的是到收盘时的剩余时间。这里有一个指标,你可以使用它。一些策略,如Woodi's CCI使用到收盘时的剩余时间来开仓。

好吗?

附加的文件:
 

卡米亚尔,非常感谢

也有人知道如何在BrainTrendSig2中添加启用警报? 我试着修改了脚本和元编辑器的编译测试,0个错误和0个警告。但它仍然不能工作,我很困惑为什么。我知道要把启用警报改为1,但问题出在指标本身。它不能正确加载。

谢谢

//+------------------------------------------------------------------+

//| BrainTrend2.mq4 |

//| www.forex-tsd.com |

//| Nick Bilak |

//+------------------------------------------------------------------+

#property copyright "BrainTrading Inc."

#property link "www.forex-tsd.com"

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Blue

#property indicator_color2 Red

//---- input parameters

extern int NumBars=500;

extern int EnableAlerts=0;

extern int SignalID=0;

//---- buffers

double ExtMapBuffer1[];

double ExtMapBuffer2[];

double spread;

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

//---- indicators

SetIndexStyle(0,DRAW_ARROW);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexArrow(0,233);

SetIndexStyle(1,DRAW_ARROW);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexArrow(1,234);

spread=MarketInfo(Symbol(),MODE_SPREAD)*Point;

//----

return(0);

}

//+------------------------------------------------------------------+

//| Custor indicator deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start() {

int counted_bars=IndicatorCounted();

//----

int artp=7;

double dartp=7.0;

double cecf=0.7;

int satb=0;

int Shift=0;

bool river=True;

double Emaxtra=0;

double widcha=0;

double TR=0;

double Values[100];

int glava=0;

double ATR=0;

int J=0;

double Weight=0;

double r=0;

double r1=0;

int p=0;

int Curr=0;

double Range1=0;

double s=2;

double f=10;

double val1=0;

double val2=0;

double h11=0;

double h12=0;

double h13=0;

double const=0;

double orig=0;

double st=0;

double h2=0;

double h1=0;

double h10=0;

double sxs=0;

double sms=0;

double temp=0;

double h5=0;

double r1s=0;

double r2s=0;

double r3s=0;

double r4s=0;

double pt=0;

double pts=0;

double r2=0;

double r3=0;

double r4=0;

double tt=0;

double tsig=0;

if( Bars < NumBars) satb = Bars; else satb = NumBars;

if( Close[satb - 2] > Close[satb - 1]) river = True; else river = False;

Emaxtra = Close[satb - 2];

Shift=satb-3;

while(Shift>=0) {

TR = spread+ High[Shift] - Low[Shift];

if( MathAbs(spread+ High[Shift] - Close[Shift + 1]) > TR ) TR = MathAbs(spread+ High[Shift] - Close[Shift + 1]);

if( MathAbs(Low[Shift] - Close[Shift + 1]) > TR) TR = MathAbs(Low[Shift] - Close[Shift + 1]);

if (Shift == satb - 3 ) {

for(J=0;Shift<=artp-1;J++) {

Values[J] = TR;

}

}

Values[glava] = TR;

ATR = 0;

Weight = artp;

Curr = glava;

for (J = 0;J<=artp - 1;J++) {

ATR += Values[Curr] * Weight;

Weight -= 1.0;

Curr--;

if (Curr == -1) Curr = artp - 1;

}

ATR = 2.0 * ATR / (dartp * (dartp + 1.0));

glava++;

if (glava == artp) glava = 0;

widcha = cecf * ATR;

if (river && Low[Shift] < Emaxtra - widcha) {

river = False;

Emaxtra = spread+ High[Shift];

}

if (!river && spread+ High[Shift] > Emaxtra + widcha) {

river = True;

Emaxtra = Low[Shift];

}

if (river && Low[Shift] > Emaxtra) {

Emaxtra = Low[Shift];

}

if (!river && spread+ High[Shift] < Emaxtra ) {

Emaxtra = spread+ High[Shift];

}

Range1 = iATR(NULL,0,10,Shift);

val1 = 0;

val2 = 0;

if (river) {

if (p != 1) r1 = Low[Shift] - Range1 * s / 3.0;

if (p == 1) r1 = -1.0;

if (r1 > 0) {

val1 = r1;

val2 = 0;

} else {

val1 = 0;

val2 = 0;

}

ExtMapBuffer1[Shift]=val1;

p = 1;

} else {

if (p != 2) r1 = spread+ High[Shift] + Range1 * s / 3.0;

if (p == 2) r1 = -1.0;

if (r1 > 0) {

val1 = 0;

val2 = r1;

} else {

val1 = 0;

val2 = 0;

}

ExtMapBuffer2[Shift]=val2;

p = 2;

Shift--;

}

}

if (EnableAlerts == 1)

{

if (val1 > 0 && tsig != 1)

{

tsig = 1;

// a1 = FileOpen("alert1" + SignalID,";");

Alert("BrainTrend2Sig", "Sell " ,Symbol() ," at ", Close[0] , " S/L " , val1 , " BT1 M" ,Period());

//a1=FileOpen("alert1"+ SignalID,FILE_CSV|FILE_WRITE,';');

// FileWrite(a1,"Sell " ,Symbol() ," at ", Close[0] , " S/L " , val1 , " BT1 M" ,Period());

// FileClose(a1);

}

if (val2 > 0 && tsig != 2)

{

tsig = 2;

Alert("BrainTrend2Sig", "Buy " , Symbol() , " at " ,Close[0] ," S/L " ,val2 ," BT1 M" , Period());

//a1 = FileOpen("alert1" + SignalID,";");

// a1=FileOpen("alert1"+ SignalID,FILE_CSV|FILE_WRITE,';');

// FileWrite(a1,"Buy " , Symbol() , " at " ,Close[0] ," S/L " ,val2 ," BT1 M" , Period());

//FileClose(a1);

}

}

//----

return(0);

}

//+------------------------------------------------------------------+
 

我仍然有一个希望,那就是我们将为这个系统提供EA,用于报警、确认和一切(不是用于交易)。在这种情况下,使用这个系统进行交易将非常容易。我想我们很快就会有。

但现在我在考虑如何在没有M15确认的情况下,在低于H1的时间框架上使用这个系统。

现在我正在看M30图表,希望它能发挥作用。

无论如何,我将从明天开始做前瞻性测试。但我觉得有必要改变这个交易策略 的一些规则。

附加的文件:
1_23.gif  30 kb
2_16.gif  31 kb
3_6.gif  32 kb
4_4.gif  30 kb
 

请找到我想评估的指标和模板。

我仍然希望为这个系统在M15或M30时间框架上的交易找到一些规则。

附加的文件:
indicators.zip  16 kb
bt7_m30.zip  4 kb
 

好吧。

只是想看看它是如何运作的。

规则#1。

在BT1sig和BT2 sig上输入。特别是不应该在同一个柱子上。它应该得到SAR和I-XO指标的确认。我们可以在信号发出后再等一个柱子,等待I-XO的确认。BT1sig和BT2sig应该在信号的同一条柱子上被SAR确认。例如,如果我们有来自BT1sig的买入信号(例如),我们正在寻找SAR。如果在与信号相同的条形图上的SAR是上升趋势,我们要等待BT2sig(例如)。第二个信号也应该被SAR所确认。如果一切正常,我们将等待I-XO的确认(不超过最后一个信号后的1个柱子)。这是最困难的情况。当然,如果我们拥有一切(两个信号和两个确认在同一个柱子上),这是完美的。

我们只考虑到了完整的条形。

最困难的情况我已经描述过了,你可以从图片1中看到它。

退出是在SAR非常简单(图片2)。

这是很简单和灵活的规则。

为什么是1号规则?

因为我不确定我们最终会有这样的规则。每个人都可以建议其他的规则,或者我可以改变这个规则。

附加的文件:
2_17.gif  28 kb
1_24.gif  28 kb
 

从周五早上开始,我们应该有以下情况。

欧元兑美元

在19:30(20/01)买入1.2127,在06:30(23/01)退出1.2233。+106 p.

在10:30 (23/01)买入1.2259,并退出1.2285(订单可能仍在进行)。+26 p.

USDCHF.

在14:30(20/01)卖出1.2820,在07:30(23/01)退出1.2666。+154 p.

在10:30 (23/01)卖出1.2628,退出1.2233 (订单可能仍在开启中)。+54 p.

英镑兑美元

在10:30(20/01)买入1.7583,在05:00(23/01)退出1.7794。+214 p.

在08:30 (23/01)卖出1.7763,在10:30 (23/01)退出1.7798:-35 点。

在10:30 (23/01)买入1.7798并退出1.7866(订单可能仍未完成)。+68 p.

USDJPY.

在16:30(20/01)买入155.32,在00:00(23/01)退出155.14:-18 点。

在02:00 (23/01)卖出114.79,在10:00 (23/01)退出114.78。+1 p.

在10:30(23/01)卖出114.30,在16:00(23/01)退出114.62:-32 点。

总共538 个P。

我认为这个规则#1太灵活了。

可能是。

 

如果有人估计出其他的规则(如果有其他可能的指标),我会很高兴。但我认为这些规则应该是现实的。例如,我根据历史数据计算利润(这当然不好,因为它应该是预先测试),但我把它作为一个机器人(例如EA)完全按照规则计算。我使用历史数据只是为了确定它是否有效。

 

嗨,newdigital

谢谢你的努力,我有一些问题

1.你的系统中的随机指标 的职责是什么?

2.我们应该先得到bt1的信号,然后再得到bt2的信号,还是可以以任何形式出现?

3.填充区到底是什么,我想你的意思是我们不应该在填充区进行交易,好吗?

谢谢

 

你提到bt信号不应该出现在同一个柱子里。就我所知,我们不应该在这种情况下进行交易,你会描述吗?

 
newdigital:
如果有人估计出其他的规则(如果有其他可能的指标),我将非常高兴。但我认为这些规则应该是现实的。例如,我根据历史数据计算利润(这当然不好,因为它应该是前瞻性测试),但我把它作为一个机器人(例如EA)完全按照规则计算。我使用历史数据只是为了确定它是否有效。

我目前正在使用Braintrend2、Stochastics 和2个LSMA-color指标在Eur/Usd 1HR上测试一个新策略。到目前为止,通过历史图表,结果似乎是相当值得的。规则使用起来相当简单。如果有BraintrendSig2的提醒,我可以做更频繁的测试。我将继续测试策略并很快公布结果。