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

 
Mislaid:

Controlar os limites da matriz especificando uma string no código é muito útil. Costumava ser: dividir por zero, e olhar onde você quiser. E é ainda pior se o erro não apareceu.

Você poderia dar um exemplo de como fazer isso? Não consegui encontrar nada sobre este recurso na documentação.
 
Andrei01:
Você poderia dar um exemplo de como fazer isso? Não encontrei nada sobre este recurso na documentação.

Exatamente! Você não precisa fazer nada agora. Abra a aba "especialistas" e leia os logs. Se aparecer um erro, você verá uma mensagem sobre isso. Como:

matriz fora do intervalo....... indicando o número da linha no código.

 
Mislaid:

Abra a aba 'especialistas' e leia os logs.

Isto funciona para indicadores e roteiros?
 
Pavlick:

Tente mudar o caso da primeira letra do nome do roteiro/indicador. Também já lutou uma vez https://www.mql5.com/ru/forum/152533/page2#982156

P.S: bem, mudar o fio para char[]

Responda, Pavlik!

Bom para você Pavlik!

Seu código funcionou imediatamente!

Agora você pode executar o

roteiro!

Falta ser encaixado no indicador!

Seu código foi inserido no indicador!

há apenas um pequeno obstáculo

indicador não quer reconhecer o nome

do roteiro. Eu escrevi o nome no local

de onde o roteiro deve ser chamado.

Tudo o que resta é que o roteiro seja

reconhecido!

você pode me ajudar?

sinceros cumprimentos

punsa

 
pansa:

Responda, Pavlik!

Você é ótimo, Pavlik!

seu código funcionou de imediato!

agora você pode executar o

o roteiro!

Falta ser encaixado no indicador!

Seu código foi inserido no indicador!

há apenas um pequeno obstáculo

indicador não quer reconhecer o nome

do roteiro. Eu escrevi o nome no local

de onde o roteiro deve ser chamado.

Tudo o que resta é para o roteiro

reconhecido!

você pode me ajudar?

sinceros cumprimentos

Panza




Eu ajudo se você precisar
 
Ainda há uma boa captura com estes avisos (pelo menos havia). A prioridade das expressões lógicas mudou. Quando a prioridade não é explicitamente definida por parênteses, o compilador apenas emite um aviso, embora a expressão lógica tenha agora um efeito completamente diferente do anterior. Deve ser um erro. Alguém pode ter decidido abandonar as advertências, e entre elas está uma advertência sobre uma expressão lógica.
 
Vinin:

Eu o ajudarei se você precisar de alguma ajuda.

Oi, Vinin!

muito obrigado

por querer ajudar!

Estou lhe enviando para uma visão geral de como o

chamada de roteiro do compositor

pansa

____________________________________

Oi Pavlik!

Gostaria de lhe mostrar um exemplo

como a chamada do roteiro foi organizada

com o compositor, agora não está funcionando.

para revisão

pansa

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

//|exemplo_executado_escrito.mq4 |

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

#importar "user32.dll

int RegisterWindowMessageA(string MessageName);

int PostMessageA(int hwnd, int msg, int wparam, string Name);

void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo);

#importar

int start()

{

int winHandle = WindowHandle( Symbol(), Period() );

//

//

//

if( sinal < 0 && trigl== verdadeiro && comprar == verdadeiro ) {StartScript( winHandle, "SchliesenProfitOrders" ); }

//

//

//

void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)

{

int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");

PostMessageA(hWnd, MessageNumber, 16, ScriptName);

se (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }

}

ClearConfigDialog() vazio

{

Sleep(100);

keybd_event(13, 0, 0, 0, 0);

}

//

//

//

retorno(0);

 
pansa:

Oi, Vinin!

muito obrigado

por querer ajudar!

Estou lhe enviando para uma visão geral de como o

chamada de roteiro do compositor

pansa

____________________________________

Oi Pavlik!

Gostaria de lhe mostrar um exemplo

como a chamada do roteiro foi organizada

com o compositor, agora não está funcionando.

para revisão

pansa


É realmente difícil clicar no SRC e colar o código?!

//+------------------------------------------------------------------+
//|                                        sample_execute_script.mq4 |
//+------------------------------------------------------------------+
#import "user32.dll"
  int RegisterWindowMessageA(string MessageName);
  int PostMessageA(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 = RegisterWindowMessageA("MetaTrader4_Internal_Message");
  PostMessageA(hWnd, MessageNumber, 16, ScriptName);
  if (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }
} 
void ClearConfigDialog()
{
  Sleep(100);
  keybd_event(13, 0, 0, 0);
}
//
//
//
return(0);
 
pansa:

Isto deve funcionar bem:

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);

}

E não se esqueça do caso da primeira letra do roteiro, por exemplo, se o roteiro "teste" não começar, você deve tentar "Teste".

Respeitosamente, Pavlik ))

 
Pavlick:

Isto deve funcionar bem:

E não se esqueça do caso da primeira letra do roteiro, por exemplo, se o roteiro"teste" não for executado, você deve tentar "Teste".

Cumprimentos, Pavlik )))


Oi Pavlik!

Tem seu refinamento e

tentou colocar tudo no indicador

mas o indicador não quer.

veja o que você pode fazer

para que funcione!

Panza

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

//|AltrTREND_Signal.mq4 |

//| Copyright 2014, MetaQuotes Software Corp. |

//|https://wwww.mql5.com |||||mql5.com

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

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

//|AltrTrend_Signal_v2_2_alert.mq4 |

//|Ramdass - Somente Conversão |

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

#propriedade copyright "Autor - OlegVS, GOODMAN"

#propriedade rigorosa

#importar "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);

#importar

#janela_do_cartão_indicador de propriedade

#property indicator_buffers 2

#indicador de propriedade_color1 DeepSkyBlue

#Indicador de propriedade_color2 OrangeRed

#largura_do_indicador de propriedade1 1

#largura_do_indicador de propriedade2 1

//---- parâmetros de entrada

bool externo Alert_message=verdadeiro;

tempo_alert_minutes=60; // ????? ????? ?????????? ???? ??? ? 60 ?????.

externo int K = 30;

Kstop duplo externo = 0,5;

período interno externo Kp = 150;

Exterior int PeriodADX = 7; //14;

Exterior int CountBars = 100;

//---- buffers

duplo val1[];

duplo val2[];

duplo AlertTime;

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

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

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

int init()

{

nome_curto_de_filtro;

//---- linha indicadora

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(Barras Contagem>=Barras)

CountBars=Bars;

SetIndexDrawBegin(0, Barras - Barras-Contra-Barras + PeriodADX );

SetIndexDrawBegin(1, Barras - Barras-Contra-Barras + PeriodADX );

//----

retorno(0);

}

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

//| AltrTrend_Signal_v2_2|

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

int start()

{

int i, shift, counted_bars = IndicatorCounted();

//----

if(counted_bars<0) return(-1);

//----

int i1, i2, t_per;

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

bool uptrend, velho;

//----

if(Bars <=PeriodoADX+ 1)

retorno(0);

//----

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

{

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

Faixa = 0;

AvgRange = 0;

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

{

AvgRange = AvgRange + MathAbs(Alta[i1] - Baixa[i1]);

}

Alcance = AvgRange / (SSP + 1);

//----

SsMax = Alto[turno];

SsMin = Baixo[turno];

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

{

preço = alto[i2];

if(SsMax < preço)

SsMax= preço;

preço = Baixo[i2];

if(SsMin >= preço)

SsMin = preço;

}

//----

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 = falso;

}

if(Close[shift] > smax)

{

uptrend = true;

}

if(uptrend != velho && uptrend == verdadeiro)

{

val1[shift] = Baixo[shift] - Alcance*Kstop;

}

if(uptrend != velho && uptrend == falso)

{

val2[shift] = Alto[shift] + Alcance*Kstop;

}

antigo = tendência de alta;

}

void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)

{

{

char buf[];

StringToCharArray("MetaTrader4_Internal_Message", buf;)

int MT4InternalMsg = RegisterWindowMessageA(buf);

StringToCharArray("fPlayer", buf);

SendMessageA(hWnd, MT4InternalMsg, 16, buf);

se (AutomaticallyAcceptDefaults) { ClearConfigDialog(); }

}

ClearConfigDialog() vazio

{

Sleep(100);

keybd_event(13, 0, 0, 0, 0);

}

//---- Alerta

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)

{

Alerta(Símbolo(), "++++ COMPRAR!!! +++"//AltrendTrend_Signal_v2_2_alert ");

AlertTime=CurTime() + (t_per - MathMod(TimeMinute(CurTime()), t_per))*60;

//PlaySound("payment.wav");

fPlayer ;//script

}

if (Alert_message===true && CurTime()>AlertTime && val2[0]!=0.0)

{

Alerta(Símbolo(), "+++ VENDA !!!+++"//AltrendTrend_Signal_v2_2_alert");

AlertTime=CurTime() + (t_per - MathMod(TimeMinute(CurTime()), t_per))*60;

// PlaySound("payment.wav");

fPlayer ;

}

retorno(0);

}

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