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

 
Yurij Kozhevnikov:

As variáveis estáticas não são reinicializadas ao alterar os parâmetros de entrada, período gráfico, etc.

Não existe algum tipo de truque para reinicializá-los à força? Um caminho mais longo, não existe um caminho simples e curto?

Inicialize no oninit e não os torne estáticos. De repente

 
Obrigado. Um sorriso é sempre melhor do que um negativo.
 
Olá! O servidor do MT5 da AMP Global está desligado. A nova digitalização da rede não ajuda. O registro de novo registro também não ajuda.
Arquivos anexados:
 

Saúde!

O que significa "arquivo ex4 inválido (7)" e "a inicialização global falhou"?

 
Yurij Kozhevnikov:
Obrigado. Um sorriso é sempre melhor do que um negativo.
Não me lembro de ter dito nada negativo que não fosse de propósito, mas o que quer que fosse.

MQL não é bem (não é de todo) C plus. Os membros da classe estática ou variáveis não devem estar em funções. Eles causam muitos problemas e estes problemas são então difíceis de localizar.

Somente no nível mais alto, em uma EA específica, pensando muito.
 

Olá!!!

  1. Há um conjunto de valores - 500 MA para cada barra

Como podemos calcular os arneses resultantes?:

- Ao mudar de direção ?

Aconselhado a mergulhar nos Mapas Kohonen, bem, eu não consegui descobrir!

 
Top2n:

Olá!!!

  1. Há um conjunto de valores - 500 MA para cada barra

Como podemos calcular os arneses resultantes?:

- Ao mudar de direção ?

Aconselhada a mergulhar no Kohonen Maps, bem eu não consegui descobrir!

quais são seus mA's?

Se a SMA, você provavelmente pode sobreviver com a aritmética escolar. Basta lembrar a fórmula :-)

 

Saúde!
Há um código que traduz uma parada para o Breakeven (para vendas, por exemplo):

if(PositionGetDouble(POSITION_SL)>PositionGetDouble(POSITION_PRICE_OPEN) && ask()<PositionGetDouble(POSITION_PRICE_OPEN)-BreakEven) {
                     //Comment("Modify sell");
                     MqlTradeRequest request;
                     MqlTradeResult  result;
                     ulong  position_ticket  = PositionGetTicket(i);// тикет позиции
                     string position_symbol  = PositionGetString(POSITION_SYMBOL); // символ
                     int    digits           = (int)SymbolInfoInteger(position_symbol,SYMBOL_DIGITS); // количество знаков после запятой

                     double sl               = PositionGetDouble(POSITION_PRICE_OPEN);  // Stop Loss позиции

                     double tp               = PositionGetDouble(POSITION_TP);  // Take Profit позиции
                     ENUM_POSITION_TYPE type = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);  // тип позиции
                     ZeroMemory(request);
                     ZeroMemory(result);
                     request.action          = TRADE_ACTION_SLTP; // тип торговой операции
                     request.position        = position_ticket;   // тикет позиции
                     request.symbol          = position_symbol;     // символ
                     request.sl              = NormalizeDouble(sl,digits);                // Stop Loss позиции
                     request.tp              = tp;                // Take Profit позиции
                     request.magic = Magic;

                     //--- вывод информации о модификации
                     PrintFormat("BreakEven POSITION_TYPE_SELL Modify #%I64d %s %s",position_ticket,position_symbol,EnumToString(type));
                     //--- отправка запроса
                     if(!OrderSend(request,result))
                        PrintFormat("BreakEven POSITION_TYPE_SELL OrderSend error %d",GetLastError());  // если отправить запрос не удалось, вывести код ошибки
                     //--- информация об операции
                     PrintFormat("BreakEven POSITION_TYPE_SELL retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
                  }

Se a linha de definição de parada estiver no nível de preço aberto, como a seguir:

double sl               = PositionGetDouble(POSITION_PRICE_OPEN);  // Stop Loss позиции

então ok, ele transfere a parada sem nenhum problema.

Mas como posso acrescentar aqui para que não seja pelo preço aberto, mas abaixo:

double sl               = PositionGetDouble(POSITION_PRICE_OPEN)-SymbolInfoDouble(_Symbol,SYMBOL_POINT);  // Stop Loss позиции

ou:

double sl               = PositionGetDouble(POSITION_PRICE_OPEN)-1.0;  // Stop Loss позиции (для РТС например и других фондовых штуковин)

Então, imediatamente os problemas voam para fora. Diz, eles são paradas erradas:

2020.07.29 13:06:24.127 Trades  '723763': failed modify #16003799 sell 1 RTS-9.20 sl: 126900, tp: 124470 -> sl: 126379, tp: 124470 [Invalid stops]

Embora você possa mover as mãos e abaixo da parada. Por favor, aconselhe como resolver este caso...

 

Bom dia a todos!


Sou um novato - apenas conectado à "abertura" do corretor - instalado MT5 no meu iPhone, não consigo me conectar à minha conta comercial. Meu iPhone requer um certificado. Meu corretor também me enviou o certificado. Eu não sei como instalá-lo no iPhone. Você pode me dizer como instalá-lo? Agradecemos antecipadamente!

Arquivos anexados:
 
Boa tarde, como pode ser estabelecida uma condição no OnTimer? O tempo pode ser comparado[0] TimeCorrect?