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

 
VIX XIV:
Boa noite. Como deve ser o código que vai encontrar a última ordem fechada? Parece-se com isto: "OrderSelect(OrderHistoryTotal, SELECT_BY_POS, MODE_HISTORY"?

Este é o aspecto que seu bloco deve ter aproximadamente:

int a=-1;

for(int is=OrdersHistoryTotal(); is>=0; is--)

{

if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))

{

if(OrderType()==OP_BUY) {a=OrderType(); break;}

if(OrderType()==OP_SELL){a=OrderType(); break;}

}

}

if(a===OP_BUY) Comentário("O último pedido de compra fechado na lista foi encontrado;)

if(a===OP_SELL) Comentário("A última ordem de venda fechada da lista foi encontrada;)


 

Li há muito tempo que não há garantia na disposição cronológica das ordens em OrdersHistoryTotal, e você tem que verificar até a data de encerramento.

 

@Valerius, você não pode inseri-lo como código? Ou o que está faltando?

 
Сергей Таболин:

@Valerius, você não pode inseri-lo como código? Ou o que está faltando?

Você poderia tornar humanamente possível inserir código como código no editor MT?

Nenhum de seus botões funciona da maneira que eu preciso.

 
Valerius:

Você poderia tornar humanamente possível a inserção do código como código no editor MT?

Nenhum de seus botões funciona da maneira que eu quero que funcionem.

Há uma maneira complicada. Copie e cole o que quiser de qualquer código. E cole aí seu código. Menos o destaque não funciona desta forma))))


if(OrderSelect(is,SELECT_BY_POS,MODE_TRADES))  Это чужой код и его можно править))))
 
Valerius:

Para a primeira pergunta, você precisa fazer uma função como esta:


for(int is=OrdensTotal()-1; is>=0; is--)
{
if(OrderSelect(is,SELECT_BY_POS,MODE_TRADES))
{//Fechar pedidos que foram abertos na sexta-feira da semana que não é a semana atual. Neste caso, não estamos fechando pedidos na sexta-feira da semana corrente.
if(OrderMagicNumber()==Magic && TimeDayOfWeek(TimeCurrent())==5 && TimeDayOfWeek(OrderOpenTime())==5 && TimeDayOfYear(OrderOpenTime())<TimeDayOfYear(TimeCurrent())
{
if (OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_BID),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE);
if (OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_ASK),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE);
if(!result) {error=GetLastError(); Print("LastError = ",error, ",Symbol()); }
senão {error=0;}
senão
{Print("NoMagic ",OrderMagicNumber();} // para Debug
senão

{Imprimir("Erro ao selecionar o pedido", GetLastError();}


Para a segunda pergunta, deve haver a seguinte entrada:

OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(MarketInfo(nameSym,MODE_ASK)), 3, clrNONE);

Boa sorte.

Obrigado! Funcionou como esperado na primeira pergunta

No segundo - número incorreto de parâmetros. Fixado desta forma - OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);

Só que agora eu não entendia bem a edição de minha primeira variante (eu a copiei de algum lugar) ...

 
Olá
Alguém pode, por favor, explicar como funciona o trailing take profi? Há algumas informações sobre a Trailing Stop na ajuda MT5, mas não há informações sobre Trailing Profit. Quando defino "Stop Loss trailing level (em pontos)" em meu Expert Advisor, por exemplo, para 100, entendo que o lucro móvel será ativado, quando o preço passar 100 pontos na direção requerida. Mas o que significa "Take Profit trailing level (em pontos)" = 10?
 
altec3:
Olá!
Alguém pode por favor explicar o princípio de trailing take profi? Não consigo encontrar nenhuma informação sobre a Trailing Stop na Referência MT5. Quando defino "Stop Loss trailing level (em pontos)" em meu Expert Advisor, por exemplo, para 100, entendo que o lucro móvel será ativado, quando o preço passar 100 pontos na direção requerida. Mas o que significa "Take Profit trailing level (em pontos)" = 10?

O TakeProfit é calculado em pips e o Trailing TakeProfit é calculado na moeda do depósito. Trailing TakeProfit é o lucro na moeda do depósito de uma ou mais ordens, e coloca paradas de ordens no valor especificado nas configurações, ou seja, a uma distância calculada.

Por exemplo, o Trailing Take Profit em $100 é especificado nas configurações. Uma vez que o preço atinge o lucro de 100$ e vai além, o programa calcula a distância de 100$ e coloca todos os pedidos de parada no local calculado, se permitir. Assim que o preço voltar às paradas, todos os pedidos serão fechados. Em princípio, isto é o mesmo que Trailing Stop, somente é calculado em moeda depo e lucro de trilhas. Eu posso ter cometido um erro em algum lugar, mas este é o princípio. Espero tê-lo explicado.

 
Como posso usar a pitão para solicitar todas as barras do terminal de um determinado período de tempo?
 
Entendo corretamente que no mt5, ao invés de fechar, POSITION_TIME_UPDATE deve ser vigiado?
Razão: