Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1048

 

Aqui até escreveu as gravuras



Fez uma entrada, talvez isto ajudehttp://recordit.co/ot9m4jpiws

 
Roman Sharanov:

Aqui até escreveu as gravuras


O baixo nível do pedido de modificação não está na realidade a alterar os níveis que já existem.
 
Vladimir Karputov:
Não posso efectuar um pedido de modificação sem realmente alterar os níveis já existentes.

Então o que está a causar o erro? Que estou a tentar pôr a velha paragem (zero, neste caso) na paragem.

Acrescentei uma verificação no registo, se o mesmo take for o mesmo, então nenhuma transferência é feita...mas ainda assim o mesmo

Ou tenho de normalizar o tee, caso contrário não verifica?

 
Roman Sharanov:

Então o que está a causar o erro? Que estou a tentar pôr a velha paragem (zero, neste caso) na paragem.

Acrescentei uma verificação no registo, se o mesmo take for o mesmo, então nenhuma transferência é feita...mas ainda assim o mesmo

Ou preciso de normalizar o TP, caso contrário não o verifica?

A posição tinha estas paragens: uma melancia e três melões. Quer mudar as paragens e, atenção, envia uma encomenda: uma melancia e três melões.

Ou seja, na realidade não há qualquer alteração nas paragens.
 
Vladimir Karputov:
A posição tinha estas paragens: uma melancia e três melões. Quer mudar as paragens e, atenção, envia uma encomenda: uma melancia e três melões.

Portanto, não há efectivamente qualquer alteração nas paragens.

Estou a ver. Então como é que eu mudo isso sem alterar o nível de paragem?

 
Roman Sharanov:

Já está. Então como posso mudar o take profit sem alterar o nível de paragem?

Não se compreende nada. Leia sobre melancias e melões até se tornar claro.
 
Vladimir Karputov:
Não se compreende nada. Leia sobre melancias e melões até que esteja claro.

Vamos abstrair-nos do facto de eu ter

Eu tenho uma posição, a sua tomada no nível 5, a sua entrada no nível 3, a sua paragem no nível 2

Quero mudar o take para o nível 6.

Como é que faço isso?

 
Roman Sharanov:

Vamos abstrair-nos do facto de eu ter

Tenho uma posição, a sua tomada no nível 5, a sua entrada no nível 3, a sua paragem no nível 2

Quero levá-lo para o nível 6.

Como é que faço isso?

Código completo. Símbolo. Calendário. Data de início do teste. Gráfico (captura de ecrã). Ficheiro de registo do separador "Registo".
Isto é o mínimo.
Estou à espera até amanhã.
 

Fórum sobre Comércio, Sistemas de Comércio Automatizados e Testes de Estratégia

FAQ de Iniciantes MQL5 MT5 MetaTrader 5

Roman Sharanov, 2019.05.23 09:43

void transposeTakeProfit(double tpLvl){
        for(int i = PositionsTotal() - 1; i >= 0; i--){
        PositionSelectByTicket(PositionGetTicket(i));
        if(PositionGetString(POSITION_SYMBOL) == _Symbol && PositionGetInteger(POSITION_MAGIC) == _magic){
                trade.PositionModify(PositionGetTicket(i), PositionGetDouble(POSITION_SL), tpLvl);
        }
   }
}

Bem, aqui acontece, uma troca é aberta, o nível para o qual tenho de mover todo o lucro, se houver outras trocas

Mas esta é a primeira troca, vai directamente para esta função e imediatamente um erro


PositionSelectByTicket é absolutamente desnecessário aqui. É suficiente deixar o seleccionado.

Para evitar tentar colocar uma paragem ou uma tomada ao preço em que já está colocada, devemos verificar se a nova paragem ou tomada é igual à antiga.

E precisamos de compreender quantos spreads são o nível mínimo para colocar uma paragem.

 

Olá a todos. Por favor, diga-me o que raio se está a passar.

Estou a escrever código em mql5, quero usar a função PositionClose, mas diz "Meu! PositionClose' - a função só pode ser declarada no âmbito global".

Eu era como, quero dizer que esta mesma função está em #incluir <Comércio\Comércio.mqh> por defeito.


Verificado. Está lá.

Porque é que se está a exibir, o que é que precisa, como fechar a posição?


O próprio código


string bumaga1 = "SBERP";
 int MinuteClose;
 
//---------- Закрываем позиции и удаляем ордера перед концом сессии старт
 MinuteClose =  MinuteMQL4();
 
 if (PositionSelect(bumaga1) && HOUR1 == 18 && MinuteClose > 15)
 {
                bool  PositionClose(bumaga1, 3);
 }
 
  if (!PositionSelect(bumaga1) && HOUR1 == 18)
  {
                                bool  OrderDelete(tik1);
   }
   
//---------- Закрываем позиции и удаляем ордера перед концом сессии энд
Razão: