第13课 - 你的第一个专家顾问(第一部分) - 页 5

 
KelchMonteiro:
真的很感谢mladen!

我现在看到了。

我也是这么做的。看看吧。

for_a_new_life-1.ex4

for_a_new_life-1_1.mq4

我正在测试我的版本,也将测试你的版本。

如果这个指标是正确的,我们做了一些伟大的事情来捕捉反转点。

这是因为两条移动平均线之差除以2倍力,可以更敏感地显示价格在趋势中的反转。用另一个边界指标测试它,我想你会喜欢的。

一些图片。

我很高兴,因为这是我对论坛的第一次贡献。没有你们的帮助,我是做不到的。

非常感谢Mladen!

凯尔奇

只做了一个改变:改变方向。这样看来,它显示的是一个更合理的数值。也可以这样试试

for_a_new_life-1.01.mq4

附加的文件:
 

嗨,Mladen。

我从icustom制作了EA,编译后没有错误和警告,但我在回测时 完全没有OP?

我可以把我的EA发布在这个主题上吗,我想让你帮助我解决这个问题。

谢谢。

致敬

 
Dova:
嗨,Mladen。

我从icustom制作了EA,编译后没有错误和警告,但我在回测时完全没有OP?

我可以把我的EA发布在这个主题上吗?我希望你能帮助我解决这个问题。

谢谢。

致以最崇高的敬意

多瓦

把它贴出来,这样就会有人看一下了

 
mladen:
凯尔奇

只做了一个改变:改变它的方向。似乎这样显示的数值更有逻辑性。也试一下这种方式

for_a_new_life-1.01.mq4

谢谢mladen!

 

这是我的试用版...

这个EA在编译时没有错误或警告,但在BT时没有OP。

我希望这个EA能从之前的OP中逆转。

如果位置已经是买入,那么下一个蜡烛的卖出箭头会出现,自动将位置从买入转为卖出,反之亦然。

也可以添加止损。

对不起,我的英语不好

pfi.ex4ea_pfi.mq4

谢谢你

附加的文件:
pfi.ex4  6 kb
ea_pfi.mq4  4 kb
 
Dova:
这里是我的试用版...

这个EA在编译时没有错误或警告,但在BT时没有OP。

我希望这个EA能从之前的OP中逆转。

如果位置已经是买入,那么下一个蜡烛的卖出箭头会出现,自动将位置从买入转为卖出,反之亦然。

也可以添加止损。

对不起,我的英语不好

pfi.ex4ea_pfi.mq4

谢谢你

为了让阅读该帖子的人更清楚:"从OP逆转 "或 "BT时没有OP "到底是什么意思?

 
mladen:
为了让阅读该帖子的人更清楚:"从OP逆转 "或 "BT时没有OP "到底是什么意思?

我是说OP=开仓,BT=回测

在我回测之后,没有开仓。

当已经有开仓买入,然后下一个蜡烛卖出箭头/信号出现,自动关闭多头头寸,打开空头头寸,反之亦然(自动反转头寸)。

我希望我的解释能让你明白。

谢谢你

 

向所有的人问好 ....

请原谅,如果错误的地方,因为我的新成员。

请其支持大师的编码。

要将这个指标编码到EA中。

我想让EA能够按照我的要求工作,即。

1.当价格触及TL1线时自动打开买入。

2.当价格触及TL2线时自动打开卖出

3.当价格超过TL2线时自动打开买入

4.当价格超过TL1线时自动卖出。

5.当价格触及TL2线时,关闭自动买入,直接打开卖出。

6.当价格触及TL1线时自动卖出,直接开盘买入

7.Nomor 3和4手动关闭(没有TrailingStop)。

8.SL 50点,手数为0.1。

9.所有货币对的时间框架为H4。

非常感谢你

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

/ / | SHI_Channel_true.mq4 |

/ / | Copyright © 2004 , Shurka & Kevin !

/ / | |

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

#属性版权 " Copyright © 2004 , Shurka & Kevin "

#属性链接" "

/ / ----

#属性 indicator_chart_window

# property indicator_buffers 1

#属性 indicator_color1 红色

ExtMapBuffer1 double [ ] ;

/ / ---- 输入参数

extern int AllBars = 240 ;

BarsForFract extern int = 0 ;

CurrentBar int = 0 ;

double Step = 0 。

int B1 = -1 , B2 = -1 。

UpDown int = 0 。

双P1 = 0 , P2 = 0 , PP = 0 。

int i = 0 , AB = 300 , BFF = 0 。

ishift int = 0 。

双重iprice = 0 。

数据时间 T1 , T2 ;

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

/ / | 自定义指标初始化函数 |

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

int init ( )

{

/ / ---- 指标

SetIndexStyle ( 0 , DRAW_ARROW ) 。

SetIndexArrow ( 0 , 164 ) 。

SetIndexBuffer ( 0 , ExtMapBuffer1 ) 。

SetIndexEmptyValue ( 0 , 0.0 ) 。

/ / ----

返回 ( 0 ) 。

}

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

/ / |Custor指示器函数的去初始化 |

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

deinit int ( )

{

ObjectDelete ( " TL1 " ) 。

ObjectDelete ( " TL2 " ) 。

ObjectDelete ( " MIDL " ) 。

评论 ( " " ) 。

/ / ----

返回 ( 0 ) 。

}

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

/ / | |

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

DelObj void ( )

{

ObjectDelete ( " TL1 " ) 。

ObjectDelete ( " TL2 " ) 。

ObjectDelete ( " MIDL " ) ;

}

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

/ / | 自定义指标迭代函数 |

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

int start ( )

{

IndicatorCounted counted_bars = int ( ) 。

/ / ----

如果 ( ( AllBars == 0 ) | | ( Bars < AllBars ) )

AB = Bars ;

else AB = AllBars ; / / AB - êîëè ÷ ÷ åñòâî Ian èòûâàåìûõ áàðîâ

如果 ( BarsForFract > 0 )

BFF = BarsForFract ;

否则

switch ( Period ( ) )

{

case 1 : BFF = 12 ; break;

case 5 : BFF = 48 ; break;

case 15 : BFF = 24 ; break;

case 30 : BFF = 24 ; break;

case 60 : BFF = 12 ; break;

case 240 :BFF = 15 ; break;

case 1440:BFF = 10; break;

case 10080 : BFF = 6 ; break;

默认:DelObj ( ), return ( -1 ) ; break;

}

CurrentBar = 2 ; / / ñ ÷ ñ òðåòüåãî Suspected èòàåì , ÷ òîáû ôðàêòàë " çàêðåïèñÿ

B1 = -1 ;

B2 = -1 ;

UpDown = 0 ;

while ( ( B1 == -1 ) | | ( B2 == -1 ) ) && ( CurrentBar < AB ) )

{

/ / UpDown = 1 ÷ eo CIA ïåðâûé ôðàêòàë íàéäåí ñâåðõó , UpDown = -1 ÷ eo CIA ïåðâûé ôðàêòàë

/ / íàéäåí ñíèçó , CIA UpDown = 0÷¸ AU EO ôðàêòàë he íàéäåí .

/ / A1 a2 è - ÿ áàðîâ íîìåðà ôðàêòàëìè , ÷ ADAC IEO òðîèì îîðíóþ ëèíèþ .

/ / È D1 D2 - ÷ öåíû ñîîòâåòâåíî ADAC êîîðûå áóäåì ëèíèþ ïðîâîäèòü.

如果 ( ( UpDown < 1 ) && ( CurrentBar == Lowest ( Symbol ( ) , Period ( ) , MODE_LOW , BFF * 2 + 1 ,

当前条形图-BFF )))

{

如果 ( UpDown == 0 )

{

UpDown = -1 。

B1 = CurrentBar ;

P1 = Low [ B1 ] ;

}

否则

{

B2 = CurrentBar ;

P2 = Low [ B2 ] ;

}

}

如果 ( ( UpDown > -1 ) && ( CurrentBar == Highest ( Symbol ( ) , Period ( ) , MODE_HIGH , BFF * 2 + 1 ,

当前条形图 - BFF ))

{

如果 ( UpDown == 0 )

{

UpDown = 1 。

B1 = CurrentBar ;

P1 = High [ B1 ] ;

}

否则

{

B2 = CurrentBar ;

P2 = High [ B2 ] ;

}

}

CurrentBar + + ;

}

如果 ( ( B1 == -1 ) | | ( B2 == -1 ) )

{

DelObj ( ) ;

返回 ( -1 ) 。

}/ / Eo ÷ CIA he íàøëè ôðàêòàëâ ñðåäè 300 áàðîâ 8-)

步骤 = ( P2 - P1 ) / ( B2 - B1 ) / / Au÷ èñëèëè OAA , åñëè ïîëîæèòåëíûé II , OI êàíàë íèñîäÿùèé

P1 = P1 - B1 * 步骤。

B1 = 0 ; / / 穽底AAD = 0 ; / / 穽底AAD = 0。

/ / À ÷ eo Oi òåïåðü îïðíóþ ïðîòâîîëæíîé ëèíèè êàíàëà .

ishift = 0 ;

iprice = 0 ;

如果 ( UpDown == 1 )

{

PP = Low [ 2 ] - 2 * Step ;

for ( i = 3 ; i < = B2 ; i + + )

{

如果 ( Low [ i ] < PP + Step * i )

PP = Low [ i ] - i * Step ;

}

如果( Low [ 0 ] < PP )

{

ishift = 0 ;

iprice = PP ;

}

如果 ( Low [ 1 ] < PP + Step )

{

ishift = 1 ;

iprice = PP + Step ;

}

如果 ( 高位 [ 0 ] > P1 )

{

ishift = 0 ;

iprice = P1 ;

}

if ( High [ 1 ] > P1 + Step )

{

ishift = 1 ;

iprice = P1 + Step ;

}

}

否则

{

PP = High [ 2 ] - 2 * Step ;

for (i = 3 ; i < = B2 ; i + + )

{

如果 ( High [ i ] > PP + Step * i )

PP = High [ i ] - i * Step ;

}

如果( Low [ 0 ] < P1 )

{

ishift = 0 ;

iprice = P1 ;

}

如果 ( Low [ 1 ] < P1 + Step )

{

ishift = 1 ;

iprice = P1 + Step ;

}

如果 ( 高位 [ 0 ] > PP )

{

ishift = 0 ;

iprice = PP ;

}

if ( High [ 1 ] > PP + Step )

{

ishift = 1 ;

iprice = PP + Step ;

}

}

/ / Òåïåðü ïåðå ñàâèì êîíå ÷ è íóþ öåíó he AAD AA , ÷ òîáû ëèíè êàíàëà ðèñîâàëèñü ïîäëííåå

P2 = P1 + AB * Step ;

T1 = 时间 [ B1 ] 。

T2 = 时间 [ AB ] 。

// Åñëè he áûëî ïðåñå ÷ åíèÿ êàíàëà , oi 0 , EIA ÷ å 襦轵 .

if ( iprice ! = 0 )

ExtMapBuffer1 [ ishift ] = iprice ;

DelObj ( ) ;

ObjectCreate ( " TL1 " , OBJ_TREND , 0 , T2 , PP + Step * AB , T1 , PP ) 。

ObjectSet ( " TL1 " , OBJPROP_COLOR , Lime ) 。

ObjectSet ( " TL1 " , OBJPROP_WIDTH , 2 ) 。

ObjectSet ( " TL1 " , OBJPROP_STYLE , STYLE_SOLID ) 。

ObjectCreate ( " TL2 " , OBJ_TREND , 0 , T2 , P2 , T1 , P1 ) 。

ObjectSet ( " TL2 " , OBJPROP_COLOR , White ) 。

ObjectSet ( " TL2 " , OBJPROP_WIDTH , 2 ) 。

ObjectSet ( " TL2 " , OBJPROP_STYLE , STYLE_SOLID ) 。

ObjectCreate ( " MIDL " , OBJ_TREND , 0 , T2 , ( P2 + PP + Step * AB ) / 2 , T1 , ( P1 + PP ) / 2 ) 。

ObjectSet ( " MIDL " , OBJPROP_COLOR , Yellow ) 。

ObjectSet ( " MIDL " , OBJPROP_WIDTH , 1 ) 。

ObjectSet ( " MIDL " , OBJPROP_STYLE , STYLE_DOT ) 。

注释 ( " 通道尺寸 = " , DoubleToStr ( MathAbs ( PP - P1 ) / Point , 0 ), " 斜率 = " 。

DoubleToStr ( - Step / Point , 2 ))。

/ / ----

返回 ( 0 ) 。

}

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

 
djiwenk:
向大家问好 ....

请原谅,如果错误的地方,因为我的新成员。

请其支持大师的编码。

要将这个指标编码到EA中。

如果有了这个指标,EA就能按我的要求工作,即。

1.当价格触及TL1线时自动打开买入。

2.当价格触及TL2线时自动打开卖出

3.当价格超过TL2线时自动打开买入

4.当价格超过TL1线时自动卖出。

5.当价格触及TL2线时,关闭自动买入,直接打开卖出。

6.当价格触及TL1线时自动卖出,直接开盘买入

7.Nomor 3和4手动关闭(没有TrailingStop)。

8.SL 50点,手数为0.1。

9.所有货币对的时间框架为H4。

非常感谢你

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

/ / | SHI_Channel_true.mq4 |

/ / | Copyright © 2004 , Shurka & Kevin !

/ / | |

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

#属性版权 " Copyright © 2004 , Shurka & Kevin "

#属性链接" "

/ / ----

# 属性 indicator_chart_window

# property indicator_buffers 1

#属性 indicator_color1 红色

ExtMapBuffer1 double [ ] ;

/ / ---- 输入参数

extern int AllBars = 240 ;

BarsForFract extern int = 0 ;

CurrentBar int = 0 ;

double Step = 0 。

int B1 = -1 , B2 = -1 。

UpDown int = 0 。

双P1 = 0 , P2 = 0 , PP = 0 。

int i = 0 , AB = 300 , BFF = 0 。

ishift int = 0 。

双重iprice = 0 。

数据时间 T1 , T2 ;

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

/ / | 自定义指标初始化函数 |

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

int init ( )

{

/ / ---- 指标

SetIndexStyle ( 0 , DRAW_ARROW ) 。

SetIndexArrow ( 0 , 164 ) 。

SetIndexBuffer ( 0 , ExtMapBuffer1 ) 。

SetIndexEmptyValue ( 0 , 0.0 ) 。

/ / ----

返回 ( 0 ) 。

}

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

/ / |Custor指示器函数的去初始化 |

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

deinit int ( )

{

ObjectDelete ( " TL1 " ) 。

ObjectDelete ( " TL2 " ) 。

ObjectDelete ( " MIDL " ) 。

评论 ( " " ) 。

/ / ----

返回 ( 0 ) 。

}

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

/ / | |

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

DelObj void ( )

{

ObjectDelete ( " TL1 " ) 。

ObjectDelete ( " TL2 " ) 。

ObjectDelete ( " MIDL " ) ;

}

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

/ / | 自定义指标迭代函数 |

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

int start ( )

{

IndicatorCounted counted_bars = int ( ) 。

/ / ----

如果 ( ( AllBars == 0 ) | | ( Bars < AllBars ) )

AB = Bars ;

else AB = AllBars ; / / AB - êîëè ÷ ÷ åñòâî Ian èòûâàåìûõ áàðîâ

如果 ( BarsForFract > 0 )

BFF = BarsForFract ;

否则

switch ( Period ( ) )

{

case 1 : BFF = 12 ; break;

case 5 : BFF = 48 ; break;

case 15 : BFF = 24 ; break;

case 30 : BFF = 24 ; break;

case 60 : BFF = 12 ; break;

case 240 :BFF = 15 ; break;

case 1440:BFF = 10; break;

case 10080 : BFF = 6 ; break;

默认:DelObj ( ), return ( -1 ) ; break;

}

CurrentBar = 2 ; / / ñ ÷ ñ òðåòüåãî Suspected èòàåì , ÷ òîáû ôðàêòàë " çàêðåïèñÿ

B1 = -1 ;

B2 = -1 ;

UpDown = 0 ;

while ( ( B1 == -1 ) | | ( B2 == -1 ) ) && ( CurrentBar < AB ) )

{

/ / UpDown = 1 ÷ eo CIA ïåðâûé ôðàêòàë íàéäåí ñâåðõó , UpDown = -1 ÷ eo CIA ïåðâûé ôðàêòàë

/ / íàéäåí ñíèçó , CIA UpDown = 0÷¸ AU EO ôðàêòàë he íàéäåí .

/ / A1 a2 è - ÿ áàðîâ íîìåðà ôðàêòàëìè , ÷ ADAC IEO òðîèì îîðíóþ ëèíèþ .

/ / È D1 D2 - ÷ öåíû ñîîòâåòâåíî ADAC êîîðûå áóäåì ëèíèþ ïðîâîäèòü.

如果 ( ( UpDown < 1 ) && ( CurrentBar == Lowest ( Symbol ( ) , Period ( ) , MODE_LOW , BFF * 2 + 1 ,

当前条形图-BFF )))

{

如果 ( UpDown == 0 )

{

UpDown = -1 。

B1 = CurrentBar ;

P1 = Low [ B1 ] ;

}

否则

{

B2 = CurrentBar ;

P2 = Low [ B2 ] ;

}

}

如果 ( ( UpDown > -1 ) && ( CurrentBar == Highest ( Symbol ( ) , Period ( ) , MODE_HIGH , BFF * 2 + 1 ,

当前条形图 - BFF ))

{

如果 ( UpDown == 0 )

{

UpDown = 1 。

B1 = CurrentBar ;

P1 = High [ B1 ] ;

}

否则

{

B2 = CurrentBar ;

P2 = High [ B2 ] ;

}

}

CurrentBar + + ;

}

如果 ( ( B1 == -1 ) | | ( B2 == -1 ) )

{

DelObj ( ) ;

返回 ( -1 ) 。

}/ / Eo ÷ CIA he íàøëè ôðàêòàëâ ñðåäè 300 áàðîâ 8-)

步骤 = ( P2 - P1 ) / ( B2 - B1 ) / / Au÷ èñëèëè OAA , åñëè ïîëîæèòåëíûé II , OI êàíàë íèñîäÿùèé

P1 = P1 - B1 * 步骤。

B1 = 0 ; / / 穽底AAD = 0 ; / / 穽底AAD = 0。

/ / À ÷ eo Oi òåïåðü îïðíóþ ïðîòâîîëæíîé ëèíèè êàíàëà .

ishift = 0 ;

iprice = 0 ;

如果 ( UpDown == 1 )

{

PP = Low [ 2 ] - 2 * Step ;

for ( i = 3 ; i < = B2 ; i + + )

{

如果 ( Low [ i ] < PP + Step * i )

PP = Low [ i ] - i * Step ;

}

如果( Low [ 0 ] < PP )

{

ishift = 0 ;

iprice = PP ;

}

如果 ( Low [ 1 ] < PP + Step )

{

ishift = 1 ;

iprice = PP + Step ;

}

如果 ( 高位 [ 0 ] > P1 )

{

ishift = 0 ;

iprice = P1 ;

}

if ( High [ 1 ] > P1 + Step )

{

ishift = 1 ;

iprice = P1 + Step ;

}

}

否则

{

PP = High [ 2 ] - 2 * Step ;

for (i = 3 ; i < = B2 ; i + + )

{

如果 ( High [ i ] > PP + Step * i )

PP = High [ i ] - i * Step ;

}

如果( Low [ 0 ] < P1 )

{

ishift = 0 ;

iprice = P1 ;

}

如果 ( Low [ 1 ] < P1 + Step )

{

ishift = 1 ;

iprice = P1 + Step ;

}

如果 ( 高位 [ 0 ] > PP )

{

ishift = 0 ;

iprice = PP ;

}

if ( High [ 1 ] > PP + Step )

{

ishift = 1 ;

iprice = PP + Step ;

}

}

/ / Òåïåðü ïåðå ñàâèì êîíå ÷ è íóþ öåíó he AAD AA , ÷ òîáû ëèíè êàíàëà ðèñîâàëèñü ïîäëèíå

P2 = P1 + AB * Step ;

T1 = 时间 [ B1 ] 。

T2 = 时间 [ AB ] 。

// Åñëè he áûëî ïðåñå ÷ åíèÿ êàíàëà , oi 0 , EIA ÷ å 襦轵 .

if ( iprice ! = 0 )

ExtMapBuffer1 [ ishift ] = iprice ;

DelObj ( ) ;

ObjectCreate ( " TL1 " , OBJ_TREND , 0 , T2 , PP + Step * AB , T1 , PP ) 。

ObjectSet ( " TL1 " , OBJPROP_COLOR , Lime ) 。

ObjectSet ( " TL1 " , OBJPROP_WIDTH , 2 ) 。

ObjectSet ( " TL1 " , OBJPROP_STYLE , STYLE_SOLID ) 。

ObjectCreate ( " TL2 " , OBJ_TREND , 0 , T2 , P2 , T1 , P1 ) 。

ObjectSet ( " TL2 " , OBJPROP_COLOR , White ) 。

ObjectSet ( " TL2 " , OBJPROP_WIDTH , 2 ) 。

ObjectSet ( " TL2 " , OBJPROP_STYLE , STYLE_SOLID ) 。

ObjectCreate ( " MIDL " , OBJ_TREND , 0 , T2 , ( P2 + PP + Step * AB ) / 2 , T1 , ( P1 + PP ) / 2 ) 。

ObjectSet ( " MIDL " , OBJPROP_COLOR , Yellow ) 。

ObjectSet ( " MIDL " , OBJPROP_WIDTH , 1 ) 。

ObjectSet ( " MIDL " , OBJPROP_STYLE , STYLE_DOT ) 。

注释 ( " 通道尺寸 = " , DoubleToStr ( MathAbs ( PP - P1 ) / Point , 0 ), " 斜率 = " 。

DoubleToStr ( - Step / Point , 2 ))。

/ / ----

返回 ( 0 ) 。

}

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

djiwenk

你知道shi通道一直在变化(随着当前价格的变化 shi通道也会变化)?

 

创作电子书

创建你自己的EA

附加的文件:
eaprog.pdf  1296 kb