Domande su MQL5 Wizard e sulla libreria standard di classi di trading - pagina 14
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
Per esempio, guardiamo i segnali MACD. Un totale di 5 segnali di acquisto e 5 segnali di vendita sono descritti (inversione, incrocio con la linea di segnale, ecc.). C'è un modo per ottenere il valore di questi segnali in un dato momento? Cioè, formare un vettore di 10 elementi per ogni barra, dove ogni elemento corrisponde al segnale, 1 indica la sua presenza, e 0 - assenza? Quale metodo della classe CSignalMACD può essere usato per ottenere i valori corrispondenti?
Sfortunatamente, questa funzionalità non è disponibile come caratteristica standard.
Ciao, aiutami qui. Ho creato un robot (il mio primo robot). Subito dopo l'avvio si spegne con il messaggio Expert initializing of robot (EURUSD,H1) failed. Non riesco a trovare altre informazioni al riguardo.
Ecco il suo codice:
--------------------------------------
//+------------------------------------------------------------------+
//| robot.mq5 |
//| Copyright 2012, MetaQuotes Software Corp.
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp.
#proprietà link "http://www.mql5.com"
#proprietà versione "1.00"
//+------------------------------------------------------------------+
//| Includi |
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>
//--- segnali disponibili
#include <Expert\robot\robot.mqh>
//--- disponibile trailing
#include <Expert\Trailing\TrailingNone.mqh>
//--- gestione del denaro disponibile
#include <Expert\Money\MoneyFixedLot.mqh>
//+------------------------------------------------------------------+
//| Ingressi
//+------------------------------------------------------------------+
//--- input per l'esperto
input string Expert_Title ="robot"; // nome del documento
ulong Expert_MagicNumber =24553; //
bool Expert_EveryTick =false; //--- ingressi per il segnale principale
//--- ingressi per il segnale principale
ingresso int Signal_ThresholdOpen =10; // valore di soglia del segnale da aprire [0...100]
input int Signal_ThresholdClose =10; // valore di soglia del segnale per chiudere [0...100]
input double Signal_PriceLevel =0.0; // Livello di prezzo per eseguire un'operazione
input double Signal_StopLevel =50.0; // livello di stop loss (in punti)
input double Signal_TakeLevel =50.0; // livello di Take Profit (in punti)
input int Signal_Expiration =4; // Scadenza degli ordini pendenti (in barre)
input int Signal_MaCross_FastPeriod=13; // My_MA_Cross(13,MODE_SMA,21,...) Periodo della MA veloce
input ENUM_MA_METHOD Signal_MaCross_FastMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) Metodo della MA veloce
input int Signal_MaCross_SlowPeriod=21; // My_MA_Cross(13,MODE_SMA,21,...) Periodo della MA lenta
input ENUM_MA_METHOD Signal_MaCross_SlowMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) Metodo del MA lento
input double Signal_MaCross_Weight =1.0; // My_MA_Cross(13,MODE_SMA,21,...) Weight [0...1.0]
//--- input per denaro
input double Money_FixLot_Percent =10.0; // Percentuale
input double Money_FixLot_Lots =0.1; // volume fisso
//+------------------------------------------------------------------+
//| Oggetto esperto globale
//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+
//| funzione di inizializzazione dell'esperto ||
//+------------------------------------------------------------------+
int OnInit()
{
//--- Inizializzazione dell'esperto
if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
{
//--- fallito
printf(__FUNCTION__+": errore di inizializzazione dell'esperto");
ExtExpert.Deinit();
ritorno(-1);
}
//--- Creazione del segnale
CExpertSignal *signal=nuovo CExpertSignal;
se(segnale==NULL)
{
//--- fallito
printf(__FUNCTION__+": errore nella creazione del segnale");
ExtExpert.Deinit();
ritorno(-2);
}
//---
ExtExpert.InitSignal(signal);
signal.ThresholdOpen(Signal_ThresholdOpen);
signal.ThresholdClose(Signal_ThresholdClose);
signal.PriceLevel(Signal_PriceLevel);
signal.StopLevel(Signal_StopLevel);
signal.TakeLevel(Signal_TakeLevel);
signal.Expiration(Signal_Expiration);
//--- Creazione del filtro MA_Cross
MA_Cross *filter0=nuovo MA_Cross;
se(filter0==NULL)
{
//--- fallito
printf(__FUNCTION__+": errore nella creazione del filtro0");
ExtExpert.Deinit();
ritorno(-3);
}
signal.AddFilter(filter0);
//- Impostare i parametri del filtro
filter0.FastPeriod(Signal_MaCross_FastPeriod);
filter0.FastMethod(Signal_MaCross_FastMethod);
filter0.SlowPeriod(Signal_MaCross_SlowPeriod);
filter0.SlowMethod(Signal_MaCross_SlowMethod);
filter0.Weight(Signal_MaCross_Weight);
//--- Creazione dell'oggetto finale
CTrailingNone *trailing=nuovo CTrailingNone;
se(trailing==NULL)
{
//--- fallito
printf(__FUNCTION__+": errore nella creazione di trailing");
ExtExpert.Deinit();
ritorno(-4);
}
//--- Aggiungere il finale all'esperto (sarà cancellato automaticamente))
if(!ExtExpert.InitTrailing(trailing))
{
//--- fallito
printf(__FUNCTION__+": errore di inizializzazione del trailing");
ExtExpert.Deinit();
ritorno(-5);
}
//--- Imposta i parametri finali
//--- Creazione dell'oggetto denaro
CMoneyFixedLot *money=nuovo CMoneyFixedLot;
se(soldi==NULL)
{
//--- fallito
printf(__FUNCTION__+": errore nella creazione di denaro");
ExtExpert.Deinit();
ritorno(-6);
}
//--- Aggiungere denaro all'esperto (sarà cancellato automaticamente))
if(!ExtExpert.InitMoney(money))
{
//--- fallito
printf(__FUNCTION__+": errore di inizializzazione del denaro");
ExtExpert.Deinit();
ritorno(-7);
}
//--- Imposta i parametri del denaro
money.Percent(Money_FixLot_Percent);
money.Lots(Money_FixLot_Lots);
//- Controlla tutti i parametri degli oggetti di trading
if(!ExtExpert.ValidationSettings())
{
//--- fallito
ExtExpert.Deinit();
ritorno(-8);
}
//--- Messa a punto di tutti gli indicatori necessari
if(!ExtExpert.InitIndicators())
{
//--- fallito
printf(__FUNCTION__+": errore di inizializzazione degli indicatori");
ExtExpert.Deinit();
ritorno(-9);
}
//--- ok
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione dell'esperto
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
ExtExpert.Deinit();
}
//+------------------------------------------------------------------+
//| funzione di gestione dell'evento "Tick".
//+------------------------------------------------------------------+
void OnTick()
{
ExtExpert.OnTick();
}
//+------------------------------------------------------------------+
//| funzione di gestione dell'evento "Trade" |
//+------------------------------------------------------------------+
void OnTrade()
{
ExtExpert.OnTrade();
}
//+------------------------------------------------------------------+
//| funzione di gestione dell'evento "Timer".
//+------------------------------------------------------------------+
void OnTimer()
{
ExtExpert.OnTimer();
}
//+------------------------------------------------------------------+
Quale potrebbe essere il problema. Non so nemmeno dove guardare prima.
Grazie in anticipo.
Ciao, aiutami qui. Ho creato un robot (il mio primo robot). Subito dopo l'avvio si spegne con il messaggio Expert initializing of robot (EURUSD,H1) failed. Non riesco a trovare altre informazioni al riguardo.
Non ho abbastanza informazioni.
Bisogno di
#include <Expert\robot\robot.mqh>
Ho bisogno di parametri di avvio (tester/terminale, server, coppia, tempo, ecc.)
PS Il codice sorgente è meglio allegare come file
Domande su MQL5 Wizard:
1) //--- input per il denaro
input double Money_FixLot_Percent =10.0; // Percentuale
input double Money_FixLot_Lots =0.1; // volume fisso
Cosa significano questi parametri? E come sono collegati?
2) Posso generare un EA che piazza ordini pendenti? Se sì, come?
3) Cosa significa la variabile Signal_Expiration? Come si usa?
Domande su MQL5 Wizard:
1) //--- input per il denaro
input double Money_FixLot_Percent =10.0; // Percentuale
input double Money_FixLot_Lots =0.1; // volume fisso
Cosa significano questi parametri? E come sono collegati?
2) Posso generare un EA che piazza ordini pendenti? Se sì, come?
3) Cosa significa la variabile Signal_Expiration? Come usarlo?
1) Il parametro Money_FixLot_Percent è usato per impostare il livello di "arresto forzato". Non toccarlo.
Il parametro Money_FixLot_Lots imposta un volume fisso (lotto) con cui il tuo Expert Advisor entrerà nel mercato.
Questi parametri non sono correlati in alcun modo.
2) Qualsiasi Expert Advisor generato da Wizard può negoziare ordini in sospeso. A questo scopo viene utilizzato il parametro ..._PriceLevel. A seconda del valore di questo parametro, l'Expert Advisor si comporta come segue:
0 - l'entrata nel mercato sarà al prezzo corrente;
>0 - l'entrata nel mercato sarà fatta usando ordini limite pendenti (migliori del prezzo corrente per il valore di questo parametro);
<0 - l'entrata nel mercato sarà fatta usando ordini Stop in sospeso (peggiore del prezzo corrente per il valore del parametro);
3) Il parametro Signal_Expiration imposta la durata di un ordine pendente (in barre del timeframe corrente).
Se genero un EA in MQL5 Wizard, quanti ordini può aprire simultaneamente un tale EA? Come è regolato questo?
Se genero un EA in MQL5 Wizard, quanti ordini può aprire simultaneamente un tale EA? Come si controlla questo?
1 ordine. Non è regolamentato.
Il Wizard è progettato per testare le strategie. Se vuoi di più, devi "limare" (scrivere a mano).
2) Qualsiasi EA generato dal Wizard può negoziare ordini pendenti. A questo scopo viene utilizzato il parametro ..._PriceLevel. A seconda del valore di questo parametro, l'Expert Advisor si comporta come segue:
0 - l'entrata nel mercato sarà al prezzo corrente;
>0 - l'entrata nel mercato sarà fatta usando ordini limite pendenti (migliori del prezzo corrente per il valore di questo parametro);
<0 - l'entrata nel mercato sarà fatta usando ordini di stop in sospeso (peggiore del prezzo corrente per il valore del parametro);
In quali unità si misura il parametro PriceLevel? In punti? Cioè, se voglio impostare un ordine stop pendente 20 pip più alto del prezzo corrente,
Devo impostare questo parametro PriceLevel =-0.0020 ?