Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1936

 
E então na função você pode multiplicar por lote/passo para cada pedido, mas eu acabei de fazer um multiplicador
 
E antes do OrderClose() eles esqueceram (!)
 
Boa tarde. Você poderia aconselhar como pagar pelos serviços da MQL4 devido à situação atual?
 

Boa tarde a todos. Eu tenho um indicador que desenha uma seta no gráfico quando um sinal aparece. Acontece que todas essas setas são colocadas no histórico no gráfico e você pode avaliar o potencial de sinais.

gráfico com setas indicadoras.

Tentei anexar um alerta que sinalizasse a ocorrência de um sinal. Encontrei uma função no indicador que desenha setas quando um sinal aparece.

void SetDivergenceUP(string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr=iATR(sy,PERIOD_CURRENT,14,index);
   color line_color=clrNONE;
   string nm="", gv_name="";
   if(name_ind=="AO") {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if(name_ind=="MACD") {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if(name_ind=="RSI") {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy,PERIOD_CURRENT,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy,Period(),index)+atr*shiftArrow;
   if(ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
      GlobalVariableSet(gv_name,-1.0);
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),last_prc_tm);
   nm=Prefix+"P"+name_ind+"divUpper"+TimeToString(time_b);
   SetTLine(0,nm,line_color,0,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+" "+name_ind+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if(wnd>0) {
      nm=Prefix+name_ind+"divUpper"+TimeToString(time_b);
      SetTLine(0,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+" "+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
      }

}


Eu adicionei uma linha ao final desta função para gerar o alerta. Destaquei a linha adicionada com cores ;-)

void SetDivergenceUP(string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr=iATR(sy,PERIOD_CURRENT,14,index);
   color line_color=clrNONE;
   string nm="", gv_name="";
   if(name_ind=="AO") {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if(name_ind=="MACD") {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if(name_ind=="RSI") {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy,PERIOD_CURRENT,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy,Period(),index)+atr*shiftArrow;
   if(ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
      GlobalVariableSet(gv_name,-1.0);
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),last_prc_tm);
   nm=Prefix+"P"+name_ind+"divUpper"+TimeToString(time_b);
   SetTLine(0,nm,line_color,0,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+" "+name_ind+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if(wnd>0) {
      nm=Prefix+name_ind+"divUpper"+TimeToString(time_b);
      SetTLine(0,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+" "+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
      }
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol());
}

O Alerta está funcionando e tudo está normal no testador. Mas quando inicio o terminal e se houver um indicador no gráfico, ele emite tantos bipes e mensagens quanto as setas no históricoJ O que devo fazer e como devo fazer para que o alerta seja dado somente quando o último sinal é recebido quando o terminal está ligado, e as setas no histórico são silenciosas?
 
DanilaMactep #:

Boa tarde a todos. Eu tenho um indicador que desenha uma seta no gráfico quando um sinal aparece. Acontece que todas essas setas são colocadas no histórico no gráfico e você pode avaliar o potencial de sinais.

Tentei anexar um alerta que sinalizasse a ocorrência de um sinal. Encontrei uma função no indicador que desenha setas quando um sinal aparece.


Eu adicionei uma linha ao final desta função para gerar o alerta. Destaquei a linha adicionada com cores ;-)

O Alerta está funcionando e tudo está normal no testador. Mas quando inicio o terminal e se há um indicador na tabela, ele gera tantos sinais de áudio e mensagens quanto havia setas no históricoJ O que devo fazer e como devo fazer Alerta somente no último sinal quando o terminal está ligado, e as setas no histórico estavam silenciosas?
Para alertar somente na primeira barra ou na barra zero.
 

Colegas - questão organizacional:

Espaço livre no disco C do meu computador, onde eu testei e otimizei a exposição no MT4 e MT 5 ficou escasso... como se de 220 deixasse 30 GB no meu computador...

Suspeito que o espaço é ocupado por logs de robôs trabalhando antes ou sendo testados, assim como o histórico de símbolos diferentes em terminais diferentes e MT4 e MT5 - estou interessado:

Como você pode limpar o histórico de símbolos (ticks por símbolo) e logs em diferentes terminais de pastas (não muitos no total cerca de 5).

Como antes, no MT 4 era um arquivo clear.bat mágico.

Em geral, é necessário ter opção(ões) para limpar espaço sob o histórico dos personagens (seus carrapatos) e logs em diferentes pastas. Todos os atalhos na área de trabalho são para MT4 e MT5. Mais ou menos como.

em geral, para limpar espaço em disco de testes passados (histórico de carrapatos de símbolos) e negócios (seus logs).

Pelo menos onde ler como limpar e que pastas apagar e MT4 e MT5 - onde estão localizados...

Sps.

 

Você pode me dar uma dica?

O Expert Advisor via iCustom usa um indicador, mas em cada tique há tais erros no registro.

Pode ser fixado sem editar o indicador? E se for o caso, como?

 
ALEKSANDR SOKOLOV cada tick no registro.

Pode ser fixado sem editar o indicador? E se for o caso, como?

Se o indicador, executado separadamente do Expert Advisor, não produzir tais registros, então verifique se os parâmetros do indicador estão especificados corretamente quando iCustom() é chamado no Expert Advisor.

 
Roman Shiredchenko terminais de pastas (não muitos no total cerca de 5).

Como antes, no MT 4 era um arquivo clear.bat mágico.

Em geral, é necessário ter opção(ões) para limpar espaço sob o histórico dos personagens (seus carrapatos) e logs em diferentes pastas. Todos os atalhos na área de trabalho são para MT4 e MT5. Mais ou menos como.

em geral, para limpar espaço em disco de testes anteriores (histórico de carrapatos de símbolos) e de negócios (seus logs).

Pelo menos onde ler como limpar e que pastas apagar e MT4 e MT5 - onde estão localizados...

Obrigado.

Qual é a idade do computador e quando os logs do sistema foram limpos em pastas locais, pastas temporárias e informações de serviço ou outras pastas de outros fabricantes. Em um computador de 10 anos de idade com apenas um navegador e um escritório, ele tirou quase 100 gigs com o sikliner de debaixo da administração. Em minha pasta Intel, encontrei 25gb.

Cartões na pasta de históricos. Também ali, por exemplo, de binans, todos os caracteres tinham 25 gb. E os logs na pasta compartilhada e na verificação da pasta mcl. Se você derrubar os troncos, isso não afeta nada. Mas se você tirar os carrapatos, talvez tenha que esperar que os carrapatos certos sejam carregados.

 
Artyom Trishkin #:

Se o indicador, executado separadamente do Expert Advisor, não fornecer tais registros, então verifique se os parâmetros do indicador estão especificados corretamente no Expert Advisor ao chamá-lo via iCustom()

Se você ativar o próprio indicador, ele é exibido em uma janela separada e cria várias etiquetas de texto, além do gráfico. Verifiquei se os parâmetros estão corretos, tentei não especificar parâmetros, o resultado é o mesmo.

Razão: