Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 664

 
Alexey Kozitsyn:
Sì, i parametri di ingresso non possono essere modificati. Ad essere onesti, non capisco perché bisogna cambiare questo valore in base alle citazioni a 3/5 cifre? Si imposta questo valore nei parametri di ingresso. Non si può semplicemente scrivere 100 (se 3/5 cifre) e non preoccuparsi?

Infatti, ottimizzo su 5 cifre - più storia, ma faccio trading su 4 e uso diverse impostazioni, compresi i punti. Non voglio confondere le impostazioni - ecco perché questa è la soluzione.

 
-Aleks-:

Infatti, ottimizzo su 5 cifre - più storia, ma faccio trading su 4 e uso diverse impostazioni, compresi i punti. Non voglio confondere le impostazioni - ecco perché questa è la soluzione.

Dovrebbe funzionare così

int Sign = 1;

int OnInit() {
// Округлим огрызки - 3 и 5 знак
Sign=(SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==3 || SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==5)?10:1;
// Приведем к терминальному количеству знаков
TakeProfit*=Sign;
StopLoss*=Sign;
TrailingShift*=Sign;
TrailingStep*=Sign;
Slippage*=Sign;
}
 
Vitaly Muzichenko:

Questo dovrebbe funzionare

int Sign = 1;

int OnInit() {
// Округлим огрызки - 3 и 5 знак
Sign=(SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==3 || SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==5)?10:1;
// Приведем к терминальному количеству знаков
TakeProfit*=Sign;
StopLoss*=Sign;
TrailingShift*=Sign;
TrailingStep*=Sign;
Slippage*=Sign;
}


Grazie - lo proverò non appena riuscirò a far funzionare l'EA...

 

Ricevo anche questo errore - come lo correggo?

'MODE_MAIN' - identificatore di enumerazione già definito initmql4__1.mqh 223 24


 ENUM_STO_PRICE StoFieldMigrate(int field)


  {
   switch(field)
     {
      case 0: return(STO_LOWHIGH);
      case 1: return(STO_CLOSECLOSE);
      default: return(STO_LOWHIGH);
     }
  }

//+------------------------------------------------------------------+
enum ALLIGATOR_MODE  { MODE_GATORJAW=1,   MODE_GATORTEETH, MODE_GATORLIPS };
enum ADX_MODE        { MODE_MAIN,         MODE_PLUSDI, MODE_MINUSDI };
enum UP_LOW_MODE     { MODE_BASE,         MODE_UPPER,      MODE_LOWER };
enum ICHIMOKU_MODE   { MODE_TENKANSEN=1,  MODE_KIJUNSEN, MODE_SENKOUSPANA, MODE_SENKOUSPANB, MODE_CHINKOUSPAN };
enum MAIN_SIGNAL_MODE{ MODE_MAIN,         MODE_SIGNAL };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CopyBufferMQL4(int handle,int index,int shift)
  {
   double buf[];
   switch(index)
     {
      case 0: if(CopyBuffer(handle,0,shift,1,buf)>0)
         return(buf[0]); break;
      case 1: if(CopyBuffer(handle,1,shift,1,buf)>0)
         return(buf[0]); break;
      case 2: if(CopyBuffer(handle,2,shift,1,buf)>0)
         return(buf[0]); break;
      case 3: if(CopyBuffer(handle,3,shift,1,buf)>0)
         return(buf[0]); break;
      case 4: if(CopyBuffer(handle,4,shift,1,buf)>0)
         return(buf[0]); break;
      default: break;
     }
   return(EMPTY_VALUE);
  }
//+------------------------------------------------------------------+

 
-Aleks-:

In una tale situazione, ottengo un errore - aiutatemi a capire perché l'errore si verifica - in MQL5 non è possibile cambiare il valore di una variabile inserita dall'utente?

Non si può!

Se hai deciso di usare MQL4_to_MQL5.mqh, ti consiglio vivamente di non farlo. Poiché è stato scritto per gli esempi, che sono nella descrizione della biblioteca. Cioè non è affatto universale. In particolare, c'è una versione molto limitata di MarketInfo (per far funzionare solo gli esempi). Ma le buone soluzioni ci sono. Pertanto, è meglio non usare questo mqh in sé, ma prendere solo cose utili da esso.

 
-Aleks-:

Ricevo anche questo errore - come lo correggo?

'MODE_MAIN' - identificatore di enumerazione già definito initmql4__1.mqh 223 24


 ENUM_STO_PRICE StoFieldMigrate(int field)


  {
   switch(field)
     {
      case 0: return(STO_LOWHIGH);
      case 1: return(STO_CLOSECLOSE);
      default: return(STO_LOWHIGH);
     }
  }

//+------------------------------------------------------------------+
enum ALLIGATOR_MODE  { MODE_GATORJAW=1,   MODE_GATORTEETH, MODE_GATORLIPS };
enum ADX_MODE        { MODE_MAIN,         MODE_PLUSDI, MODE_MINUSDI };
enum UP_LOW_MODE     { MODE_BASE,         MODE_UPPER,      MODE_LOWER };
enum ICHIMOKU_MODE   { MODE_TENKANSEN=1,  MODE_KIJUNSEN, MODE_SENKOUSPANA, MODE_SENKOUSPANB, MODE_CHINKOUSPAN };
enum MAIN_SIGNAL_MODE{ MODE_MAIN,         MODE_SIGNAL };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CopyBufferMQL4(int handle,int index,int shift)
  {
   double buf[];
   switch(index)
     {
      case 0: if(CopyBuffer(handle,0,shift,1,buf)>0)
         return(buf[0]); break;
      case 1: if(CopyBuffer(handle,1,shift,1,buf)>0)
         return(buf[0]); break;
      case 2: if(CopyBuffer(handle,2,shift,1,buf)>0)
         return(buf[0]); break;
      case 3: if(CopyBuffer(handle,3,shift,1,buf)>0)
         return(buf[0]); break;
      case 4: if(CopyBuffer(handle,4,shift,1,buf)>0)
         return(buf[0]); break;
      default: break;
     }
   return(EMPTY_VALUE);
  }
//+------------------------------------------------------------------+

Rinominare. I campi di TUTTI gli enumeratori devono essere diversi. E avete gli stessi campi inenum ADX_MODE eenum MAIN_SIGNAL_MODE.
 
fxsaber:
Rinominare. I campi di TUTTE le enumerazioni dovrebbero essere diversi. E avete gli stessi campi inenum ADX_MODE eenum MAIN_SIGNAL_MODE.

L'ho commentato per ora... Non credo che sia critico...

Tuttavia, compilato un EA utilizzando due librerie - funzioni di trading e la traduzione di altre funzioni da 4 a 5.

Sono ancora malato del tester in 5 - non riesco a trovare dove gli indicatori possono essere aggiunti nella visualizzazione e come filtrare il registro...

Non si vedono ancora gli ordini aperti, eh.

 

Come interpretare questo:

2016.11.04 20:42:25.224 2016.02.11 14:04:30 Quando si imposta in sospeso errore imprevisto - 4756
2016.11.04 20:42:25.224 2016.02.11 14:04:30 Magic=49266773 cPoza::setOrder ha inviato una richiesta per impostare un ordine. Tipo: BuyStop lot=1.0 opPrice=68180.0 tp=68200.0 sl=67260.0
2016.11.04 20:42:25.224 2016.02.11 14:04:30 fallito buy stop 1.00 RTS-12.16 a 68180 sl: 67260 tp: 68200 [scadenza non valida]
2016.11.04 20:42:25.224 2016.02.11 14:04:30 fallito buy stop 1.00 RTS-12.16 a 68180 sl: 6.660 tp: 68200 [scadenza non valida]

 
-Aleks-:

Come interpretare questo:

2016.11.04 20:42:25.224 2016.02.11 14:04:30 Quando si imposta in sospeso errore imprevisto - 4756
2016.11.04 20:42:25.224 2016.02.11 14:04:30 Magic=49266773 cPoza::setOrder ha inviato una richiesta per impostare un ordine. Tipo: BuyStop lot=1.0 opPrice=68180.0 tp=68200.0 sl=67260.0
2016.11.04 20:42:25.224 2016.02.11 14:04:30 fallito buy stop 1.00 RTS-12.16 a 68180 sl: 67260 tp: 68200 [scadenza non valida]
2016.11.04 20:42:25.224 2016.02.11 14:04:30 Quando si imposta in sospeso errore imprevisto - 4756

C'è qualcosa di sbagliato nell'impostazione della scadenza.
 
-Aleks-:

Finora sono stufo del tester in cinque - non riesco a trovare dove gli indicatori possono essere aggiunti alla visualizzazione e come filtrare il log...

Non c'è ancora modo di vedere gli ordini aperti, eh.

Sto usando uno script MT4 convertito dal 2006 per visualizzare la storia del tester. Mostra tutto comodamente come MT4.