Errori, bug, domande - pagina 855

 
gdtt:

Questo costrutto:

Penso che dovrebbe essere vietato, poiché è un riferimento diretto a un membro privato di un altro oggetto, anche se dello stesso tipo di dati.

Pensi che dovrebbe essere proibito? Non usarlo.

Qualsiasi membro della classe dichiarato dopo lo specificatore di accesso all'elemento private: (e prima dello specificatore di accesso successivo) è disponibile solo alle funzioni membro di questa classe.

La documentazione parla esplicitamente di accesso e niente di oggetti (solo di classi).

A proposito, i costruttori di copie si basano esattamente su questo effetto.

 
stringo:

Pensi che dovrebbe essere proibito? Non usarlo.

La documentazione parla esplicitamente di accesso e niente di oggetti (solo di classi).

A proposito, i costruttori di copie si basano esattamente su questo effetto.

ok, capito, grazie
 
Alex5757000 Risulta che la funzione OrderCalcMargin() chiamata in precedenza per un ordine in sospeso ha restituito 0,0?

Ebbene sì, a giudicare dalla descrizione della situazione, la funzioneOrderCalcMargin() per gli ordini in sospeso restituisce "0.0". Questo indica che non è richiesto alcun margine per gli ordini in sospeso.

Se hai bisogno di stimare quanto margine sarà necessario quando l'ordine pendente scatta, allora usa uno degli ordini a mercato come primo parametro.

 

Quindi, errore "EX5 loading failed" dopo aver messo le funzioni nella libreria.

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

Cosa c'è che non va?

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

Ho deciso di controllare se il problema è nelle funzioni stesse. Anche se i corpi di tutte le funzioni di libreria consistono solo in "return(1);" c'è ancora un errore

importare come nell'esempio della guida

#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:

Quindi, errore "EX5 loading failed" dopo aver messo le funzioni nella libreria

Le funzioni sono dichiarate come esportabili nella libreria?
 
alexvd:
Le funzioni sono dichiarate come esportabili nella libreria?
dichiarato, ma ho già risolto il problema - ho appena riavviato il computer xD Immagino che un mese di lavoro ininterrotto si sia fatto sentire...e i problemi hanno già iniziato ad apparire in molti posti
 
Ditemi, questa è la struttura della mia richiesta, cos'altro manca fondamentalmente?
  
 
 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) Errore 4756 ERR_TRADE_SEND_FAILED
4756
Impossibile inviare una richiesta di scambio

Scusa, perché non posso fare a meno di più informazioni possibili, per esempio, se apro una posizione, non un ordine, allora non devo specificare il prezzo? Se non ci sono stop-profits, allora perché no? Forse, voglio impostarli più tardi da un robot. Quale campo è così criticamente carente nella richiesta commerciale? O che cos'è?

È anche possibile non specificarlo? tipo_riempimento. Spiega qualcosa, come l'ordine potrebbe non essere eseguito dal suo intero volume... Come mai? Non capisco davvero. Ok, .

Ah, immagino che fosse critico lì request.symbol=_Symbol; ho pensato che la consegna della posizione sul grafico dove il robot andrà generalmente senza dire...

 
Potete dirmi come impostare LR Correlation come parametro del risultato dell'ottimizzazione (Custom max)?
 
Vacuum:
Potete dirmi come impostare LR Correlation come parametro del risultato dell'ottimizzazione (Custom max)?

Prima di tutto bisogna calcolare la correlazione LR. Questo è fatto in questa libreria https://www.mql5.com/ru/code/1081

E poi restituire questo valore tramite OnTester, come qui https://www.mql5.com/ru/articles/286

CTradeStatistics
CTradeStatistics
  • voti: 8
  • 2012.09.13
  • Andrey Voytenko
  • www.mql5.com
Класс для расчета показателей из перечисления ENUM_STATISTICS
 
Dimka-novitsek:
Ditemi, questa è la struttura della mia richiesta, cos'altro manca fondamentalmente?

2012.10.10 19:22:29 (EURUSD,M1) Errore 4756 ERR_TRADE_SEND_FAILED
4756
Impossibile inviare una richiesta di scambio

Scusa, perché non posso fare a meno di quante più informazioni possibili, per esempio, se apro una posizione, non un ordine, allora non devo specificare il prezzo? Se non ci sono stop-profits, allora perché no? Forse, voglio impostarli più tardi da un robot. Quale campo è così criticamente carente nella richiesta commerciale? O che cos'è?

È anche possibile non specificarlo? tipo_riempimento. Spiega qualcosa, come l'ordine potrebbe non essere eseguito dal suo intero volume... Come mai? Non capisco davvero. Ok.

Ah, immagino che fosse critico lì request.symbol=_Symbol; pensavo che la consegna della posizione sul grafico dove il robot sarebbe stato in generale...

Suggerisco di usare la libreria standard:

#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);
     }

  }
Motivazione: