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

 
MakarFX #:

Sim, você fez uma bagunça)

Agora, em cada pasta, um a um, renomeie a pasta Experts para _Experts e a pasta Indicators para _Indicators.

Renomeado em uma pasta - inicie o terminal, se não ajudou - renomeie-o de volta e vá para a pasta seguinte.

P.S. A primeira vez que o terminal começará um pouco mais longo do que o normal.

Makar!

O evento aconteceu hoje. Portanto, eu não toquei em pastas com datas antigas.

E fazer mudanças nas pastas frescas não mudou nada.

Por isso, arrastei perfis, indicadores e Expert Advisors para outro terminal. Finalmente terminei a bagunça.

Agora tudo está funcionando. Tenho-o em um terminal diferente, porém. Mas o importante é o resultado - você pode trabalhar.

Apagarei esse terminal mais tarde.

Penso que sua sugestão de encontrar os indicadores e perfis através do editor é perfeita!

Especialmente para tais "manequins" na programação, como eu.

Muito obrigado por sua ajuda e capacidade de resposta!

Boa sorte!

Cumprimentos!

 

Olá a todos. Apenas começando a entender tudo sobre isto para dizer de uma vez que sou mais verde que verde. Não sei quanto tempo tenho, mas terei alguma experiência. Você pode me dizer quem enfrentou esta situação? Preciso de um roteiro ou código que vigie nos próximos 10 pontos para cima e para baixo e sem abertura de compra e venda.

1.....Por exemplo, veio um tick - o código parece se nos próximos 10 pontos para baixo e (ou) para cima o pedido não estiver, então defina um pedido de venda. se sim, então nada. Também com uma ordem de compra

Aqui está um exemplo deesquema no Gerador de EA Forex



Arquivos anexados:
hktrabmcw4.jpg  222 kb
 
valentin104 um roteiro ou código que vigie nos próximos 10 pontos para cima e para baixo e sem abertura de compra e venda.

1.....Por exemplo, veio um tick - o código parece se nos próximos 10 pontos para baixo e (ou) para cima o pedido não estiver, então defina um pedido de venda. se sim, então nada. Também com uma ordem de compra

Aqui está um exemplo deesquema no Gerador de EA Forex



Este esquema é idiota.

 
Artyom Trishkin #:

É um esquema idiota.

Não, parece que sem "se" e sem "se"). Mas não era isso que eu queria dizer.

SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)

O script dá tick_s =1.0 tick_vflue =80.32786885245245902, mas no tick_valor da coruja =80.37529660186777 tick_size =1e-05

A pontuação se decompõe.




 
Artyom Trishkin #:

É um esquema idiota.

Você perdeu o ponto.

valentin104 #:

Ei, pessoal. Estou apenas começando a lidar com tudo isso, então vou apenas dizer o seguinte Estou mais verde que verde.

 
Galim_V #:

Não, parece que sem "se" e sem "se"). Mas não era isso que eu queria dizer.

O script dá tick_s =1.0 tick_vflue =80.32786885245245902 e no tick_valor da coruja =80.37529660186777 tick_size =1e-05

O tick_value está quebrado.




tick_size =1e-05

Normalizar DoubleToString( tick_size , 2)

 
MakarFX #:

tick_size =1e-05

Normalizar DoubleToString( tick_size , 2)

Zeros sozinhos. Nem mesmo um centésimo.

//+------------------------------------------------------------------+
//|                                                     MAX+risk.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property script_show_inputs
enum Mani
  {
   free_margin,
   balans
  };
input Mani risk_mani;
input double Lot=0.0;
input int max_risk =0; //В% от свободных средсв или...
input int stoploss=300;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   double Lots=0;
   int    Max_Risk=0;

   printf("ACCOUNT_MARGIN_FREE =  %G",AccountInfoDouble(ACCOUNT_MARGIN_FREE)); //Размер свободных средств на счете  в валюте
   printf("ACCOUNT_BALANCE =  %G",AccountInfoDouble(ACCOUNT_BALANCE)); //Баланс счета в валюте депозита
   printf("ACCOUNT_MARGIN_LEVEL =  %G",AccountInfoDouble(ACCOUNT_MARGIN_LEVEL));    // Уровень залоговых средств в %

   double freemani=AccountInfoDouble(ACCOUNT_MARGIN_FREE);
   double balance=AccountInfoDouble(ACCOUNT_BALANCE);
   double tick_s =  SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)/_Point;  //Минимальное изменение цены
   double tick_value= SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE);//Размер минимального изменения цены инструмента в валюте депозита
   if(risk_mani==balans)
     {
      if(max_risk>0&&stoploss>0)
        {
         double tmp= balance*max_risk/100/(stoploss*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE));
         Lots=NormalizeDouble(tmp,2);
         printf(" Чтобы max_risk был не более %f%s%d%s%f",max_risk," в % от ACCOUNT_BALANCE при stoploss =",stoploss,",неоходим Lots =",Lots);
        }
      if(Lot>0)
        {
         Max_Risk= (int)MathRound(Lot*(stoploss*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE))/balance*100);
         printf(" Max_Risk при Lot=%f%s%d,%s%d%s",Lot," и stoploss =",stoploss," будет =",Max_Risk,"%");
        }
     }
   if(risk_mani==free_margin)
     {
      if(max_risk>0&&stoploss>0)
        {
         double tmp= freemani*max_risk/100/(stoploss*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE));
         Lots=NormalizeDouble(tmp,2);
         printf(" Чтобы max_risk был не более %f%s%d%s%f",max_risk," в % от ACCOUNT_MARGIN_FREE при stoploss =",stoploss,",неоходим Lots =",Lots);
        }
      if(Lot>0)
        {
         Max_Risk= (int)MathRound(Lot*(stoploss*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE))/freemani*100);
         printf(" Max_Risk при Lot=%f%s%d,%s%d%s",Lot," и stoploss =",stoploss," будет =",Max_Risk,"%");
        }
     }
   Print("Lots =",Lots," Max_Risk =",Max_Risk," tick_s =",tick_s," tick_vflue =",tick_value);
  }
//+------------------------------------------------------------------+

Funciona aqui. No quadro, variáveis ao invés de funções. Mas já desde o início a função gera disparates no OnTick().

 
Galim_V #:

Todos os zeros. Nem mesmo um centésimo conseguiu encontrar.

Funciona aqui. Em coruja, variáveis ao invés de funções. Mas a função já gera disparates no OnTick().

Encontrei-a. Desculpe. O valor do tick_size =1e-05 é 0,00001 e está correto.

 
valentin104 #:

Vou lhe dizer logo de cara, estou mais verde que verde. Eu não sei quanto tempo vou durar.


Com esta abordagem de aprendizagem de programação, é melhor contratar um programador e não ter que se preocupar com isso.

 

Temos um indicador padrão ZigZag, mas seu estilo de desenho de linha é DRAW_SECTION, ou seja,a maior parte dos valores no buffer do indicador é igual a EMPTY_VALUE e somente às vezes aparecem valores diferentes (pontos de quebra) que servem como base para o desenho de linha. Penso que todos viram este indicador e/ou seu código pelo menos uma vez em suas vidas.

A tarefa é obter o valor, que corresponde ao último ponto de parada, ou seja, o último valor do buffer indicador, que não é igual a EMPTY_VALUE.

Pergunta: é a abordagem correta para fazer um loop através dos valores do buffer indicador, começando de um deslocamento zero para baixo, chamando a função iCustom a cada iteração, até que o valor obtido seja diferente do VAZIO_VALOR?

Ou existe alguma maneira mais fácil de obter este valor?

Razão: