Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 664
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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.
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 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;
}
Questo dovrebbe funzionare
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;
}
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);
}
//+------------------------------------------------------------------+
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.
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 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]
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
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.