Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1063
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
ma come si fa ad attivare questa modalità?
Spunta la casella nella finestra del tester, in basso a sinistra:
Ciao Guru.
Potete dirmi se sono sulla strada giusta?
Obiettivo: introdurre una dimensione del lotto variabile in funzione della distanza dalla MA.
Nei parametri di input:
extern double Lot1 = 0.01; // prima variante del lotto
extern double Lot2 = 0.03; // seconda variante del lotto
extern int Distan = 20; // distanza da SlowMA
Ma è stato definito nel corpo di Expert Advisor:
double SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);
Inoltre abbiamo bisogno di una condizione: se il prezzo corrente (Bid o Ask a seconda della direzione) è fino alla dimensione Distant, usiamo la prima dimensione del lotto, se è più, usiamo la seconda.
La prima cosa che mi è venuta in mente:
se (Ask-SlowMA<Distan) Lot == Lot1;
se (SlowMA-Bid<Distan) Lot == Lot1;
se (Ask-SlowMA>Distan) Lot == Lot2;
se (SlowMA-Bid>Distan) Lot == Lot2;
Ma non funziona. L'errore è o nelle connessioni del lotto o nella logica generale.
Grazie in anticipo.
Ciao Guru.
Potete dirmi se sono sulla strada giusta?
Obiettivo: introdurre una dimensione del lotto variabile in funzione della distanza dalla MA.
Nei parametri di input:
extern double Lot1 = 0.01; // dimensione del primo lotto
extern double Lot2 = 0.03; // seconda variante di lotto.
extern int Distan = 20; // distanza dallo SlowMA
Nel corpo dell'Expert Advisor definito Ma:
double SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);
Inoltre abbiamo bisogno di una condizione: se il prezzo corrente (Bid o Ask a seconda della direzione) è fino alla dimensione Distant, usiamo la prima dimensione del lotto, se è più, usiamo la seconda.
La prima cosa che mi è venuta in mente:
se (Ask-SlowMA<Distan) Lot == Lot1;
if (SlowMA-Bid<Distan) Lot == Lot1;;
se (Ask-SlowMA>Distan) Lot == Lot2;
se (SlowMA-Bid>Distan) Lot == Lot2;
Ma non funziona. È un errore in combinazione con Lot, o nella logica generale.
Grazie in anticipo.
Bid e Ask sono gli ultimi prezzi bid e ask conosciuti, cioè il prezzo corrente.
SlowMA è il mio rinominato Ma
(double SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);)
La deviazione del prezzo attuale (Bid o Ask) dal Ma (SlowMA) può essere più o meno di Distans. In base a questo dovreste impostare o la prima o la seconda dimensione del lotto.
Ho trovato delle varianti per cambiare il lotto in base al deposito o al numero di ordini aperti, ma non riesco a ottenere nessuna risposta da un termine così lineare.
Qualcosa mi dice che abbiamo bisogno di una funzione che restituisca un valore assoluto. Cioè, se lo applichiamo a un numero negativo, il risultato sarà positivo.
Bid e Ask sono gli ultimi prezzi bid e ask conosciuti, cioè il prezzo corrente.
SlowMA è il mio rinominato Ma
(double SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);)
La deviazione del prezzo attuale (Bid o Ask) dal Ma (SlowMA) può essere più o meno di Distans. In base a questo dovreste impostare o la prima o la seconda dimensione del lotto.
Ho trovato delle varianti per cambiare il lotto in base al deposito o al numero di ordini aperti, ma non riesco a ottenere nessuna risposta da un termine così lineare.
Qualcosa mi dice che abbiamo bisogno di una funzione che restituisca un valore assoluto. Cioè, se lo applichiamo a un numero negativo, il risultato sarà positivo.
Il valore assoluto della differenza di Bid e MA può essere necessario un po' più tardi; ora, visto che non hai capito l'antifona, calcoliamo insieme
Offerta = 1,12730;
MA = 1,12530;
Distans = 20;
Domanda:
Quando e se 1,1273 a 1,1253 sarà più di 20???
Per qualche motivo la mia calcolatrice mostra solo 0,002. Ma questo è molto lontano da 20...
Grazie, capisco. Oppure si può fare così:
dist=Distan*Point;
se (Ask-SlowMA<dist) Lot == Lot1;
se (SlowMA-Bid<dist) Lot == Lot1;
se (Ask-SlowMA>dist) Lot == Lot2;
se (SlowMA-Bid>dist) Lot == Lot2;
Quindi come faccio a farlo correttamente?
Grazie, capisco. Oppure si può fare così:
dist=Distan*Point;
se (Ask-SlowMA<dist) Lot == Lot1;
se (SlowMA-Bid<dist) Lot == Lot1;
se (Ask-SlowMA>dist) Lot == Lot2;
se (SlowMA-Bid>dist) Lot == Lot2;
Quindi come faccio a farlo correttamente?
E ora possiamo usare MathAbs() per non pensare troppo alla nostra testa tenendo traccia di cosa viene sottratto da cosa. E c'è un altro interessante operatore condizionale
Lot = MathAbs(Ask-SlowMA) < dist ? Lot1 : Lot2;
Il che significa: alla variabile Lot verrà assegnato il valore di Lot1 se Ask- SlowMA è inferiore a dist, altrimenti verrà assegnato il valore di Lot2.
Un'altra raccomandazione: dimenticate la variabile Punto. Usare _Point o la funzione Point()
Ho bisogno di aiuto, sto ancora imparando...
E ora potete applicare MathAbs() in modo da non dover tenere traccia di cosa sottrarre da cosa. E un altro interessante operatore condizionale
Il che significa: alla variabile Lot verrà assegnato il valore di Lot1 nel caso in cui Ask- SlowMA sia inferiore a dist, altrimenti verrà assegnato il valore di Lot2.
Un'altra raccomandazione: dimenticate la variabile Punto. Usare _Point o la funzione Point()