Adeus robô - olá marasmus - página 5

 
Sugiro o seguinte: anexe o indicador (aquele que funcionava antes, sem alterações) aqui ou em minha mensagem pessoal e eu o corrigirei.
 
Pavlick:
Sugiro o seguinte: anexar indicador (a variante que funcionava antes, sem alterações) aqui ou em minha mensagem pessoal, eu o corrigirei.

Olá, Pavlik!

Essa é a versão.

original.

tente arrastar o código

pansa

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

//| AltrTrend_Signal_v2_2.mq4

//| Ramdass - Somente conversão

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

#propriedade copyright "Autor - OlegVS, GOODMAN"

#janela_do_cartão_indicador de propriedade

#property indicator_buffers 2

#Indicador de propriedade_color1 Chartreuse

#indicador de propriedade_color2 Amarelo

#largura_do_indicador de propriedade1 2

#largura_do_indicador de propriedade2 2

//---- parâmetros de entrada

externo int K=30;

duplo Kstop externo=0,5;

período interno externo Kperiod=150;

externo interno PerADX=14;

Externo interno CountBars=350;

intON=1; //zakton's externos

//---- buffers

duplo val1[];

duplo val2[];

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

//| Função de inicialização do indicador personalizado |

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

int init()

{

nome_curto_de_filtro;

//----linha indicadora

IndicatorBuffers(2);

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,159);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1.159);

SetIndexBuffer(0,val1);

SetIndexBuffer(1,val2);

//----

retorno(0);

}

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

//| AltrTrend_Signal_v2_2|

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

int start()

{

se (CountBars>=Bars) CountBars=Bars;

SetIndexDrawBegin(0,Bars-CountBars+PerADX);

SetIndexDrawBegin(1,Bars-CountBars+PerADX);

int i,shift,counted_bars=IndicatorCounted();

int i1,i2;

faixa dupla,AvgRange,smin,smax,SsMax,SsMin,SSP,preço;

bool uptrend,velho;

//----

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

//---- inicial 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;

}

//----

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

{

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

Faixa = 0;

AvgRange=0;

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

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

}

Alcance=AvgRange/(SSP+1);

SsMax=Alto[turno]; SsMin=Baixo[turno];

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

{

price=High[i2];

if(SsMax<preço) SsMax=preço;

price=Low[i2];

if(SsMin>=preço) SsMin=preço ;

}

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

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

val1[shift]=0;

val2[shift]=0;

se (Fechar[turno]<smin)

{

uptrend = falso;

}

se (Fechar[turno]>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;

// código do zakton

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

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

}

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

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

}

}

retorno(0);

}

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

Olá, Pavlik!

Essa é a versão.

original.

tente arrastar o código

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:

Olá, Pavlik!

Essa é a versão.

original.

tente arrastar o código

pansa




O indicador funciona, mas o desenvolvedor cometeu um erro lógico nele

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);
Era disto que a Roche estava falando
 

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?


Oi Pavlik!

Instalou seu código...

Funciona perfeitamente!

Você é um grande talento...

Você quebrou a parede!

Ótimo trabalho -

agora sinais confiáveis e

♪ novos horizontes! ♪

que dia bom hoje!

Eu gostaria de agradecer especialmente à Integer.

Ele escreveu o roteiro de chamada do jogador!

Existem, no entanto, talentos e boas pessoas.

Kudos para você!

Hoje é 11/9/14!

Panza

 
Andrei01:

A maioria dos meus avisos de lixo são gerados por causa de uma passagem perfeitamente legal, correta e padrão de uma variável por referência em uma função, quando o nome do modelo da função coincide com a própria variável como deveria estar nesta construção em seu uso padrão e típico, quando a própria variável é passada para a função por seu próprio nome.

Dê um exemplo, por favor.

Infelizmente, o MC não pôde dar uma explicação competente e lógica disto, pois às vezes alguém lá pode ter um mal-entendido em outras construções quando há nomes semelhantes.

Se entendi o caso corretamente, a resposta foi lógica e correta, e foi aprendida durante mais de algumas décadas de programação contínua.


Desculpe pelo comentário apagado acidentalmente - cliquei no lugar errado e não há nenhuma função para restaurá-lo.

 
Renat:

Dê-me um exemplo, por favor.

Se entendi o caso corretamente, a resposta foi lógica e correta, e tem sido sofrida através de mais de duas décadas de programação contínua.


//--------------------------------------------------------------------
#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);
}


O editor gerou o aviso "declaração de 'a' esconde a declaração global na linha 4" e "declaração de 'b' esconde a declaração global na linha 4" para este padrão, construção legal e popular pelos padrões da linguagem C que também é incorreta e analfabeta por sua própria essência, pois não há declaração de uma nova variável dentro de uma função nem qualquer dica de qualquer possível sobreposição de variáveis.

Como resultado, temos centenas de avisos inapropriados, mesmo em um código de programa não tão grande.

 
Vinin:


O indicador funciona, mas o desenvolvedor cometeu um erro lógico nele


Oi Vinin!

Você verificou o indicador: AltrTrend_Signal_v2_2.mq4

e encontrou um erro lógico

em fórmula : SSP=MathCeil (Kperiod/iADX(NULL,0,PerADX,PRICE_CLOSE,MODE_MAIN,1))

você sublinhou 1 no final

o que você acha que deveria ser?

pansa