Encontrando dificuldades para enviar pedidos. - página 3

 
Bem parece que a CT Trade o é.
 
Não gosta do tamanho dinâmico do lote?? Funciona com ct trade, quando eu uso um tamanho de lote fixo.
 
MetaNt:
Não gosta do tamanho dinâmico do lote ??? Funciona com ct trade, quando eu uso um tamanho de lote fixo.

CTrade é um invólucro para OrderSend().

Você escreveu que ela não funciona com um volume à 0,07 ou mesmo 1. Como você está definindo isto ? Lote=0,07 ?

 
angevoyageur:

CTrade é um invólucro para OrderSend().

Você escreveu que ela não funciona com um volume à 0,07 ou mesmo 1. Como você está definindo isto ? Lote=0,07 ?

Eu não tinha certeza se tinha escrito Mqlrequest e Mqlresult corretamente e por isso usei CTrade, descobri que funcionava se eu usasse volumes fixos, e agora descobri que posso multiplicar os volumes fixos por inteiros, mas se eu tentar alterar os volumes com frações recebo erros como lotes inválidos, o resultado do tamanho modificado do lote é impresso com o erro[volume inválido].
 
São decimais de certa complexidade, vou tentar normalizar o dobro.
 
MetaNt:
São decimais de certa complexidade, vou tentar normalizar o dobro.
Normalizar o dobro é uma correção para os decimais complexos, eu tentarei no meu lote dinâmico.
 
MetaNt:
NormalizeDouble é fornecido uma correção para os decimais complexos, eu vou tentar no meu lote dinâmico.

Fixo.

Parece que foi um dos meus fatores de escala a partir de algumas equações que estavam fora da CT Buy/Sell. Não foi um problema que eu tinha encontrado no mql4, então demorei algum tempo para localizá-lo, terei que ficar atento a isso se o mql4 for atualizado novamente.

Para qualquer outra pessoa com este problema, use 2 para a parte de dígitos da função NormalizeDouble().

 

007 você diz ?

Talvez você devesse perguntar ao Sr. Bond ;-)

 

Parece que estou encontrando o mesmo problema aqui. Confirmei que o tamanho do lote atende aos requisitos SYMBOL_VOLUME_MIN, SYMBOL_VOLUME_MAX e SYMBOL_VOLUME_STEP.

Por exemplo, eu recebo isto:

2014.04.07 14:49:35 2014.04.04 16:00:00 CTrade::OrderSend: venda imediata 0,53 EURUSD a 1,36934 sl: 1,37434 tp: 1,35934 [volume inválido].

Ao fazer um backtesting EA com este símbolo e estas especificações:


Aqui código que estou usando para enviar o pedido:

int    losses=1;
int    DecimalPoints=2;
 double Risk=0.03;
double Inc=0.1;
my_symbol=Symbol();
leverage=AccountInfoInteger(ACCOUNT_LEVERAGE);
contract=SymbolInfoDouble(my_symbol,SYMBOL_TRADE_CONTRACT_SIZE);
min_lot=SymbolInfoDouble(my_symbol,SYMBOL_VOLUME_MIN);
max_lot=SymbolInfoDouble(my_symbol,SYMBOL_VOLUME_MAX);
trade_size=equity*(Risk/100)*leverage;
trade_size/=contract;
trade_size+=losses*Inc;
NormalizeDouble(trade_size,DecimalPoints);
  if(trade_size<min_lot)
    {
     trade_size=min_lot;
    }
  else if(trade_size>max_lot)
    {
     trade_size=max_lot;
    }
trade.Sell(trade_size,my_symbol,price,0,price-tp,"Expert Sell");

EDIT:

É claro que posso colocar manualmente as negociações com este tamanho exato de lote.

 
Candles:

Parece que estou encontrando o mesmo problema aqui. Confirmei que o tamanho do lote atende aos requisitos de SYMBOL_VOLUME_MIN, SYMBOL_VOLUME_MAX e SYMBOL_VOLUME_STEP.

Por exemplo, eu recebo isto:

2014.04.07 14:49:35 2014.04.04 16:00:00 CTrade::OrderSend: venda imediata 0,53 EURUSD a 1,36934 sl: 1,37434 tp: 1,35934 [volume inválido].

Ao fazer um backtesting EA com este símbolo e estas especificações:


Aqui código que estou usando para enviar o pedido:

EDIT:

É claro que posso colocar manualmente as negociações com este tamanho exato de lote.

Esta linha é sem efeito :

NormalizeDouble(trade_size,DecimalPoints);

Você tem que afetar o resultado para uma variável, veja a documentação de NormalizeDouble.

trade_size=NormalizeDouble(trade_size,DecimalPoints);
Razão: