Problem z skryptem

O jezykach programowania w platformach i nie tylko.
Elhape
Bywalec
Bywalec
Posty: 5
Rejestracja: 15 mar 2016, 21:01

Problem z skryptem

Nieprzeczytany post autor: Elhape »

Znalazłem skrypt/wskaźnik który podaje mi sygnał w okienku w formie alarmu, chciałem go przerobić tak abym dostawał powiadomienie w aplikacji na telefonie. Problemem okazało się ex4 zamiast mq4. Znalazłem dekompilator który teoretycznie poradził sobie bez problemu ale po ponownym skompilowaniu mimo nie wystąpieniu żadnego błędu wskaźnik nie uruchamia się na wykresie, znaczy tak jak by się dodaje ale go nie widać.
Taki dekompilator ma prawo działać ??
Wklejam kod może ktoś coś zauważy

Kod: Zaznacz cały

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Yellow

extern int SignalPeriod = 28;
int gi_80 = 0;
extern int NR_SLIPE = 3;
int g_applied_price_88 = PRICE_CLOSE;
extern double FilterNumber = 3.0;
bool gi_100 = TRUE;
int gi_104 = 0;
extern int lineWidth = 3;
extern int barsToDrawLine = 10000;
extern bool skipSingleBarSignal = FALSE;
extern int aTake_Profit = 150;
extern int aStop_Loss = 150;
extern bool aAlerts = TRUE;
extern bool EmailOn = TRUE;
datetime g_time_136;
string gs_148;
string gs_156 = "fx_NR_Scalping";
double g_ibuf_164[];
double g_ibuf_168[];
double g_ibuf_172[];
double g_ibuf_176[];
int gi_180;
string gs_184;
int gi_unused_192 = 0;

string GetTimeFrameStr() {
   string l_timeframe_4;
   switch (Period()) {
   case PERIOD_M1:
      l_timeframe_4 = "M1";
      break;
   case PERIOD_M5:
      l_timeframe_4 = "M5";
      break;
   case PERIOD_M15:
      l_timeframe_4 = "M15";
      break;
   case PERIOD_M30:
      l_timeframe_4 = "M30";
      break;
   case PERIOD_H1:
      l_timeframe_4 = "H1";
      break;
   case PERIOD_H4:
      l_timeframe_4 = "H4";
      break;
   case PERIOD_D1:
      l_timeframe_4 = "D1";
      break;
   case PERIOD_W1:
      l_timeframe_4 = "W1";
      break;
   case PERIOD_MN1:
      l_timeframe_4 = "MN1";
      break;
   default:
      l_timeframe_4 = Period();
   }
   return (l_timeframe_4);
}

void DisplayAlert(string as_0, double ad_8, double ad_16, double ad_24) {
   string ls_32;
   string ls_40;
   string ls_48;
   string ls_56;
   if (Time[0] != g_time_136) {
      g_time_136 = Time[0];
      if (gs_148 != as_0) {
         gs_148 = as_0;
         if (ad_8 != 0.0) ls_48 = " @ Price " + DoubleToStr(ad_8, 4);
         else ls_48 = "";
         if (ad_16 != 0.0) ls_40 = ", TakeProfit   " + DoubleToStr(ad_16, 4);
         else ls_40 = "";
         if (ad_24 != 0.0) ls_32 = ", StopLoss   " + DoubleToStr(ad_24, 4);
         else ls_32 = "";
         ls_56 = gs_184 + "Scalping " + aRperiodf() + " Alert " + as_0 
            + "\n" 
            + as_0 + ls_48 + ls_40 + ls_32 
         + "\nDate & Time = " + TimeToStr(TimeCurrent(), TIME_DATE) + " " + TimeHour(TimeCurrent()) + ":" + TimeMinute(TimeCurrent()) + " ";
         Alert(ls_56, Symbol(), ", ", Period(), " minutes chart");
         PlaySound("alert.wav");
         if (EmailOn) SendMail(gs_184, ls_56);
      }
   }
}

int init() {
   IndicatorBuffers(4);
   if (!SetIndexBuffer(0, g_ibuf_164) && !SetIndexBuffer(1, g_ibuf_168) && !SetIndexBuffer(2, g_ibuf_172) && !SetIndexBuffer(3, g_ibuf_176)) Print("cannot set indicator buffers!");
   if (gi_100) {
      SetIndexStyle(0, DRAW_ARROW, EMPTY, lineWidth - 3);
      SetIndexStyle(1, DRAW_ARROW, EMPTY, lineWidth - 3);
      SetIndexStyle(2, DRAW_ARROW, EMPTY, lineWidth - 3);
      SetIndexArrow(0, 159);
      SetIndexArrow(1, 159);
      SetIndexArrow(2, 159);
   } else {
      SetIndexStyle(0, DRAW_LINE);
      SetIndexStyle(1, DRAW_LINE);
      SetIndexStyle(2, DRAW_LINE);
   }
   gi_180 = SignalPeriod + MathFloor(MathSqrt(SignalPeriod));
   SetIndexDrawBegin(0, gi_180);
   SetIndexDrawBegin(1, gi_180);
   SetIndexDrawBegin(2, gi_180);
   IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 1.0);
   IndicatorShortName("Scalping(" + SignalPeriod + ")");
   SetIndexLabel(0, "Scalping");
   gs_184 = Symbol() + " (" + GetTimeFrameStr() + "):  ";
   gs_148 = "";
   ArrayInitialize(g_ibuf_164, EMPTY_VALUE);
   ArrayInitialize(g_ibuf_172, EMPTY_VALUE);
   ArrayInitialize(g_ibuf_168, EMPTY_VALUE);
   return (0);
}

int deinit() {
   DelObj();
   return (0);
}

int start() {
   double l_ima_on_arr_20;
   int li_unused_28;
   int l_ind_counted_8 = IndicatorCounted();
   if (l_ind_counted_8 < 1) {
      for (int li_4 = 0; li_4 <= gi_180; li_4++) g_ibuf_176[Bars - li_4] = 0;
      for (li_4 = 0; li_4 <= SignalPeriod; li_4++) {
         g_ibuf_164[Bars - li_4] = EMPTY_VALUE;
         g_ibuf_168[Bars - li_4] = EMPTY_VALUE;
         g_ibuf_172[Bars - li_4] = EMPTY_VALUE;
      }
   }
   int li_0 = Bars - l_ind_counted_8;
   for (li_4 = 1; li_4 < li_0; li_4++) g_ibuf_176[li_4] = 2.0 * iMA(NULL, 0, MathFloor(SignalPeriod / FilterNumber), gi_80, NR_SLIPE, g_applied_price_88, li_4) - iMA(NULL, 0, SignalPeriod, gi_80, NR_SLIPE, g_applied_price_88, li_4);
   double l_ima_on_arr_12 = iMAOnArray(g_ibuf_176, 0, MathFloor(MathSqrt(SignalPeriod)), 0, NR_SLIPE, 1);
   for (li_4 = 2; li_4 < li_0 + 1; li_4++) {
      l_ima_on_arr_20 = iMAOnArray(g_ibuf_176, 0, MathFloor(MathSqrt(SignalPeriod)), 0, NR_SLIPE, li_4);
      li_unused_28 = 0;
      if (l_ima_on_arr_20 > l_ima_on_arr_12) {
         g_ibuf_172[li_4 - 1] = l_ima_on_arr_12 - gi_104 * Point;
         li_unused_28 = 1;
      } else {
         if (l_ima_on_arr_20 < l_ima_on_arr_12) {
            g_ibuf_164[li_4 - 1] = l_ima_on_arr_12 + gi_104 * Point;
            li_unused_28 = 2;
         } else {
            g_ibuf_164[li_4 - 1] = EMPTY_VALUE;
            g_ibuf_168[li_4 - 1] = l_ima_on_arr_12;
            g_ibuf_172[li_4 - 1] = EMPTY_VALUE;
            li_unused_28 = 3;
         }
      }
      if (l_ind_counted_8 > 0) {
      }
      l_ima_on_arr_12 = l_ima_on_arr_20;
   }
   if (li_0 > barsToDrawLine) li_0 = barsToDrawLine;
   for (li_4 = 2; li_4 <= li_0; li_4++) {
      if (g_ibuf_164[li_4 - 1] != EMPTY_VALUE) {
         if (g_ibuf_164[li_4] != EMPTY_VALUE) drawLineSegment(li_4 - 1, li_4, 1);
         else drawLineSegment(li_4 - 1, li_4, 10);
      }
      if (g_ibuf_172[li_4 - 1] != EMPTY_VALUE) {
         if (g_ibuf_172[li_4] != EMPTY_VALUE) drawLineSegment(li_4 - 1, li_4, -1);
         else drawLineSegment(li_4 - 1, li_4, -10);
      }
   }
   if (aAlerts) {
      if ((skipSingleBarSignal == FALSE && g_ibuf_172[1] != EMPTY_VALUE && g_ibuf_172[2] == EMPTY_VALUE) || (skipSingleBarSignal == TRUE && g_ibuf_172[1] != EMPTY_VALUE &&
         g_ibuf_172[2] != EMPTY_VALUE && g_ibuf_172[3] == EMPTY_VALUE)) DisplayAlert("Sell signal", Close[1], aGetTPs(), aGetSLs());
      if ((skipSingleBarSignal == FALSE && g_ibuf_164[1] != EMPTY_VALUE && g_ibuf_164[2] == EMPTY_VALUE) || (skipSingleBarSignal == TRUE && g_ibuf_164[1] != EMPTY_VALUE &&
         g_ibuf_164[2] != EMPTY_VALUE && g_ibuf_164[3] == EMPTY_VALUE)) DisplayAlert("Buy signal", Close[1], aGetTPl(), aGetSLl());
   }
   return (0);
}

double aGetTPs() {
   return (Bid - aTake_Profit * Point);
}

double aGetTPl() {
   return (Ask + aTake_Profit * Point);
}

double aGetSLs() {
   return (Bid + aStop_Loss * Point);
}

double aGetSLl() {
   return (Ask - aStop_Loss * Point);
}

int aRperiodf() {
   return (10000.0 * (SignalPeriod * Point));
}

void DelObj() {
   string l_name_0;
   int l_str_len_12;
   for (int li_8 = ObjectsTotal() - 1; li_8 >= 0; li_8--) {
      l_name_0 = ObjectName(li_8);
      l_str_len_12 = StringLen(gs_156);
      if (StringSubstr(l_name_0, 0, l_str_len_12) == gs_156) ObjectDelete(l_name_0);
   }
}

void drawLineSegment(int ai_0, int ai_4, int ai_8) {
   double l_price_20;
   double l_price_28;
   color l_color_36;
   if (ai_8 > 0) {
      l_price_20 = g_ibuf_164[ai_0];
      if (ai_8 == 1) l_price_28 = g_ibuf_164[ai_4];
      else l_price_28 = g_ibuf_172[ai_4];
      l_color_36 = Blue;
   } else {
      l_price_20 = g_ibuf_172[ai_0];
      if (ai_8 == -1) l_price_28 = g_ibuf_172[ai_4];
      else l_price_28 = g_ibuf_164[ai_4];
      l_color_36 = Yellow;
   }
   int l_time_12 = Time[ai_0];
   int l_time_16 = Time[ai_4];
   if (l_price_20 == EMPTY_VALUE || l_price_28 == EMPTY_VALUE) {
      Print("Empty value for price line encountered!");
      return;
   }
   string l_name_40 = gs_156 + "_segment_" + l_color_36 + l_time_12 + "_" + l_time_16;
   ObjectDelete(l_name_40);
   ObjectCreate(l_name_40, OBJ_TREND, 0, l_time_12, l_price_20, l_time_16, l_price_28, 0, 0);
   ObjectSet(l_name_40, OBJPROP_WIDTH, lineWidth);
   ObjectSet(l_name_40, OBJPROP_COLOR, l_color_36);
   ObjectSet(l_name_40, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet(l_name_40, OBJPROP_RAY, FALSE);
}
Obrazek

ODPOWIEDZ