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

 

É correta a seguinte construção abreviada no código: a < b && ( c > d1 ||| c >d2 ||| c > d3) ?

Isto é para evitar a escrita: (a < b && c > d1) || (a < b && c > d2) etc. muitas vezes.

 
HeAic:

É correta a seguinte construção abreviada no código: a < b && ( c > d1 ||| c >d2 ||| c > d3) ?

Isto é para evitar a escrita: (a < b && c > d1) || (a < b && c > d2) e assim por diante muitas vezes.

É claro que serve. A única coisa que eu faria ao escrever construções tão grandes é especificar explicitamente os parênteses de prioridade:

(a < b)  && ( c > d1 || c >d2 || c > d3)

Para compiladores MT4/5, podemos fazê-lo sem os colchetes especificados, porque as prioridades existentes não nos permitirão calcular o resultado da expressão de uma maneira diferente. Mas estes parênteses têm duas vantagens:

  1. A expressão é mais fácil de entender visualmente sem nenhuma pergunta sobre prioridades (não lembre das prioridades para cada compilador).
  2. Se o código for movido para outro compilador, que pode ter prioridades diferentes, o código funcionará da mesma forma que no compilador atual.
 
Alexey Viktorov:

Obrigado, se

S_sk= SymbolInfoInteger("EURUSD",SYMBOL_SELECT);

devolveu a falsa, não há nenhum símbolo no Market Watch, como posso adicioná-lo lá?

 
lil_lil:

Obrigado, se

devolveu a falsa, não há nenhum símbolo no Market Watch, como posso adicioná-lo lá?

SymbolSelect()

Tudo está na ajuda. Cursor sobre o nome da função e F1

 
Artyom Trishkin:

SymbolSelect()

Tudo isso está na ajuda. Cursor sobre o nome da função e F1

Obrigado.

 

Qual é a razão para isto? Eu escrevi um roteiro que estabelece ordens limite no MT5. Quando eu envio para a tabela no terminal as ordens não são definidas, embora o resultado.retcode retorne 10009(ordem executada)

 
iv1986:

Qual é a razão para isto? Eu escrevi um roteiro que estabelece ordens limite no MT5. Quando eu envio para a tabela no terminal as ordens não são definidas, embora o resultado.retcode retorne 10009 (ordem executada)

  1. Código.
  2. Diário de bordo.
  3. Mandamentos de Estado.
Onde está tudo isso?

 
Ihor Herasko:

  1. Código.
  2. Diário de bordo.
  3. Estatuto.
Onde está tudo isso?

{MqlTradeRequest request={0};
MqlTradeResultado={0};
double Bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
double Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
int digits=SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);
duplo p=NormalizarDuplicar(GráficoPreçoSaído(),dígitos);
if( SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)==10)
{p=MathRound(ChartPriceOnDropped()*0.1)/0.1;
}
int V=75;
se (p<Ask)
{
request.action =TRADE_ACTION_PENDING; // tipo de operação comercial
request.symbol =Symbol(); // símbolo
request.volume =MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/V/((Ask-p)/
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE));
if (request.volume>AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL))
{ request.volume=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL));
}
request.type =ORDER_TYPE_BUY_LIMIT; // tipo de pedido
request.price =NormalizeDouble(Ask-SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE),dígitos); // preço para abrir
request.deviation=50; // desvio permissível do preço
request.sl =p; // Posição Stop Loss
request.tp =NormalizeDouble(Ask+(Ask-p)*3,dígitos); // Assumir posição de lucro
request.type_filling=ORDER_FILLING_IOC;
request.type_time=ORDER_TIME_DAY;
request.stoplimit=Ask;
OrderSend(solicitação,resultado);
}
se (p>Bid)
{
request.action =TRADE_ACTION_PENDING; // tipo de operação comercial
request.symbol =Symbol(); // símbolo
request.volume =MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/V/((p-Bid)/
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE));
if (request.volume>AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL))
{ request.volume=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL));
} // volume
request.type =ORDER_TYPE_SELL_LIMIT; // tipo de pedido
request.price =NormalizeDouble(Bid+SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE),dígitos); // preço para abrir
request.deviation=50; // desvio permissível do preço
request.sl =p; // Posição Stop Loss
request.tp =NormalizeDouble(Bid-(p-Bid)*3,dígitos); // Take Profit position
request.type_time=ORDER_TIME_DAY;
request.type_filling=ORDER_FILLING_IOC;
request.stoplimit=Bid;
OrderSend(solicitação,resultado);

}

o log diz: 2018.05.14 10:12:38.187 Comércio '992940': limite de venda 3.00 Si-6.18 a 62066 (62065) sl: 62331 tp: 61267 colocado para execução

 
iv1986:

O registro diz: 2018.05.14 10:12:38.187 Comércio '992940': limite de venda 3,00 Si-6,18 a 62066 (62065) sl: 62331 tp: 61267 colocado para execução

Isto está escrito no diário de bordo geral. E o que está no registro "Especialistas"? E não apenas uma linha, mas o tronco inteiro. Não há muito o que ver através do buraco da fechadura.

Além disso, não há verificação de códigos de retorno no código citado. Portanto, não está claro em que base a conclusão sobre o código de erro é feita.

Para aconselhar algo, você precisa ter passos claramente reprodutíveis (para ver o que você vê), e não há nenhum aqui. Recorte a parte problemática do código, execute-o você mesmo e depois mostre exatamente o que está falhando.

P. S. Para inserir o código, use o ícone "</>" ou Alt+S.

 

No final do código tambémAlert(result.retcode);

no diário de bordo geral:

2018.05.14 12:08:16.984 Scripts script LIMIT (Si-6.18,M15) carregado com sucesso

2018.05.14 12:08:17.187 Comércios '992940': limite de compra 3,00 Si-6,18 a 62091 (62092) sl: 61821 tp: 62905

2018.05.14 12:08:17.484 Comércios '992940': limite de compra aceito 3,00 Si-6,18 a 62091 (62092) sl: 61821 tp: 62905

2018.05.14 12:08:17.500 Negociações '992940': limite de compra 3,00 Si-6,18 a 62091 (62092) sl: 61821 tp: 62905 colocado para execução

2018.05.14 12:08:17.546 Comércios '992940': pedido #13235300 limite de compra 3,00 / 3,00 Si-6,18 a 62091 feito em 337.532 ms

2018.05.14 12:08:17.578 Scripts script LIMIT (Si-6.18,M15) removido


Na coluna Especialistas: 2018.05.14 12:08:17.578 LIMIT (Si-6.18,M15) Alerta: 10009, nada mais




Razão: