Erros, bugs, perguntas - página 855

 
gdtt:

Esta construção:

Penso que deve ser proibido, pois é uma referência directa a um membro privado de outro objecto, embora do mesmo tipo de dados.

Acha que deveria ser proibido? Não o utilize.

Qualquer membro da classe declarado após o particular: especificador de acesso a elementos (e antes do próximo especificador de acesso) está disponível apenas para as funções de membro desta classe.

A documentação diz explicitamente sobre o acesso e nada sobre objectos (apenas sobre aulas).

A propósito, os construtores de cópias baseiam-se exactamente neste efeito.

 
stringo:

Acha que deve ser proibido? Não o utilize.

A documentação diz explicitamente sobre o acesso e nada sobre objectos (apenas sobre aulas).

A propósito, os construtores de cópias baseiam-se exactamente neste efeito.

ok, já está, obrigado
 
Alex5757000 Acontece que a função anteriormente chamada OrderCalcMargin() para uma ordem pendente retornou 0.0?

Bem sim, a julgar pela descrição da situação, a funçãoOrderCalcMargin() para ordens pendentes retorna "0.0". Isto indica que não é necessária qualquer margem para encomendas pendentes.

Se precisar de estimar quanta margem será necessária quando a ordem pendente for accionada, então use uma das ordens de mercado como primeiro parâmetro.

 

Portanto, erro de "carregamento EX5 falhou". depois de ter colocado as funções na biblioteca.

#import "GetPriceBy.ex5"
double GetHighByTime(datetime Time);
double GetLowByTime(datetime Time);
#import

O que é que está errado?

------------------------------

Decidiu verificar se o problema está nas próprias funções. Mesmo que os corpos de todas as funções da biblioteca consistam apenas em "retorno(1);" ainda há um erro

importação como no exemplo da ajuda

#import "user32.dll"
int    MessageBoxW(uint hWnd,string lpText,string lpCaption,uint uType);
#import "stdlib.ex5"
string ErrorDescription(int error_code);
int    RGB(int red_value,int green_value,int blue_value);
bool   CompareDoubles(double number1,double number2);
string DoubleToStrMorePrecision(double number,int precision);
string IntegerToHexString(int integer_number);
#import "ExpertSample.dll"
int    GetIntValue(int);
double GetDoubleValue(double);
string GetStringValue(string);
double GetArrayItemValue(double &arr[],int,int);
bool   SetArrayItemValue(double &arr[],int,int,double);
double GetRatesItemValue(double &rates[][6],int,int,int);
#import
 
FiftyStars:

Portanto, erro de "carregamento EX5 falhou". depois de ter colocado as funções na biblioteca

As funções são declaradas como exportáveis na biblioteca?
 
alexvd:
As funções são declaradas como exportáveis na biblioteca?
declarado, mas já resolvi o problema - acabei de reiniciar o computador xD acho que um mês de trabalho ininterrupto se fez sentir...e os problemas já começaram a aparecer em muitos lugares
 
Diga-me, aqui está a estrutura do meu pedido, o que mais lhe falta basicamente?
  
 
 MqlTick last_tick;SymbolInfoTick(Symbol(),last_tick);
 
   MqlTradeRequest request={0};
      MqlTradeResult result={0};
      
 
  {
    request.     action=TRADE_ACTION_DEAL;           // Тип выполняемого действия
    request.     price=last_tick.bid;
    request.                        volume=1;           // Запрашиваемый объем сделки в лотах     
    request.     type=ORDER_TYPE_SELL;     // Тип ордера
    request.     type_filling =ORDER_FILLING_RETURN;          
    
   }
   
  OrderSend(request,result); 
  
  
  int Error=GetLastError(); ResetLastError();
        printf("Error %i ",Error);
      
        

2012.10.10 19:22:29 (EURUSD,M1) Erro 4756 ERR_TRADE_SEND_FAILED
4756
Não foi possível enviar pedido comercial

Desculpe, porque não posso prescindir de tanta informação quanto possível, por exemplo, se eu abrir uma posição, não uma ordem, então não tenho de especificar o preço? Se não há lucros cessantes, então porque não? Talvez, quero pô-los mais tarde por um robô. Que campo está tão criticamente ausente no pedido comercial? Ou o que é isso?

Também é possível não o especificar? type_filling. Explica algo, como a ordem pode não ser executada por todo o seu volume. Como assim? Não percebo bem. Muito bem, .

Ah, acho que foi crítico ali request.symbol=_Symbol; pensei que a entrega da posição no gráfico onde o robô geralmente irá sem dizer...

 
Pode dizer-me como definir a Correlação LR como um parâmetro de resultado de optimização (Custom max)?
 
Vacuum:
Pode dizer-me como definir a Correlação LR como um parâmetro de resultado de optimização (Custom max)?

Antes de mais, a correlação LR precisa de ser calculada. Isto é feito nesta biblioteca https://www.mql5.com/ru/code/1081

E depois devolver este valor via OnTester, como aqui https://www.mql5.com/ru/articles/286

CTradeStatistics
CTradeStatistics
  • votos: 8
  • 2012.09.13
  • Andrey Voytenko
  • www.mql5.com
Класс для расчета показателей из перечисления ENUM_STATISTICS
 
Dimka-novitsek:
Diga-me, aqui está a estrutura do meu pedido, o que mais lhe falta basicamente?

2012.10.10 19:22:29 (EURUSD,M1) Erro 4756 ERR_TRADE_SEND_FAILED
4756
Não foi possível enviar pedido comercial

Desculpe, porque não posso prescindir de tanta informação quanto possível, por exemplo, se eu abrir uma posição, não uma ordem, então não tenho de especificar o preço? Se não há lucros cessantes, então porque não? Talvez, quero pô-los mais tarde por um robô. Que campo está tão criticamente ausente no pedido comercial? Ou o que é isso?

Também é possível não o especificar? type_filling. Explica algo, como a ordem pode não ser executada por todo o seu volume. Como assim? Não percebo bem. Muito bem, .

Ah, acho que foi crítico ali request.symbol=_Symbol; pensei que a entrega da posição no gráfico onde o robô estaria em geral...

Sugiro a utilização da biblioteca padrão:

#include <Trade\Trade.mqh>
CTrade            trade;
MqlTick           last_tick;
double Lot=0.01;
string main_comment="";
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- тип позиции
   bool Type;
//----------------------------------+
//--- если покупаем
   Type=true;                         
//--- если продаём     
   Type=false;
//----------------------------------+
   if(Type)
     {
      SymbolInfoTick(_Symbol,last_tick);
      double price=last_tick.ask;
      trade.PositionOpen(_Symbol,ORDER_TYPE_BUY,NormalizeDouble(Lot,2),price,0,0,main_comment);
     }
   else
     {
      SymbolInfoTick(_Symbol,last_tick);
      double price=last_tick.bid;
      trade.PositionOpen(_Symbol,ORDER_TYPE_SELL,NormalizeDouble(Lot,2),price,0,0,main_comment);
     }

  }
Razão: