Вход/Регистрация
Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5
вернуться

Машнин Тимур Сергеевич

Шрифт:

PSARHandle=iSAR (NULL,0,0.02, 0.2);

// – —

return (INIT_SUCCEEDED);

}

//+ – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – +

//| Custom indicator iteration function |

//+ – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – +

int OnCalculate (const int rates_total,

const int prev_calculated,

const datetime &time [],

const double &open [],

const double &high [],

const double &low [],

const double &close [],

const long &tick_volume [],

const long &volume [],

const int &spread [])

{

// – —

int values_to_copy;

int start;

int calculated=BarsCalculated (EMA34HHandle);

if (calculated <=0)

{

return (0);

}

if (prev_calculated==0 || calculated!=bars_calculated)

{

start=rates_total-1;

if (calculated> rates_total) values_to_copy=rates_total;

else values_to_copy=calculated;

}

else

{

start=1;

values_to_copy=1;

}

if (!FillArrayFromMABuffer (EMA34HBuffer,0,EMA34HHandle, values_to_copy)) return (0); if (!FillArrayFromMABuffer (EMA34LBuffer,0,EMA34LHandle, values_to_copy)) return (0); if (!FillArrayFromMABuffer (EMA125Buffer,0,EMA125Handle, values_to_copy)) return (0);

if (!FillArrayFromPSARBuffer (PSARBuffer, PSARHandle, values_to_copy)) return (0);

ArraySetAsSeries (time, true);

ArraySetAsSeries (high, true);

ArraySetAsSeries (low, true);

ArraySetAsSeries (open, true);

ArraySetAsSeries (close, true);

ArraySetAsSeries (EMA34HBuffer, true);

ArraySetAsSeries (EMA34LBuffer, true);

ArraySetAsSeries (EMA125Buffer, true);

ArraySetAsSeries (PSARBuffer, true);

for (int i=start; i> =1;i – )

{if (close [i]> open [i] &&close [i]> EMA34HBuffer [i] &&close [i]> EMA34LBuffer [i] &&low [i]> EMA125Buffer [i] &&low [i]> PSARBuffer [i] &&EMA125Buffer [i] <EMA34LBuffer [i] &&EMA125Buffer [i] <EMA34HBuffer [i]) {

if (!ObjectCreate (0,«Buy»+i, OBJ_ARROW,0,time [i],high [i]))

{

return (false);

}

ObjectSetInteger (0,«Buy»+i, OBJPROP_COLOR, clrGreen);

ObjectSetInteger (0,«Buy»+i, OBJPROP_ARROWCODE,233);

ObjectSetInteger (0,«Buy»+i, OBJPROP_WIDTH,2);

ObjectSetInteger (0,«Buy»+i, OBJPROP_ANCHOR, ANCHOR_UPPER);

ObjectSetInteger (0,«Buy»+i, OBJPROP_HIDDEN, true);

ObjectSetString (0,«Buy»+i, OBJPROP_TOOLTIP, close [i]);

}

if (close [i] <open [i] &&close [i] <EMA34HBuffer [i] &&close [i] <EMA34LBuffer [i] &&high [i] <EMA125Buffer [i] &&high [i] <PSARBuffer [i] &&EMA125Buffer [i]> EMA34LBuffer [i] &&EMA125Buffer [i]> EMA34HBuffer [i]) {

if (!ObjectCreate (0,«Sell»+i, OBJ_ARROW,0,time [i],low [i]))

{

return (false);

}

ObjectSetInteger (0,«Sell»+i, OBJPROP_COLOR, clrRed);

ObjectSetInteger (0,«Sell»+i, OBJPROP_ARROWCODE,234);

ObjectSetInteger (0,«Sell»+i, OBJPROP_WIDTH,2);

ObjectSetInteger (0,«Sell»+i, OBJPROP_ANCHOR, ANCHOR_LOWER);

ObjectSetInteger (0,«Sell»+i, OBJPROP_HIDDEN, true);

ObjectSetString (0,«Sell»+i, OBJPROP_TOOLTIP, close [i]);

}

}

bars_calculated=calculated;

// – - return value of prev_calculated for next call

return (rates_total);

}

//+ – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – +

bool FillArrayFromPSARBuffer (double &sar_buffer [], // индикаторный буфер значений Parabolic SAR

int ind_handle, // хэндл индикатора iSAR

int amount // количество копируемых значений

)

{

ResetLastError ;

if (CopyBuffer (ind_handle,0,0,amount, sar_buffer) <0)

{

return (false);

}

return (true);

}

//+ – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – — – +

  • 1
  • ...
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: