![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
Ciao Mladen,
Mi sono imbattuto in un codice fatto da te su stocastico. Tuttavia, quando lo spingo nei miei sistemi, non succede nulla. Posso verificare con te cosa fa?
http://www.forexmt4.com/mt_yahoo/Color%20Stochastic%20v1[ 1].04.mq4
Saluti
Terrance
...
Prova alcuni di questi postati qui: https: //www.mql5.com/en/forum/175297/page3
Oppure qui: https: //www.mql5.com/en/forum/177239/page2
Testati e funzionano
Ciao Mladen,
Mi sono imbattuto in un codice fatto da te su stochastic. Tuttavia, quando lo spingo nei miei sistemi, non succede nulla. Posso verificare con te cosa fa?
http://www.forexmt4.com/mt_yahoo/Color%20Stochastic%20v1[ 1].04.mq4
Saluti
TerranceQuesto è strano.
Ho esaminato il problema del lucchetto un po' più in dettaglio. Apparentemente ha a che fare con le mie impostazioni UAC (User Account Control), così sono andato nel mio pannello di controllo di Windows7 e ho disattivato completamente UAC. Una volta riavviato ho notato che il lucchetto era scomparso dal file. L'ho aperto ed è lo stesso del file che ho postato su questo forum. Completamente diverso dal codice che ho scritto nelle ultime settimane, anche se in realtà è lo stesso file. Ho pensato di aver perso tutto il mio lavoro di codifica. Ho riattivato UAC e riavviato, il lucchetto era tornato e il codice che avevo scritto era di nuovo normale.
Ma poi ho provato a compilare il codice e raccoglie un sacco di errori. Ma gli errori che raccoglie non provengono da questo codice, ma dal codice completamente diverso quando spengo l'UAC - lo so perché raccoglie variabili che sono presenti solo nell'altro codice.
Penso che dovrò aprire un nuovo EA e digitare manualmente tutto questo codice e salvarlo.
...
È un problema abituale di windows 7 (con la sua protezione)
Il modo più semplice per evitarlo sotto windows 7 è quello di installare metatrader su una partizione diversa da C e non avrete problemi di questo tipo
Questo è strano.
Ho esaminato il problema del lucchetto un po' più in dettaglio. Apparentemente ha a che fare con le mie impostazioni UAC (User Account Control), così sono andato nel mio pannello di controllo di Windows 7 e ho disattivato completamente UAC. Una volta riavviato ho notato che il lucchetto era scomparso dal file. L'ho aperto ed è lo stesso del file che ho postato su questo forum. Completamente diverso dal codice che ho scritto nelle ultime settimane, anche se in realtà è lo stesso file. Ho pensato di aver perso tutto il mio lavoro di codifica. Ho riattivato UAC e riavviato, il lucchetto era tornato e il codice che avevo scritto era di nuovo normale.
Ma poi ho provato a compilare il codice e raccoglie un sacco di errori. Ma gli errori che raccoglie non provengono da questo codice, ma dal codice completamente diverso quando spengo l'UAC - lo so perché raccoglie variabili che sono presenti solo nell'altro codice.
Penso che dovrò aprire un nuovo EA e digitare manualmente tutto questo codice e salvarlo.Ho finalmente ottenuto un EA funzionante. Funziona esattamente come dovrebbe - ho finito per copiare il mio codice in notepad, disattivando UAC, poi incollandolo in un nuovo file EA. E ho capito perché le mie funzioni stavano giocando: avevo messo una variabile int dentro un normalizeddouble. Non sapevo di non poterlo fare, ma ora lo so - mi ci è voluta solo una settimana per capirlo! :/
Comunque, ho scritto questo:
if (VariableRisk == true) Risk = GetRiskShort (LastOpenTicket, RiskShort);
if (VariableRisk == false) Risk = StaticRisk;
E mi chiedevo se può essere abbreviato in questo modo?
if (VariableRisk == true)
{
Risk = GetRiskShort (LastOpenTicket, RiskShort);
else Risk = StaticRisk;
}
E ho anche scritto questo:
//--- Funzione per calcolare la posizione di take profit quando è lunga
double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)
{
doppio TPPriceLong = 0;
se (AutoCalcTakeProfit == true)
{
RefreshRates();
TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);
Print("Take profit position calculated successfully");
return (TPPriceLong);
}
if (AutoCalcTakeProfit == false)
{
RefreshRates();
TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);
Print("Posizione statica di take profit calcolata con successo");
return (TPPriceLong);
}
}
E mi chiedevo se può essere abbreviato in questo modo?
//--- Funzione per calcolare la posizione di take profit quando è lunga
double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)
{
doppio TPPriceLong = 0;
RefreshRates();
se (AutoCalcTakeProfit == true)
{
TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);
Print("Take profit position calculated successfully");
else TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);
Print("Posizione di take profit statica calcolata con successo");
return (TPPriceLong);
}
E un'ultima domanda, per fornire un po' più di flessibilità al mio EA, voglio definire i miei timeframes come variabili esterne. Il mio grafico di segnale deve essere D1 diciamo, e il mio grafico di trigger deve essere H4. Quindi sotto variabili esterne potrei fare questo:
extern int SignalChart = PERIOD_D1;
extern int TriggerChart = PERIOD_H4;
E poi fare riferimento ad esso facendo questo per esempio:
SlowMACurrent = iMA(Symbol(), SignalChart, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
A proposito di questa parte:
Sì, questo è un modo corretto al 100% di usarlo (anche al punto che stai usando una barra chiusa (lo shift in quell'esempio è impostato a 1) e che, usando una barra chiusa nei test, stai per evitare la solita trappola di usare barre aperte in multi time framing)
Ho finalmente ottenuto un EA funzionante. Funziona esattamente come dovrebbe - ho finito per copiare il mio codice in un blocco note, disattivando UAC, quindi incollandolo in un nuovo file EA. E ho capito perché le mie funzioni stavano giocando: avevo messo una variabile int dentro un normalizeddouble. Non sapevo di non poterlo fare, ma ora lo so - mi ci è voluta solo una settimana per capirlo! :/
Comunque, ho scritto questo:
if (VariableRisk == true) Risk = GetRiskShort (LastOpenTicket, RiskShort);
if (VariableRisk == false) Risk = StaticRisk;
E mi chiedevo se può essere abbreviato in questo modo?
if (VariableRisk == true)
{
Risk = GetRiskShort (LastOpenTicket, RiskShort);
else Risk = StaticRisk;
}
E ho anche scritto questo:
//--- Funzione per calcolare la posizione di take profit quando è lunga
double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)
{
doppio TPPriceLong = 0;
se (AutoCalcTakeProfit == true)
{
RefreshRates();
TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);
Print("Take profit position calculated successfully");
return (TPPriceLong);
}
if (AutoCalcTakeProfit == false)
{
RefreshRates();
TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);
Print("Posizione statica di take profit calcolata con successo");
return (TPPriceLong);
}
}
E mi chiedevo se può essere abbreviato in questo modo?
//--- Funzione per calcolare la posizione di take profit quando è lunga
double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)
{
doppio TPPriceLong = 0;
RefreshRates();
se (AutoCalcTakeProfit == true)
{
TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);
Print("Take profit position calculated successfully");
else TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);
Print("Posizione di take profit statica calcolata con successo");
return (TPPriceLong);
}
E un'ultima domanda, per fornire un po' più di flessibilità al mio EA, voglio definire i miei timeframes come variabili esterne. Il mio grafico di segnale deve essere D1 diciamo, e il mio grafico di trigger deve essere H4. Quindi sotto variabili esterne potrei fare questo:
extern int SignalChart = PERIOD_D1;
extern int TriggerChart = PERIOD_H4;
E poi fare riferimento ad esso facendo questo per esempio:
SlowMACurrent = iMA(Symbol(), SignalChart, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);Ciao, sto ricevendo il codice di errore 4059:
ERR_FUNC_NOT_ALLOWED_IN_TESTING[/TD]
Ho fatto una ricerca ma non riesco a trovare altre informazioni su cosa significa?
Puoi aiutarmi ad aggiungere i seguenti codici a questo indicatore Parabolic Sar?
Grazie Mladen,
Rileggerò il tuo post per capire, onestamente mi sono un po' perso nel leggerlo, ma è molto probabile che sia la mia ignoranza a giocare. Posterò domande se ne ho.
Grazie amico.
Grazie,
PipCaro amico,
PUOI AIUTARMI AD AGGIUNGERE I SEGUENTI CODICI A QUESTO ALLARME PARABOLICO SAR parabolic_alert_mod.mq4INDICATOR?
Non sto cercando un EA. Se possibile aggiungete almeno l'opzione SHIFT all'indicatore.
extern double TakeProfit = 50;
extern double Lots = 0.1;
extern double TrailingStop = 30;
extern double SAR_Step = 0.02;
extern double SAR_Maximum = 0.2;
extern double Shift=1;
...
joelnelson
TakeProfit, Lots e TrailingStop non hanno nulla a che fare con il modo in cui viene calcolato il sar parabolico (questi parametri sono ovviamente presi da un EA che usa il sar nel suo lavoro). Quindi, se non stai cercando un EA, non è possibile aggiungere quei parametri in modo significativo
Inoltre, lo spostamento nei parametri si riferisce alla barra che viene testata (il SAR parabolico non viene spostato come la media mobile può essere spostata di solito). Questi parametri sono probabilmente destinati a una chiamata a un sar incorporato e il sar incorporato ha la seguente forma
Shift 1 in questo caso serve a testare il valore della prima barra chiusa del sar parabolico
Caro amico,
PUOI AIUTARMI ad aggiungere i seguenti codici a questo parabolic SAR alert parabolic_alert_mod.mq4INDICATOR?
Non sto cercando un EA. Se possibile aggiungete almeno l'opzione SHIFT all'indicatore.
extern double TakeProfit = 50;
extern double Lots = 0.1;
extern double TrailingStop = 30;
extern double SAR_Step = 0.02;
extern double SAR_Maximum = 0.2;
extern double Shift=1;...
Questo errore può essere restituito da alcune funzioni.
Le funzioni che possono causare quell'errore nei test sono le seguenti:
Quindi, una chiamata ad alcune delle funzioni di cui sopra ha causato questo errore
Ciao, sto ricevendo il codice di errore 4059: