Nel tester dà un errore:
2010.04.28 06:27:44 Core 1 Errore di creazione del processo [2]
Nel tester dà un errore:
2010.04.28 06:27:44 Core 1 Errore di creazione del processo [2]
Aggiornare all'ultima versione e verificare la presenza del file metatester.exe nella directory principale del programma.
Grazie, funziona.
Mancano l'ottimizzatore e la visualizzazione.
Mancano l'ottimizzatore e la visualizzazione.
L'ottimizzatore è presente: basta aumentare l'altezza della finestra del tester.
La visualizzazione sarà disponibile in un secondo momento.
Saluti,
Signor/Signora tsaktuo, ho studiato il suo codice K_eSimpleMA ed è stato molto utile per capire come è la struttura di un EA, così come concetti come lavorare con gli incroci SMA.
Apprezzo molto che tu abbia condiviso questo articolo e ti ringrazio molto.
D'altra parte ho un paio di domande, entrambe relative alla funzioneSymbolInfoTick :
Il manuale di MQL5 dice cheSymbolInfoTick(Symbol(),tick) restituisce i prezzi correnti di un simbolo specificato in una variabile di tipo MqlTick e dice anche che la funzione restituisce true se ha successo, altrimenti restituisce false.
Secondo quanto detto sopra, quello che ho capito è che il messaggio ("Failed to get Symbol info!") viene stampato se non c'è un tick ricevuto,. È corretto ? Se non è corretto, potreste dirmi di cosa si tratta?
L'altra domanda è: cosa succede se il messaggio viene stampato ogni tick?
Ancora una volta, grazie.
C'è:
trReq.sl=tick.ask-_Point*sl; // livello di Stop Loss dell'ordine
trReq.tp=tick.ask+_Point*tp; // Livello di take profit dell'ordine
necessario:
trReq.sl=tick.bid-_Point*sl; // livello di stop loss dell'ordine
trReq.tp=tick.bid+_Point*tp; // Livello di take profit dell'ordine
e modificare di conseguenza per SELL.
L'acquisto viene effettuato al prezzo ask, ma viene chiuso al prezzo bid.
Se si desidera limitare il profitto e la perdita, ad esempio, a 20 punti, occorre contare esattamente 20 punti dal prezzo bid (prezzo di chiusura) per BUY e ask (prezzo di chiusura) per SELL.
Puoi dirmi per favore come aggiungere a questo codice per fare trading sul trend MACD senza stop?
Long: il MACD sta salendo, la MA veloce ha incrociato la MA lenta dall'alto verso il basso.
Croy Long: MACD in aumento veloce MA incrociato lento MA dal basso verso l'alto
Short: MACD in calo veloce ha incrociato la MA lenta dall'alto verso il basso
Short: la MA veloce decrescente del MACD ha incrociato quella lenta dal basso verso l'alto
Ho provato in questo modo:
//+------------------------------------------------------------------+
//|MACD&DEMA.mq5 |
//|Copyright 2010, Gruppo AM2. |
//| http://www.am2_group.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, AM2 Group."
#property link "http://www.am2_group.net"
#property version "1.00"
//--- parametri di ingresso
input int Periods=2; // Media mobile di periodo 1
input int Shift=38; // Media mobile di periodo 2
input int SL=30; // Stop Loss
input int TP=100; // Prendere profitto
input int MAGIC=3072010; // Consigliere del numero magico
MqlTradeRequest trReq;
MqlTradeResult trRez;
int ma1Handle;
int ma2Handle;
int macdHandle; // Maniglia dell'indicatore MACD
double ma1Val[];
double ma2Val[];
double macdVal[]; // array dinamico per la memorizzazione dei valori MACD numerici per le barre giornaliere
int sl;
int tp;
//+------------------------------------------------------------------+
//| Funzione di inizializzazione dell'esperto|
//+------------------------------------------------------------------+
int OnInit()
{
//Impostare i valori predefiniti per tutte le richieste di nuovi ordini
trReq.action=TRADE_ACTION_DEAL;
trReq.magic=MAGIC;
trReq.symbol=Symbol(); // Simbolo commerciale
trReq.volume=0.1; // Volume richiesto per una transazione in lotti
trReq.deviation=1; // Massimo scostamento possibile dal prezzo richiesto
trReq.type_filling=ORDER_FILLING_AON; // Tipo di esecuzione dell'ordine
trReq.type_time=ORDER_TIME_GTC; // Tempo di esecuzione dell'ordine
trReq.comment="MA Sample";
//termine
//Creare la maniglia per 2 indicatori MA
ma1Handle=iMA(Symbol(),PERIOD_CURRENT,Periods,0,MODE_EMA,PRICE_CLOSE);
ma2Handle=iMA(Symbol(),PERIOD_CURRENT,Periods+Shift,0,MODE_EMA,PRICE_CLOSE);
//--- Ottenere l'handle dell'indicatore MACD
macdHandle=iMACD(NULL,PERIOD_D1,15,26,1,PRICE_CLOSE);
//termine
//i parametri di ingresso sono di sola lettura
tp=0;
sl=0;
//termine
//Supporto per un conto con 5 decimali
if(_Digits==5)
{
sl*=10;
tp*=10;
}
//termine
return(0);
}
//+------------------------------------------------------------------+
//| Funzione di deinizializzazione dell'esperto|
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Funzione tick dell'esperto|
//+------------------------------------------------------------------+
void OnTick()
{
MqlTick tick; //variabile per le informazioni sui tick
if(!SymbolInfoTick(Symbol(),tick))
{
Print("Failed to get Symbol info!");
return;
}
/Copia i valori più recenti degli indicatori MA in un buffer
int copied=CopyBuffer(ma1Handle,0,0,4,ma1Val);
if(copied>0)
copied=CopyBuffer(ma2Handle,0,0,4,ma2Val);
copied=CopyBuffer(macdHandle,0,0,4,macdVal);
if(copied>0)
{
//Se MAPeriod > MAPeriod + Shift -> BUY
if(ma1Val[1]>ma2Val[1] && macdVal[1]>macdVal[2])
{
trReq.price=tick.bid; // SymbolInfoDouble(NULL,SYMBOL_BID);
trReq.sl=tick.bid-_Point*sl; // Livello di stop loss dell'ordine
trReq.tp=tick.bid+_Point*tp; // Livello di take profit dell'ordine
trReq.type=ORDER_TYPE_BUY; // Tipo di ordine
OrderSend(trReq,trRez);
}
//Se MAPeriod < MAPeriod + Shift -> SELL
else if(ma1Val[1]<ma2Val[1] && macdVal[1]<macdVal[2])
{
trReq.price=tick.ask;
trReq.sl=tick.ask+_Point*sl; // Livello di stop loss dell'ordine
trReq.tp=tick.ask-_Point*tp; // Livello di take profit dell'ordine
trReq.type=ORDER_TYPE_SELL; // Tipo di ordine
OrderSend(trReq,trRez);
}
}
}
//+------------------------------------------------------------------+
Ciao Outkast,
Sono nuovo di EA ho appena importato il signor tsaktuo esimpleMA, dal momento che davvero non capisco il codice, lo vedo in esecuzione sul mio grafico, ma dovrei impostare alcuni dei valori MA, non so bisogno di aiuto bisogno di un corso o un libro.
Sono stato felice di trovare il vostro esempio di codice perché ha risolto il mio problema di bufferizzare la MA e di farla apparire su un grafico. Grazie per averlo pubblicato.
L'unica domanda che ho è: come si prende la decisione di chiudere l'ordine aperto?
Grazie
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso

Simple MA Expert Advisor:
Qualcosa per coloro che vogliono provare il nuovo Strategy Tester e non hanno alcun EA.
Author: Karlis Balcers