Прощаи робот-да здравствует маразм - страница 5

 
Предлагаю следующее: прикрепите индикатор (тот вариант, который работал раньше, без изменений) сюда или мне в личку, я подкорректирую.
 
Pavlick:
Предлагаю следующее: прикрепите индикатор (тот вариант, который работал раньше, без изменений) сюда или мне в личку, я подкорректирую.

привет,павлик!

ето та версион

 оригинал.

попробуи код перетащить

pansa

//+------------------------------------------------------------------+

//| AltrTrend_Signal_v2_2.mq4

//| Ramdass - Conversion only

//+------------------------------------------------------------------+

#property  copyright "Author - OlegVS, GOODMAN"

 

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Chartreuse

#property indicator_color2 Yellow

 

#property indicator_width1 2

#property indicator_width2 2

 

//---- input parameters

extern int K=30;

extern double Kstop=0.5;

extern int Kperiod=150;

extern int PerADX=14;

extern int CountBars=350;

extern int SoundON=1; //zakton's

 

 

//---- buffers

double val1[];

double val2[];

 

//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int init()

  {

   string short_name;

//---- indicator line

   IndicatorBuffers(2);

   SetIndexStyle(0,DRAW_ARROW);

   SetIndexArrow(0,159);

   SetIndexStyle(1,DRAW_ARROW);

   SetIndexArrow(1,159);

   SetIndexBuffer(0,val1);

   SetIndexBuffer(1,val2);

//----

   return(0);

  }

//+------------------------------------------------------------------+

//| AltrTrend_Signal_v2_2                                            |

//+------------------------------------------------------------------+

int start()

  {  

   if (CountBars>=Bars) CountBars=Bars;

   SetIndexDrawBegin(0,Bars-CountBars+PerADX);

   SetIndexDrawBegin(1,Bars-CountBars+PerADX);

   int i,shift,counted_bars=IndicatorCounted();

   int i1,i2;

   double Range,AvgRange,smin,smax,SsMax,SsMin,SSP,price;

   bool uptrend,old;

//----

   if(Bars<=PerADX+1) return(0);

//---- initial zero

   if(counted_bars<PerADX+1)

   {

      for(i=1;i<=PerADX;i++) val1[CountBars-i]=0.0;

      for(i=1;i<=PerADX;i++) val2[CountBars-i]=0.0;

   }

//----

 

 

for (shift = CountBars-PerADX; shift>=0; shift--)

{

 

SSP=MathCeil(Kperiod/iADX(NULL,0,PerADX,PRICE_CLOSE,MODE_MAIN,1));

                Range=0;

                AvgRange=0;

                for (i1=shift; i1<=shift+SSP; i1++)

                               {AvgRange=AvgRange+MathAbs(High[i1]-Low[i1]);

                               }

                Range=AvgRange/(SSP+1);

 

SsMax=High[shift]; SsMin=Low[shift];

   for (i2=shift;i2<=shift+SSP-1;i2++)

        {

         price=High[i2];

         if(SsMax<price) SsMax=price;

         price=Low[i2];

         if(SsMin>=price)  SsMin=price;

        }

 

smin = SsMin+(SsMax-SsMin)*K/100;

smax = SsMax-(SsMax-SsMin)*K/100;

                val1[shift]=0;

                val2[shift]=0;

                if (Close[shift]<smin)

                               {

                               uptrend = false;

                               }

                if (Close[shift]>smax)

                               {

                               uptrend = true;

                               }

   if (uptrend!=old && uptrend==true) {val1[shift]=Low[shift]-Range*Kstop;}

  

   if (uptrend!=old && uptrend==false) {val2[shift]=High[shift]+Range*Kstop;}

   old=uptrend;

 

// zakton's code  

   if ((shift == 0) && (SoundON == 1)) {

      if (val1[0] > 0) PlaySound("ReadyToExit.wav");

   }

  

   if ((shift == 0) && (SoundON == 1)) {

      if (val2[0] > 0) PlaySound("ReadyToExit.wav");

   }

}

   return(0);

  }

//+--------------------------------------------------------
 
pansa:

привет,павлик!

ето та версион

 оригинал.

попробуи код перетащить

pansa


Sr. Pansa! Porqué no usa el botón SRC para poner su código? Así mejor o Ud. tiene alguna duda?

//+------------------------------------------------------------------+
//| AltrTrend_Signal_v2_2.mq4
//| Ramdass - Conversion only
//+------------------------------------------------------------------+
#property  copyright "Author - OlegVS, GOODMAN"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Chartreuse
#property indicator_color2 Yellow
#property indicator_width1 2
#property indicator_width2 2
//---- input parameters
extern int K=30;
extern double Kstop=0.5;
extern int Kperiod=150;
extern int PerADX=14;
extern int CountBars=350;
extern int SoundON=1; //zakton's
//---- buffers
double val1[];
double val2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator line
   IndicatorBuffers(2);
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,159);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,159);
   SetIndexBuffer(0,val1);
   SetIndexBuffer(1,val2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| AltrTrend_Signal_v2_2                                            |
//+------------------------------------------------------------------+
int start()
  {  
   if (CountBars>=Bars) CountBars=Bars;
   SetIndexDrawBegin(0,Bars-CountBars+PerADX);
   SetIndexDrawBegin(1,Bars-CountBars+PerADX);
   int i,shift,counted_bars=IndicatorCounted();
   int i1,i2;
   double Range,AvgRange,smin,smax,SsMax,SsMin,SSP,price;
   bool uptrend,old;
//----
   if(Bars<=PerADX+1) return(0);
//---- initial zero
   if(counted_bars<PerADX+1)
   {
      for(i=1;i<=PerADX;i++) val1[CountBars-i]=0.0;
      for(i=1;i<=PerADX;i++) val2[CountBars-i]=0.0;
   }
//----
for (shift = CountBars-PerADX; shift>=0; shift--)
{
SSP=MathCeil(Kperiod/iADX(NULL,0,PerADX,PRICE_CLOSE,MODE_MAIN,1));
                Range=0;
                AvgRange=0;
                for (i1=shift; i1<=shift+SSP; i1++)
                               {AvgRange=AvgRange+MathAbs(High[i1]-Low[i1]);
                               }
                Range=AvgRange/(SSP+1);
SsMax=High[shift]; SsMin=Low[shift];
   for (i2=shift;i2<=shift+SSP-1;i2++)
        {
         price=High[i2];
         if(SsMax<price) SsMax=price;
         price=Low[i2];
         if(SsMin>=price)  SsMin=price;
        }
smin = SsMin+(SsMax-SsMin)*K/100;
smax = SsMax-(SsMax-SsMin)*K/100;
                val1[shift]=0;
                val2[shift]=0;
                if (Close[shift]<smin)
                               {
                               uptrend = false;
                               }
                if (Close[shift]>smax)
                               {
                               uptrend = true;
                               }
   if (uptrend!=old && uptrend==true) {val1[shift]=Low[shift]-Range*Kstop;}
   if (uptrend!=old && uptrend==false) {val2[shift]=High[shift]+Range*Kstop;}
   old=uptrend;
// zakton's code  
   if ((shift == 0) && (SoundON == 1)) {
      if (val1[0] > 0) PlaySound("ReadyToExit.wav");
   }
   if ((shift == 0) && (SoundON == 1)) {
      if (val2[0] > 0) PlaySound("ReadyToExit.wav");
   }
}
   return(0);
  }
//+--------------------------------------------------------

Buena suerte!

 
pansa:

привет,павлик!

ето та версион

 оригинал.

попробуи код перетащить

pansa




Индикатор рабочий, но в нем разработчиком сделана логическая ошибка

 

SSP=MathCeil(Kperiod/iADX(NULL,0,PerADX,PRICE_CLOSE,MODE_MAIN,1));
 
//+------------------------------------------------------------------+
//|                                        sample_execute_script.mq4 |
//+------------------------------------------------------------------+
#import "user32.dll"
  int RegisterWindowMessageW(string MessageName);
  int PostMessageW(int hwnd, int msg, int wparam, string Name);
  void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo);


#import

int start()
{
  int winHandle = WindowHandle( Symbol(), Period() );
//
//
//
  if(signal < 0 && trigl==true && buy == true) 
  {
    StartScript(winHandle, "SchliesenProfitOrders" ); 
  }
//
//
//
}
void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)
{
  int MessageNumber = RegisterWindowMessageW("MetaTrader4_Internal_Message");
  PostMessageW(hWnd, MessageNumber, 16, ScriptName);
  if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }
} 
void ClearConfigDialog()
{
  Sleep(100);
  keybd_event(13, 0, 0, 0);
}
//
//
//
return(0);
Это то, о чем говорил Рош
 

ok?

//+------------------------------------------------------------------+
//|                                             AltrTREND_Signal.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//|                                 AltrTrend_Signal_v2_2_alert.mq4  |
//|                                       Ramdass - Conversion only  |
//+------------------------------------------------------------------+
#property  copyright "Author - OlegVS, GOODMAN"
#property strict
#import "user32.dll"
  int RegisterWindowMessageA(uchar &lParam[]);
  int SendMessageA(int hWnd, int Msg, int wParam, char &lParam[]);
  void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo);
#import

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 DeepSkyBlue
#property indicator_color2 OrangeRed
#property indicator_width1 1
#property indicator_width2 1

//---- input parameters
extern bool Alert_message = true;
extern int  Time_alert_minutes = 60; // ????? ????? ?????????? ???? ??? ? 60 ?????.
extern int K = 30;
extern double Kstop = 0.5;
extern int Kperiod = 150;
extern int PeriodADX = 7;//14;
extern int CountBars = 100;
extern string script_name = "fPlayer";

//---- buffers
double val1[];
double val2[];

double AlertTime;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
    //---- indicator line
    IndicatorBuffers(1);
    SetIndexStyle(0,DRAW_ARROW);
    SetIndexArrow(0,241);
    IndicatorBuffers(2);
    SetIndexStyle(1,DRAW_ARROW);
    SetIndexArrow(1,242);
    SetIndexBuffer(0,val1);
    SetIndexBuffer(1,val2);
    if(CountBars>=Bars) 
        CountBars=Bars;
    SetIndexDrawBegin(0, Bars - CountBars + PeriodADX );
    SetIndexDrawBegin(1, Bars - CountBars + PeriodADX );
    //----
    return(0);
  }
  
//+------------------------------------------------------------------+
//| AltrTrend_Signal_v2_2                                            |
//+------------------------------------------------------------------+
int start()
{   
    int shift, counted_bars = IndicatorCounted();
    //---- 
    if(counted_bars<0) return(-1);
    //---- 
    int i1, i2, t_per;
    double Range, AvgRange, smin, smax, SsMax, SsMin, SSP, price;
    bool uptrend, old;
    //----
    if(Bars <=PeriodADX  + 1) 
        return(0);
    //----
    for(shift = CountBars - PeriodADX ; shift >= 0; shift--) 
    { 
        SSP = MathCeil(Kperiod / iADX(NULL, 0, PeriodADX , PRICE_CLOSE, MODE_MAIN, 1));
        Range = 0;
        AvgRange = 0;
        for(i1 = shift; i1 <= shift + SSP; i1++)
        {
            AvgRange = AvgRange + MathAbs(High[i1] - Low[i1]);
        }
        Range = AvgRange / (SSP + 1);
        //----
        SsMax = High[shift]; 
        SsMin = Low[shift]; 
        for(i2 = shift; i2 <= shift + SSP - 1; i2++)
        {
            price = High[i2];
            if(SsMax < price) 
                SsMax = price;
            price = Low[i2];
            if(SsMin >= price)  
                SsMin = price;
        }
        //----
        smin = SsMin + (SsMax - SsMin)*K / 100; 
        smax = SsMax - (SsMax - SsMin)*K / 100; 
        val1[shift] = 0.0;
        val2[shift] = 0.0;
        if(Close[shift] < smin)
        {
            uptrend = false;
        }
        if(Close[shift] > smax)
        {
            uptrend = true;
        }
        if(uptrend != old && uptrend == true) 
        {
            val1[shift] = Low[shift] - Range*Kstop;
        }
        if(uptrend != old && uptrend == false) 
        {
            val2[shift] = High[shift] + Range*Kstop;
        }
        old = uptrend;
    }  
    
//---- Alert
    if (Period()<Time_alert_minutes) t_per=Period(); else t_per=Time_alert_minutes; // ???? ??<Time_alert, ????? ????? ?????????? ???? ??? ? ??.
    if (Alert_message==true && CurTime()>AlertTime && val1[0]!=0.0)
    { 
        Alert(Symbol()," +++  BUY !!! +++" , "  //AltrTrend_Signal_v2_2_alert");
        AlertTime=CurTime() + (t_per - MathMod(TimeMinute(CurTime()), t_per))*60;
        //PlaySound("payment.wav");
        int winHandle = WindowHandle( Symbol(), Period() );
        StartScript(winHandle, script_name);
    }
    if (Alert_message==true && CurTime()>AlertTime && val2[0]!=0.0)
    { 
        Alert(Symbol()," +++  SELL !!!   +++" , "  //AltrTrend_Signal_v2_2_alert");
        AlertTime=CurTime() + (t_per - MathMod(TimeMinute(CurTime()), t_per))*60;
        // PlaySound("payment.wav");
        int winHandle = WindowHandle( Symbol(), Period() );
        StartScript(winHandle, script_name);
    }

    return(0);
}

void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)
{
    char buf[];
    StringToCharArray("MetaTrader4_Internal_Message", buf);
    int MT4InternalMsg = RegisterWindowMessageA(buf);
    StringToCharArray(ScriptName, buf);
    SendMessageA(hWnd, MT4InternalMsg, 16, buf);
    if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }
}

void ClearConfigDialog()
{
    Sleep(100);
    keybd_event(13, 0, 0, 0);
} 

//+------------------------------------------------------------------+
 
Pavlick:

ok?


Привет,павлик!

инсталлировал ваш код-

работает прекрасно!

вы большои талант-

сумели пробить стену!

огромное дело-

теперь надежные сигналы и

новые горизонты!

какои сегодня хороший день!

хочу отдельно поблагодарить интегер

он написал скрипт вызова плеера!

есть однако таланты и добрые люди-

хвала вам!

сегодня 11.9.14

панса

 
Andrei01:

А у меня большинство мусорных предупреждений выскакивает из-за совершенно законной, корректной и стандартной передачи переменной по ссылке в функцию, когда имя шаблона функции совпадает с самой переменной как это и должно быть в данной конструкции в её стандартном и типичном применении, когда сама же переменная передается в функцию под своим же именем.

Приведите пример, пожалуйста.

К сожалению, МК не смогли дать грамотное и логичное объяснение этого, мол иногда у кого-то там якобы может возникнуть недопонимание в других конструкциях когда есть похожие имена.

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


Извините за случайно стертый коммент - не туда нажал, а восстановить функции нет.

 
Renat:

Приведите пример, пожалуйста.

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


//--------------------------------------------------------------------
#property indicator_chart_window
//--------------------------------------------------------------------
int a=1,b=2;
//--------------------------------------------------------------------
void start(){        
        int k=sum(a,b);
        Alert(k);
}
//--------------------------------------------------------------------
int sum(int& a, int& b){        
        return(a+b);
}


На эту стандартную, законную и распространенную конструкцию по стандартам языка Си редактор выдает предупреждение: "declaration of 'a' hides global declaration at line 4" и "declaration of 'b' hides global declaration at line 4", которое еще при этом неправильно и неграмотно по своей сути, так как тут нет ни декларации новой переменной внутри функции, ни намека на хоть какое-то возможное перекрытие переменных.

В результате даже в не слишком большом коде программы имеем сотни неуместных предупреждений.

 
Vinin:


Индикатор рабочий, но в нем разработчиком сделана логическая ошибка

 


Привет,Винин!

Вы проверили индикатор  : AltrTrend_Signal_v2_2.mq4

и нашли логическую ошибку

в формуле :  SSP=MathCeil(Kperiod/iADX(NULL,0,PerADX,PRICE_CLOSE,MODE_MAIN,1));

вы подчеркнули 1 на конце

что же по Вашему мнению должно тут стоять?

панса

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