Общие вопросы по разработке > Индикатор ENTRY-POINT

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
Сайбер
Сообщения: 7
Зарегистрирован: 08 фев 2016, 18:55

Индикатор ENTRY-POINT

Непрочитанное сообщение Сайбер » 01 ноя 2016, 20:23

Добрый день.
Если возможно, добавьте пожалуйста в Вашу библиотеку индикаторов, индикатор ENTRY-POINT. выглядит он так http://forexstrike.ru/indikatory-foreks ... yhoda.html
В МТ4 он выглядит следующим образом.



Код: Выделить всё

#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_separate_window
#property indicator_minimum 0.0
#property indicator_maximum 100.0
#property indicator_buffers 5
#property indicator_color1 CLR_NONE
#property indicator_color2 CLR_NONE
#property indicator_color3 Aqua
#property indicator_color4 Magenta
#property indicator_color5 CLR_NONE

extern int KPeriod = 21;
extern int DPeriod = 12;
extern int Slowing = 3;
extern int method = 0;
extern int price = 0;
extern string для_WPR = "";
extern int ExtWPRPeriod = 14;
extern double ZoneHighPer = 70.0;
extern double ZoneLowPer = 30.0;
extern bool modeone = TRUE;
extern bool PlaySoundBuy = TRUE;
extern bool PlaySoundSell = TRUE;
int gi_136 = 0;
extern string FileSoundBuy = "analyze buy";
extern string FileSoundSell = "analyze sell";
double g_ibuf_156[];
double g_ibuf_160[];
double g_ibuf_164[];
double g_ibuf_168[];
double g_ibuf_172[];
int gi_176 = 0;
int gi_180 = 0;
int g_time_184 = 0;
int gi_188 = 0;
int gi_192 = 0;
int gi_196 = 0;

// E37F0136AA3FFAF149B351F6A4C948E9
int init() {
   string ls_unused_0;
   IndicatorBuffers(5);
   SetIndexStyle(0, DRAW_LINE, EMPTY, 0);
   SetIndexBuffer(0, g_ibuf_156);
   SetIndexStyle(1, DRAW_LINE, EMPTY, 0);
   SetIndexBuffer(1, g_ibuf_160);
   SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID, 5);
   SetIndexArrow(2, 244);
   SetIndexBuffer(2, g_ibuf_164);
   SetIndexStyle(3, DRAW_HISTOGRAM, STYLE_SOLID, 5);
   SetIndexBuffer(3, g_ibuf_168);
   SetIndexArrow(3, 244);
   SetIndexStyle(4, DRAW_LINE, EMPTY, 0);
   SetIndexBuffer(4, g_ibuf_172);
   gi_176 = KPeriod + Slowing;
   gi_180 = gi_176 + DPeriod;
   SetIndexDrawBegin(0, gi_176);
   SetIndexDrawBegin(1, gi_180);
   SetIndexDrawBegin(4, ExtWPRPeriod);
   SetIndexEmptyValue(2, 0);
   SetIndexEmptyValue(3, 0);
   return (0);
}

// EA2B2676C28C0DB26D39331A336C6B92
int start() {
   double price_field_12;
   double high_20;
   double low_28;
   double ld_40;
   double ld_48;
   double ld_56;
   double ld_64;
   int shift_72;
   int li_8 = IndicatorCounted();
   if (Bars <= gi_180) return (0);
   if (li_8 < 1) {
      for (int shift_0 = 1; shift_0 <= gi_176; shift_0++) g_ibuf_156[Bars - shift_0] = 0;
      for (shift_0 = 1; shift_0 <= gi_180; shift_0++) g_ibuf_160[Bars - shift_0] = 0;
   }
   if (li_8 > 0) li_8--;
   int li_36 = Bars - li_8;
   for (shift_0 = 0; shift_0 < li_36; shift_0++) {
      g_ibuf_156[shift_0] = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, method, price_field_12, MODE_MAIN, shift_0);
      g_ibuf_160[shift_0] = iStochastic(NULL, 0, 21, DPeriod, Slowing, method, price_field_12, MODE_SIGNAL, shift_0);
   }
   shift_0 = Bars - ExtWPRPeriod - 1;
   if (li_8 > ExtWPRPeriod) shift_0 = Bars - li_8 - 1;
   while (shift_0 >= 0) {
      high_20 = High[iHighest(NULL, 0, MODE_HIGH, ExtWPRPeriod, shift_0)];
      low_28 = Low[iLowest(NULL, 0, MODE_LOW, ExtWPRPeriod, shift_0)];
      if (!f0_0(high_20 - low_28, 0.0)) g_ibuf_172[shift_0] = (high_20 - Close[shift_0]) / (-0.01) / (high_20 - low_28) + 100.0;
      shift_0--;
   }
   if (li_8 > 0) li_8--;
   li_36 = Bars - li_8;
   for (shift_0 = li_36 - 1; shift_0 >= 0; shift_0--) {
      ld_40 = g_ibuf_160[shift_0];
      ld_48 = g_ibuf_160[shift_0 + 1];
      ld_56 = g_ibuf_156[shift_0];
      ld_64 = g_ibuf_156[shift_0 + 1];
      if (ld_56 > ld_40 && ld_64 < ld_48 && ld_64 < ZoneLowPer && ld_48 < ZoneLowPer) {
         g_ibuf_164[shift_0] = 100;
         shift_72 = iBarShift(NULL, 0, gi_188);
         if (modeone && shift_72 != shift_0 && gi_196 == 1) g_ibuf_164[shift_72] = 0;
         gi_188 = Time[shift_0];
         gi_196 = 1;
      } else g_ibuf_164[shift_0] = 0;
      if (ld_56 < ld_40 && ld_64 > ld_48 && ld_64 > ZoneHighPer && ld_48 > ZoneHighPer) {
         g_ibuf_168[shift_0] = 100;
         shift_72 = iBarShift(NULL, 0, gi_192);
         if (modeone && shift_72 != shift_0 && gi_196 == -1) g_ibuf_168[shift_72] = 0;
         gi_192 = Time[shift_0];
         gi_196 = -1;
      } else g_ibuf_168[shift_0] = 0;
   }
   if (PlaySoundBuy && g_ibuf_164[gi_136] > 0.0) {
      if (g_time_184 != Time[gi_136]) PlaySound(FileSoundBuy);
      g_time_184 = Time[gi_136];
   }
   if (PlaySoundSell && g_ibuf_168[gi_136] > 0.0) {
      if (g_time_184 != Time[gi_136]) PlaySound(FileSoundSell);
      g_time_184 = Time[gi_136];
   }
   return (0);
}

// 2B740CB84420C7B62E2B7A7086716360
bool f0_0(double ad_0, double ad_8) {
   bool bool_16 = NormalizeDouble(ad_0 - ad_8, 8) == 0.0;
   return (bool_16);
}

Вернуться в «Общие вопросы по разработке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей