Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 684

 
Sprut112:
Как объяснить советнику (стандартному ма), что покупать (продавать), надо только в момент пересечения средних, а не вобщем, когда ма_1>ма_2. А  он постоянно покупает, остановиться не может

Нужно запоминать в переменную, что пересечение уже было, а когда пересечёт обратно - переписывать переменную, что уже снова пересеклось. Это вариант №1

Смотреть по истории сделок, если последний Buy, то ждём сигнал только в Sell, ну и так по кругу чередовать, это способ более надёжен

 
Vitaly Muzichenko:

Нужно запоминать в переменную, что пересечение уже было, а когда пересечёт обратно - переписывать переменную, что уже снова пересеклось. Это вариант №1

Смотреть по истории сделок, если последний Buy, то ждём сигнал только в Sell, ну и так по кругу чередовать, это способ более надёжен

Что-то мудрено, в самом условии нельзя что-то добавить?
 
Sprut112:
Что-то мудрено, в самом условии нельзя что-то добавить?

Что мудрёного то? Работать с историей не сложно, а с занесением пересечения в переменную - ещё проще.

 
Vitaly Muzichenko:

Нужно запоминать в переменную, что пересечение уже было, а когда пересечёт обратно - переписывать переменную, что уже снова пересеклось. Это вариант №1

Смотреть по истории сделок, если последний Buy, то ждём сигнал только в Sell, ну и так по кругу чередовать, это способ более надёжен

Если речь идет о последнем пересечении МА, то торговля по МА обычно проще выглядит:

1. контролируем новый бар

2. на новом баре проверяем условие:

ma_1[1] >ma_2[1]  && ma_1[2]<ma_2[2] - пересечение сверху-вниз

или ma_1[1]<ma_2[1]  && ma_1[2]>ma_2[2] пересечение  снизу вверх

если нет разницы какая МА пересекает сверху, то значит используем оба условия:

if((ma_1[1]>ma_2[1]  && ma_1[2]<ma_2[2]) || (ma_1[1]<ma_2[1]  && ma_1[2]>ma_2[2])) // пересечение!!!
 
Vitaly Muzichenko:

Что мудрёного то? Работать с историей не сложно, а с занесением пересечения в переменную - ещё проще.

Ладно спасибо
 
Igor Makanu:

Если речь идет о последнем пересечении МА, то торговля по МА обычно проще выглядит:

1. контролируем новый бар

2. на новом баре проверяем условие:

ma_1[1] >ma_2[1]  && ma_1[2]<ma_2[2] - пересечение сверху-вниз

или ma_1[1]<ma_2[1]  && ma_1[2]>ma_2[2] пересечение  снизу вверх

если нет разницы какая МА пересекает сверху, то значит используем оба условия:

Ну вот это ещё логично 
 

Друзья, подскажите пожалуйста, почему при оптимизации советника в папке \Terminal\tester\logs накапливаются огромные лог файлы следующего содержания:

2 00:00:01.796 2014.04.01 10:57:30  Tester: #102 deleted due expiration

2 00:00:02.221 2014.04.24 08:59:59  Tester: #103 deleted due expiration

2 00:00:02.326 2014.04.30 12:57:30  Tester: #104 deleted due expiration

2 00:00:02.852 2014.05.29 10:20:00  Tester: order #105, sell 0.10 EURUSD is opened at 1.35871

0 00:00:02.852 2014.05.29 10:22:30  Tester: stop loss #105 at 1.35910 (1.35876 / 1.35926)

2 00:00:02.941 2014.06.04 01:20:00  Tester: order #106, buy 0.10 EURUSD is opened at 1.36306

0 00:00:02.941 2014.06.04 01:22:30  Tester: stop loss #106 at 1.36259 (1.36253 / 1.36303)

2 00:00:03.133 2014.06.13 14:03:20  Tester: order #107, sell 0.10 EURUSD is opened at 1.35382

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

 


Это как такое возможно?

 
Как в коде советника сделать входные переменные неменяемыми? Например р, я использую советник на Macd и не хочу чтобы в окне настроек выводились его переменные
 
Sprut112:
Как в коде советника сделать входные переменные неменяемыми? Например р, я использую советник на Macd и не хочу чтобы в окне настроек выводились его переменные

читать справку нажав F1 в исходном  коде на "командах" на input или extern     ;)

Причина обращения: