Урок 13 - Ваш первый советник (часть 1) - страница 5

 
KelchMonteiro:
Большое спасибо, Младен!

Я видел это сейчас.

Я сделал то же самое. Взгляните:

for_a_new_life-1.ex4

for_a_new_life-1_1.mq4

Я тестировал свою версию и буду тестировать вашу тоже.

Если этот индикатор работает правильно, то мы отлично ловим точки разворота.

Это потому, что разница между обеими скользящими средними, разделенная на 2-кратную силу, может показать, когда цена возвращается в тренде с большей чувствительностью. Протестируйте его с другим индикатором границ, и я думаю, вам понравится.

несколько фотографий:

Я очень рад, потому что это мой первый вклад в форум. И я не смог бы сделать его без вашей помощи.

Большое спасибо Младен!

Kelch

Сделал только одно изменение в нем: изменил его направление. Кажется, что так он показывает немного более логичные значения. Попробуйте также

for_a_new_life-1.01.mq4

Файлы:
 

Привет Младен,

Я сделал советника из icustom после того, как я скомпилировал его без ошибок и предупреждений, но я был Backtest без OP вообще?

Могу ли я опубликовать мой советник в этой теме, я хотел бы получить вашу помощь, чтобы исправить это.

Спасибо,

наилучшие пожелания

 
Dova:
Привет, Младен,

Я создал советника из icustom, после того как я скомпилировал его, никаких ошибок и предупреждений, но я провел Backtest, и OP вообще нет?

Могу ли я опубликовать мой советник в этой теме, я хотел бы получить вашу помощь, чтобы исправить это.

Спасибо,

наилучшие пожелания

Dova

Опубликуйте его, чтобы кто-нибудь взглянул на него.

 
mladen:
Kelch

Сделал только одно изменение в нем: изменил его направление. Кажется, что так он показывает немного более логичные значения. Попробуйте и вы так.

for_a_new_life-1.01.mq4

Спасибо mladen!

 

Вот моя пробная версия...

Эта еа при компиляции в порядке, нет ошибок или предупреждений, но нет OP при BT.

Я хотел бы, чтобы эта программа могла отменить OP,

например, если позиция уже ПОКУПАЕТСЯ, то на следующей свече появляется стрелка ПРОДАЖИ, которая автоматически переключает позицию с ПОКУПКИ на ПРОДАЖУ и наоборот.

Добавьте также трейлинг стоп.

Извините за мой плохой английский

pfi.ex4ea_pfi.mq4

Спасибо

Файлы:
pfi.ex4  6 kb
ea_pfi.mq4  4 kb
 
Dova:
Вот мой пробный ea...

Эта еа при компиляции в порядке, нет ошибок или предупреждений, но нет OP, когда BT.

Я хотел бы, чтобы эта ea могла отменить OP,

например, если позиция уже ПОКУПАЕТСЯ, то на следующей свече появляется стрелка ПРОДАВАТЬ, которая автоматически переключает позицию с ПОКУПКИ на ПРОДАЖУ и наоборот.

Добавьте также трейлинг стоп.

Извините за мой плохой английский

pfi.ex4ea_pfi.mq4

Спасибо

Для ясности для всех, кто читает этот пост: что именно означает "реверс от OP" или "отсутствие OP при BT"?

 
mladen:
Чтобы было понятно любому, кто читает этот пост: что именно означает "реверс от ОП" или "отсутствие ОП при БТ"?

Я имею в виду OP = открытая позиция, BT = бэктест.

После бэктеста открытых позиций нет.

Когда уже есть открытая позиция на покупку, то на следующей свече появляются стрелки/сигнал на продажу, которые автоматически закрывают длинные позиции и открывают короткие и наоборот (автоматический реверс позиции).

Надеюсь, мои объяснения понятны.

Спасибо

 

Приветствую всех ....

Простите, если ошибся местом, потому что я новый участник.

Пожалуйста, поддержите мастера кодирования,

для кодирования этого индикатора в советник.

С намерением EA будет в состоянии работать, как я хотел, а именно:

1.открывать автоматическую покупку, когда цена касается линии TL1.

2.открывать автоматическую продажу, когда цена касается линии TL2

3.открыть автоматическую покупку, когда цена заходит за линию TL2

4.открытая автоматическая продажа, когда цена превышает линию TL1

5.закрытая автоматическая покупка, когда цена касается линии TL2, перейти к прямой открытой продаже

6.закрытые автоматически продают, когда цена касается линии TL1, переходят к прямому открытию покупки

7.номор 3 и 4 закрыты вручную (без TrailingStop).

8.SL 50 пунктов и лот 0.1

9.таймфрейм H4 для всех пар.

большое спасибо

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

/ / | SHI_Channel_true.mq4 |

/ / | Copyright © 2004, Shurka & Kevin |

/ / | |

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

# property copyright " Copyright © 2004 , Shurka & Kevin "

# property link " "

/ / ----

# свойство indicator_chart_window

# свойство indicator_buffers 1

# свойство indicator_color1 Red

ExtMapBuffer1 double [ ] ;

/ / ---- Входные параметры

extern int AllBars = 240 ;

BarsForFract extern int = 0 ;

CurrentBar int = 0 ;

double Step = 0 ;

int B1 = -1 , B2 = -1 ;

UpDown int = 0 ;

double P1 = 0 , P2 = 0 , PP = 0 ;

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

ishift int = 0 ;

double iprice = 0 ;

datetime T1 , T2 ;

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

/ / | Пользовательская функция инициализации индикатора |

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

int init ( )

{

/ / ---- Индикаторы

SetIndexStyle ( 0 , DRAW_ARROW ) ;

SetIndexArrow ( 0 , 164 ) ;

SetIndexBuffer ( 0 , ExtMapBuffer1 ) ;

SetIndexEmptyValue ( 0 , 0.0 ) ;

/ / ----

return ( 0 ) ;

}

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

/ / | Деинициализация функции индикатора Custor |

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

deinit int ( )

{

ObjectDelete ( " TL1 " ) ;

ObjectDelete ( " TL2 " ) ;

ObjectDelete ( " MIDL " ) ;

Комментарий ( " " ) ;

/ / ----

return ( 0 ) ;

}

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

/ / | |

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

DelObj void ( )

{

ObjectDelete ( " TL1 " ) ;

ObjectDelete ( " TL2 " ) ;

ObjectDelete ( " MIDL " ) ;

}

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

/ / | Пользовательская итерационная функция индикатора |

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

int start ( )

{

IndicatorCounted counted_bars = int ( ) ;

/ / ----

if ( ( AllBars == 0 ) | | ( Bars < AllBars ) )

AB = Bars ;

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

if ( 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;

default : DelObj ( ), return ( -1 ) ; break;

}

CurrentBar = 2 ; / / / ñ ÷ ñ òðåòüåãî Подозреваем èòàåì, ÷òîáû ôðàêòàë "çàêðåïèëñÿ".

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 ôðàêòàë он íàéäåí .

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

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

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

CurrentBar - BFF ) ) )

{

if ( UpDown == 0 )

{

UpDown = -1 ;

B1 = CurrentBar ;

P1 = Low [ B1 ] ;

}

else

{

B2 = CurrentBar ;

P2 = Low [ B2 ] ;

}

}

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

CurrentBar - BFF ) ) )

{

if ( UpDown == 0 )

{

UpDown = 1 ;

B1 = CurrentBar ;

P1 = High [ B1 ] ;

}

else

{

B2 = CurrentBar ;

P2 = High [ B2 ] ;

}

}

CurrentBar + + ;

}

if ( ( B1 == -1 ) | | ( B2 == -1 ) )

{

DelObj ( ) ;

return ( -1 ) ;

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

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

P1 = P1 - B1 * Шаг ;

B1 = 0 ; / / ïåðåñòàâëÿåì öåíó ïåðâûé AAD è ê íóëþ

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

ishift = 0 ;

iprice = 0 ;

if ( UpDown == 1 )

{

PP = Low [ 2 ] - 2 * Step ;

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

{

if ( Low [ i ] < PP + Step * i )

PP = Low [ i ] - i * Step ;

}

if ( Low [ 0 ] < PP )

{

ishift = 0 ;

iprice = PP ;

}

if ( Low [ 1 ] < PP + Step )

{

ishift = 1 ;

iprice = PP + Step ;

}

if ( High [ 0 ] > P1 )

{

ishift = 0 ;

iprice = P1 ;

}

if ( High [ 1 ] > P1 + Step )

{

ishift = 1 ;

iprice = P1 + Step ;

}

}

else

{

PP = High [ 2 ] - 2 * Step ;

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

{

if ( High [ i ] > PP + Step * i )

PP = High [ i ] - i * Step ;

}

if ( Low [ 0 ] < P1 )

{

ishift = 0 ;

iprice = P1 ;

}

if ( Low [ 1 ] < P1 + Step )

{

ishift = 1 ;

iprice = P1 + Step ;

}

if ( High [ 0 ] > PP )

{

ishift = 0 ;

iprice = PP ;

}

if ( High [ 1 ] > PP + Step )

{

ishift = 1 ;

iprice = PP + Step ;

}

}

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

P2 = P1 + AB * Шаг ;

T1 = Время [ B1 ] ;

T2 = Время [ AB ] ;

/ / Åñëè он áûëî ïåðåñå ÷ åíèÿ êàíàëà , oi 0 , EIA ÷ å ñòàâèì Ineno .

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 ) ;

Comment ( " Размер канала = " , DoubleToStr ( MathAbs ( PP - P1 ) / Point , 0 ) , " Наклон = " ,

DoubleToStr ( - Step / Point , 2 ) ) ;

/ / ----

return ( 0 ) ;

}

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

 
djiwenk:
Приветствую всех ....

простите, если не туда, потому что я новый пользователь.

Пожалуйста, поддержите мастера кодирования,

для кодирования этого индикатора в советник.

С намерением советник будет в состоянии работать, как я хотел, а именно:

1.открывать автоматическую покупку, когда цена касается линии TL1.

2.открывать автоматическую продажу, когда цена касается линии TL2

3.открыть автоматическую покупку, когда цена заходит за линию TL2

4.открытая автоматическая продажа, когда цена превышает линию TL1

5.закрытая автоматическая покупка, когда цена касается линии TL2, перейти к прямой открытой продаже

6.закрытые автоматически продают, когда цена касается линии TL1, переходят к прямому открытию покупки

7.номор 3 и 4 закрыты вручную (без TrailingStop).

8.SL 50 пунктов и лот 0.1

9.таймфрейм H4 для всех пар.

большое спасибо

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

/ / | SHI_Channel_true.mq4 |

/ / | Copyright © 2004, Shurka & Kevin |

/ / | |

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

# property copyright " Copyright © 2004 , Shurka & Kevin "

# property link " "

/ / ----

# свойство indicator_chart_window

# свойство indicator_buffers 1

# свойство indicator_color1 Red

ExtMapBuffer1 double [ ] ;

/ / ---- Входные параметры

extern int AllBars = 240 ;

BarsForFract extern int = 0 ;

CurrentBar int = 0 ;

double Step = 0 ;

int B1 = -1 , B2 = -1 ;

UpDown int = 0 ;

double P1 = 0 , P2 = 0 , PP = 0 ;

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

ishift int = 0 ;

double iprice = 0 ;

datetime T1 , T2 ;

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

/ / | Пользовательская функция инициализации индикатора |

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

int init ( )

{

/ / ---- Индикаторы

SetIndexStyle ( 0 , DRAW_ARROW ) ;

SetIndexArrow ( 0 , 164 ) ;

SetIndexBuffer ( 0 , ExtMapBuffer1 ) ;

SetIndexEmptyValue ( 0 , 0.0 ) ;

/ / ----

return ( 0 ) ;

}

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

/ / | Деинициализация функции индикатора Custor |

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

deinit int ( )

{

ObjectDelete ( " TL1 " ) ;

ObjectDelete ( " TL2 " ) ;

ObjectDelete ( " MIDL " ) ;

Комментарий ( " " ) ;

/ / ----

return ( 0 ) ;

}

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

/ / | |

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

DelObj void ( )

{

ObjectDelete ( " TL1 " ) ;

ObjectDelete ( " TL2 " ) ;

ObjectDelete ( " MIDL " ) ;

}

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

/ / | Пользовательская итерационная функция индикатора |

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

int start ( )

{

IndicatorCounted counted_bars = int ( ) ;

/ / ----

if ( ( AllBars == 0 ) | | ( Bars < AllBars ) )

AB = Bars ;

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

if ( 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;

default : DelObj ( ), return ( -1 ) ; break;

}

CurrentBar = 2 ; / / / ñ ÷ ñ òðåòüåãî Подозреваем èòàåì, ÷òîáû ôðàêòàë "çàêðåïèëñÿ".

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 ôðàêòàë он íàéäåí .

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

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

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

CurrentBar - BFF ) ) )

{

if ( UpDown == 0 )

{

UpDown = -1 ;

B1 = CurrentBar ;

P1 = Low [ B1 ] ;

}

else

{

B2 = CurrentBar ;

P2 = Low [ B2 ] ;

}

}

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

CurrentBar - BFF ) ) )

{

if ( UpDown == 0 )

{

UpDown = 1 ;

B1 = CurrentBar ;

P1 = High [ B1 ] ;

}

else

{

B2 = CurrentBar ;

P2 = High [ B2 ] ;

}

}

CurrentBar + + ;

}

if ( ( B1 == -1 ) | | ( B2 == -1 ) )

{

DelObj ( ) ;

return ( -1 ) ;

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

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

P1 = P1 - B1 * Шаг ;

B1 = 0 ; / / ïåðåñòàâëÿåì öåíó ïåðâûé AAD è ê íóëþ

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

ishift = 0 ;

iprice = 0 ;

if ( UpDown == 1 )

{

PP = Low [ 2 ] - 2 * Step ;

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

{

if ( Low [ i ] < PP + Step * i )

PP = Low [ i ] - i * Step ;

}

if ( Low [ 0 ] < PP )

{

ishift = 0 ;

iprice = PP ;

}

if ( Low [ 1 ] < PP + Step )

{

ishift = 1 ;

iprice = PP + Step ;

}

if ( High [ 0 ] > P1 )

{

ishift = 0 ;

iprice = P1 ;

}

if ( High [ 1 ] > P1 + Step )

{

ishift = 1 ;

iprice = P1 + Step ;

}

}

else

{

PP = High [ 2 ] - 2 * Step ;

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

{

if ( High [ i ] > PP + Step * i )

PP = High [ i ] - i * Step ;

}

if ( Low [ 0 ] < P1 )

{

ishift = 0 ;

iprice = P1 ;

}

if ( Low [ 1 ] < P1 + Step )

{

ishift = 1 ;

iprice = P1 + Step ;

}

if ( High [ 0 ] > PP )

{

ishift = 0 ;

iprice = PP ;

}

if ( High [ 1 ] > PP + Step )

{

ishift = 1 ;

iprice = PP + Step ;

}

}

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

P2 = P1 + AB * Шаг ;

T1 = Время [ B1 ] ;

T2 = Время [ AB ] ;

/ / Åñëè он áûëî ïåðåñå ÷ åíèÿ êàíàëà , oi 0 , EIA ÷ å ñòàâèì Ineno .

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 ) ;

Comment ( " Размер канала = " , DoubleToStr ( MathAbs ( PP - P1 ) / Point , 0 ) , " Наклон = " ,

DoubleToStr ( - Step / Point , 2 ) ) ;

/ / ----

return ( 0 ) ;

}

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

djiwenk

Вы знаете, что канал ши все время меняется (при изменении текущей цены канал ши тоже будет меняться)?

 

книга по созданию ea

создать свою собственную электронную книгу

Файлы:
eaprog.pdf  1296 kb
Причина обращения: