Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 52
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
Cosa fare se lo stop/stop è 200
ma
tp=NormalizeDouble((price+(TakeProfit*_Point)),Digits);
su un dollaro-yen renderà 317.000 al tasso di cambio di 117.000
risultato atteso 117.200
Se Point()==0,001 (su USDJPY), allora 200*0,001 è uguale a 0,2
Ora se aggiungiamo 0,2 a 117,0 otteniamo 117,2
Dov'è l'"ingiustizia"?
Se Point()==0,001 (su USDJPY), allora 200*0,001 è uguale a 0,2
Ora se aggiungiamo 0,2 a 117,0 otteniamo 117,2
E dov'è l'"ingiustizia"?
ci si aspetta che 117+(200*_Point) produca 117.200
è normalmente testato su EURUSD
Vitaly l'ha descritto sopra, grazie.
Credo di averla trovata.
Penso che sia abbastanza buono come algoritmo intermedio e ora è necessario filtrare questi momenti in qualche modo
https://www.mql5.com/ru/charts/6351907/audjpy-m5-metaquotes-software-corp
117+(200*_Point) dovrebbe dare un output di 117.200
...Beh, è quello che sta dando... Vi ho mostrato il calcolo. O avete multivaluta e prendete i dati da un simbolo "non nativo"?
Allora usate SymbolInfoDouble() e (int)SymbolInfoInteger() invece di Point() e Digits()
Beh, è quello che sta dando... Ti ho mostrato il calcolo. Oppure avete una multi-valuta e prendete i dati da un simbolo "non nativo"?
Allora invece di Point() e Digits() usate SymbolInfoDouble() e (int)SymbolInfoInteger()
Grazie, funziona)))
Attualmente sto cercando un modo per inserire un trailing stop in una catena di ordini
Ho 10 ordini in passi di 200 da 115.000 a 117.000
Ogni lotto è più grande di x rispetto al precedente
l'obiettivo è di mettere un trailing stop su tutta la catena di ordini usando il seguente calcolo (prezzo medio)+(y*_Point)
Ho un trailing stop. La mia domanda è come attaccarlo al prezzo medio per tutto lo stack e come viene calcolato a seconda dei lotti
Grazie, funziona)))
Al momento si sta cercando un modo per inserire il trailing in una catena di ordini
Ho 10 ordini in passi di 200 da 115.000 a 117.000
Ogni lotto è più grande di x rispetto al precedente
l'obiettivo è di mettere un trailing stop su tutta la catena di ordini usando il seguente calcolo (prezzo medio)+(y*_Point)
Ho un trailing stopper stesso; la domanda è come attaccarlo al prezzo medio per tutto lo stack e come viene calcolato a seconda dei lotti
Un consiglio universale: imparate a programmare da zero. Allora non avrete queste domande, programmare non è un compito facile.
E per arrivare all'essenza della domanda: Quindi, bisogna passare attraverso TUTTI gli ordini in un ciclo, selezionando solo quelli "necessari" e modificarli. Ma devi stare molto attento con questo, perché la probabilità di sostituire l'ordine selezionato per funzionare è molto alta.
Un consiglio universale: imparate a programmare da zero. Allora non ci saranno queste domande, la programmazione non è facile.
E per arrivare all'essenza della domanda: Quindi, è necessario passare attraverso TUTTI gli ordini nel ciclo, selezionando solo "necessario" e modificarli. Ma bisogna stare molto attenti con questa domanda, perché la probabilità di sostituire l'ordine selezionato per lavorare è molto alta.
Buona giornata a tutti, ho scritto un EA basato su MAs. (Io stesso lo sto sviluppando in MQL4 da un po' e ho deciso di iniziare con qualcosa di semplice. Quindi volevo sapere cosa ho fatto di sbagliato. L'essenza dell'Expert Advisor è semplice: dare un allarme quando due o tre MA sono incrociate (a seconda del METODO: Aggressivo = incrocio di due MA, conservativo = incrocio di 3 MA) ... Questo è tutto. Entrerò nel mercato per conto mio. Nel mio Expert Advisor, ho prescritto due funzioni: Aggressivo - questo è un segnale al semplice incrocio di due MA più veloci e Conservativo - quando all'incrocio di due MA veloci si dovrebbe considerare anche il più lento (cioè il segnale nella direzione del trend). Il problema è che l'Expert Advisor dà solo UN avviso (quando inizia o cambia timeframe) e tace su tutti i segnali successivi! Ti sarei grato se mi dicessi cosa c'è che non va. Ho prescritto la funzione per tutti gli eventi secondo le regole di MQL4. Naturalmente potrei registrare tutto senza funzioni nell'evento On Tick, ma voglio registrare le funzioni separatamente, così lefunzioni potrebbero esserechiamate facilmente e voglio aggiungere nuove funzioni "filtri" con il tempo.
Codice
================================================================================================
extern bool Metod=false; // selezione del metodo: Conservative o Aggressive.
extern int Time_Frame=1;//Time frame
input bool Metod=false; //Conservative-TRUE | Aggressive-FALSE
extern inttern FastMA_Parametr=5;
extern int intMA_Parametr=8;
extern int SlowMA_Parametr=18;
extern inttern TrendMA=163;
extern bool DemarkGo=false;
extern inttern Demperiod=4;
int rez;// se MA incrocia verso il basso, rez=-1. se verso l'alto, rez=1.
//+------------------------------------------------------------------+
// Inizializza MA
double FastMA=iMA(Symbol(),Time_Frame,FastMA_Parametr,0,3,0,0);// FastMA
double MiddiMA=iMA(Symbol(),Time_Frame,MidMA_Parametr,0,3,0,0);// Media MA
double SlowMA=iMA(Symbol(),Time_Frame,SlowMA_Parametr,0,1,0,0); Slow МА
//+------------------------------------------------------------------+
int OnInit()
{
rez=0;
return(INIT_SUCCEED);
}
//=======================================
//------------------------------------------------------------------------------
void OnDeinit(const int reason)
{
}
//=============================================
//+---------------------Funzione per il segnale Konservative se Metod=true---------------------------------------------+
int Konservative()
//Controlla un incrocio verso l'alto di 3 linee
{
se (Metod==true)
{
if(FastMA>MiddiMA&&&MiddiMA>SlowMA&&rez<=0)
{
Alert(Symbol(),Time_Frame,"----Up----. Conservatore");
rez=1;
Comment("FastMA ",FastMA," MiddiMA ",MiddiMA," SlowMA ",SlowMA," rez ",rez);
ritorno(rez);
}
//Controlla l'incrocio verso il basso di 3 linee
se(FastMA<MiddiMA&&MiddiMA<SlowMA&&rez>=0)
{
Alert(Symbol(),Time_Frame," ---- DOWN----. Conservatore");
rez=-1;
Comment("FastMA ",FastMA," MiddiMA ",MiddiMA," SlowMA ",SlowMA," rez ",rez);
ritorno(rez);
}
}
ritorno(rez);
}
//=================================================
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Funzione aggressiva se
int Agressive()
// Controlla l'incrocio verso l'alto di 2 linee senza lentezza
{
se (Metod==false)
{
se(FastMA>MiddiMA&&rez<=0)
{
Alert(Symbol(),Time_Frame,"----Up----. aggressivo");
rez=1;
Comment("FastMA ",FastMA," MiddiMA ",MiddiMA," SlowMA ",SlowMA," rez ",rez);
}
//Controlla l'incrocio verso il basso di 2 linee senza una linea lenta
se(FastMA<MiddiMA&&rez>=0)
{
Alert(Symbol(),Time_Frame," ---- DOWN----. Aggressivo");
rez=-1;
Comment("FastMA ",FastMA," MiddiMA ",MiddiMA," SlowMA ",SlowMA," rez ",rez);
}
}
ritorno(rez);
}
Non è alto, ma al 100%. Al momento è l'ultimo ordine e gli altri sono in pausa, ma lo schema non è preciso e vorrei che fosse migliore.
No, non al 100%. O forse stai parlando di qualcos'altro.
In generale, l'algoritmo è il seguente:
Si imposta un ciclo per passare attraverso tutti gli ordini.
Si seleziona l'ordine successivo per lavorare con esso.
Controlla se quell'ordine è necessario... Se no, la prossima iterazione del ciclo...
Se è "necessario", controllate se è adatto alla modifica. Basta confrontare quanto è lontano dal suo livello di StopLoss
Se la distanza è sufficiente, l'ordine viene modificato.
Così, se avete una funzione di modifica con un ciclo su tutti gli ordini, e prima della sua chiamata, anche il ciclo sta lavorando, allora l'ordine selezionato sarà cambiato...
No, non al 100%. O forse stai parlando di qualcos'altro.
In generale, l'algoritmo è il seguente:
Si imposta un ciclo per passare attraverso tutti gli ordini.
Si seleziona l'ordine successivo per lavorare con esso.
Controlla se quell'ordine è necessario... Se no, la prossima iterazione del ciclo...
Se è "necessario", allora si controlla se è adatto alla modifica. Basta confrontare quanto è lontano dal suo livello di StopLoss
Se è abbastanza lontano, l'ordine viene modificato.
Così, se avete una funzione di modifica con un ciclo su tutti gli ordini, e prima della sua chiamata, anche il ciclo sta lavorando, allora l'ordine selezionato sarà cambiato...