Erros, bugs, perguntas - página 771

 
maryan.dirtyn:

É o que estou a fazer))... 6ª hora... e não consigo descobrir onde está o erro

a relutância em utilizar bibliotecas padrão deve-se ao facto de as bandeiras e variáveis globais serem utilizadas dentro das funções, e não parece razoável desmontar o trade.mqh e outras partes

E que erro é devolvido? )))
 
maryan.dirtyn:

MetaQuotes-Demo

Login: 1219233

EURUSD

Acabei de o experimentar no canil, a mesma história. sem paragens. faço tudo no testador

Construir 655 (se ajudar)

Escrever uma inicialização explícita das estruturas:

   MqlTradeRequest request={0};
   MqlTradeResult  result={0};

Sem ele, os campos da estrutura ficam com lixo e não se preenchem todos os campos.

 

Obrigado...

é assim que eu deixo ir:

void OnTick(){ if(PositionsTotal()<1)OPEN(); }

bool OPEN(){
             MqlTradeRequest request={0};  ZeroMemory(request);
             MqlTradeResult  result={0};   ZeroMemory(result);
             

             request.symbol       = _Symbol;
             request.action       = TRADE_ACTION_DEAL;
             request.type_filling = ORDER_FILLING_FOK;
             request.deviation    = 100;
             request.volume       = NormalizeDouble(2,2);
             request.type         = ORDER_TYPE_BUY;
             request.price        = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
             request.tp           = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK) + 500*_Point,_Digits);
             request.sl           = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK) - 500*_Point,_Digits);

             OrderSend(request,result);     
                        
             if(result.retcode==10009 || result.retcode==10008)  Print("Succsesful open");
             else                                               Print("Error open: ",DoubleToString(GetLastError(),0),"  response code: ",result.retcode);
    
   return(true);}
 
ZeroMemory() já é supérfluo, já que uma zeragem mais económica e simples sobre ={0} é anterior;
 

como posso verificar isto de qualquer outra forma? este desenho recusa-se a funcionar correctamente

if(PositionGetDouble(POSITION_PRICE_OPEN)!=PositionGetDouble(POSITION_SL)){ ... }
 

Quando é que haverá parâmetros no OnTrade? Temos de fazer uma tal confusão...

Pelo menos saber que parâmetros estarão lá. Caso contrário, terei de refazer muitas delas até à altura do Campeonato.

 
pronych:

Quando é que haverá parâmetros no OnTrade? Temos de fazer uma tal confusão...

Pelo menos saber que parâmetros estarão lá. Caso contrário, terei de refazer muitas delas até à altura do Campeonato((.

Estará na construção de hoje amanhã. Adicionado outro ponto de entrada:

void OnTradeTransaction(const MqlTradeTransaction& trans,const MqlTradeRequest& request,const MqlTradeResult& result)
  {
      
  }
 

É claro o que deve ser: instrumento, preço, lote, tipo de comércio, etc.

Mas não é claro como descobrir o preço do comércio.

Talvez me tenha escapado alguma coisa, estive fora durante algum tempo...

 
Renat:

Já estará na construção de hoje. Foi acrescentado outro ponto de entrada:

Muito obrigado. Finalmente)))

Realmente ansioso por isso.

 

Caros programadores! Uma vez que o terminal não tem histórico de Pedidos, faria sentido ligar as ordens de paragem (Buy stop, Sell stop) ao preço de Oferta? Ou para fazer um utilizador seleccionar a que preço uma encomenda deve ser accionada (Bid ou Ask). Refiro-me ao forex.