Мы провели тесты и сделали код индикатора для нашего советника:
для мт4 код был у автора в описании, поэтому ничего придумывать не пришлось:
Код
string IndicatorName="\\Market\\PZ Trend Trading";
int SignalBuferforBUY=10; //SignalBuferforBUY --> Buffer number for BUY signal
ArrayResize(custom_buffer_for_Open_BUY,3+ShiftIndicator);
ArrayResize(custom_buffer_for_Open_SELL,3+ShiftIndicator);
for(int inum=StartCopyI;inum<3+ShiftIndicator; inum++)
{
custom_buffer_for_Open_BUY[inum]=iCustom(StrategySymbolString,StrategyTimeFrame,IndicatorName,SignalBuferforBUY,StartCopyI+inum);
}
// Read signal for this bar
int value=custom_buffer_for_Open_BUY[ShiftIndicator];
// Do something
if(value == OP_BUY_1) { sig=1; }
if(value == OP_SELL_1){ sig=-1; }
if(value == OP_BUY_2) { sig=1; }
if(value == OP_SELL_2){ sig=-1; }
if(value == OP_BUY_3) { sig=1; }
if(value == OP_SELL_3){ sig=-1; }
if(value == OP_BUY_4) { sig=1; }
if(value == OP_SELL_4){ sig=-1; }
if(value==EMPTY_VALUE){ sig=0; }
А вот для мт5 мы так и не выяснили, какие буферы точно показывают смену тренда. Нашли только буферы 2 и 3.
Попытаемся сделать советник на этих буферах.


Код
// MetaTrader 5 ####################################################################
// MetaTrader 5 MetaTrader 5 MetaTrader 5 MetaTrader 5 MetaTrader 5 MetaTrader 5 MetaTrader 5 MetaTrader 5 MetaTrader 5
if(xCustomCopyBufferMT5(h_custom_for_Open,2,StartCopyI,3+ShiftIndicator,custom_buffer_for_Open_BUY)<3+ShiftIndicator)return(0);
if(xCustomCopyBufferMT5(h_custom_for_Open,3,StartCopyI,3+ShiftIndicator,custom_buffer_for_Open_SELL)<3+ShiftIndicator)return(0);
if(custom_buffer_for_Open_SELL[ShiftIndicator]!=EMPTY_VALUE && custom_buffer_for_Open_SELL[ShiftIndicator]>0)
sig=-1;
else
if(custom_buffer_for_Open_BUY[ShiftIndicator]!=EMPTY_VALUE && custom_buffer_for_Open_BUY[ShiftIndicator]>0)
sig=1;
else sig=0;
Протестировали советник и вот что получилось:
для мт4:

Кстати Вы можете убрать ненужные сигналы здесь:
Код
// Do something
if(value == OP_BUY_1) { sig=1; }
if(value == OP_SELL_1){ sig=-1; }
if(value == OP_BUY_2) { sig=1; }
if(value == OP_SELL_2){ sig=-1; }
if(value == OP_BUY_3) { sig=1; }
if(value == OP_SELL_3){ sig=-1; }
if(value == OP_BUY_4) { sig=1; }
if(value == OP_SELL_4){ sig=-1; }
if(value==EMPTY_VALUE){ sig=0; }
а вот, что получилось на мт5:

Не знаю, правильно ли это или нет.
Нужно узнавать у автора индикатора номера буферов!