Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1154
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 amici.
Come fare in modo che i valori di stop loss, tekprofit e trailing siano visualizzati in percentuale invece che in pip.
Questa formula è troppo ingombrante e non funziona affatto
StopLoss=NormalizeDouble(Bid-(Bid-TrailingStop)/100*TRAL_PERCENT,Digits);
Vorrei avere la forma più semplice di percentuale.
Doppio Stoploss = 0,05;
--------
Profit=Bid-Stoploss in percentuale(è un esempio disordinato, ma solo per chiarezza)
Grazie.
Un esempio approssimativo porta ad una risposta approssimativa. Per capirlo, bisogna capire da cosa si misura la percentuale.
.. Chiunque abbia bisogno di aiutare a scrivere un EA, potete mandarmi un'email. Aiuterò
aiutare a prendere il prezzo da zero bar, ecco la discussione
https://www.mql5.com/ru/forum/160683/page237#comment_5350688
Un esempio inconsistente dà luogo a una risposta inconsistente. Per capire, bisogna capire su cosa si misurano le percentuali.
Capito.
Cercherò di essere più chiaro.
Il mio codice è originariamente scritto nel modo seguente:
extern double StopLoss =0;
extern double TakeProfit =0;
extern double SL_PERCENT = 0,02;
extern double TP_PERCENT = 0,03;
extern double TRALL_PERCENT = 0,01;
extern double Lots =0.5;
Ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,NormalizeDouble(OrderOpenPrice+(OrderOpenPrice + StopLoss)/100*SL_PERCENT,Digits),NormalizeDouble(OrderOpenPrice-(OrderOpenPrice - TakeProfit)/100*TP_PERCENT,Digits),",Magic,0,Red);
Lo StopLoss viene attivato, ma non dello 0,02%, bensì dello 0,43%, il che non è corretto. Non conosco TakeProfit perché non l'ho mai provato prima, ma sembra che anche questo non sia corretto.
Ho alcuni suggerimenti che il codice non è corretto.
Un'altra cosa, forse importante. I miei ordini sono aperti per tutti i miei depo per 3-4 coppie. A volte per cinque.
Inoltre voglio cambiare parametri come StopLoss, Takeprofit, TrailingStop in percentuale, non in punti.
Per esempio,
1) Takeprofit=OrderOnProfit+%TP_PERCENT
2) Stoploss=OrderOnPrice-%SL_PERCENT
Cioè
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,%,%,",Magic,0,clrGreen);
Non so come modificarlo ulteriormente per il trailing.
Ho preso un esempio dal tutorial, ma ovviamente sto sbagliando qualcosa.
3.) TrailingStop=Bid-%TRALL_PERCENT
caso 0: // ordine di acquisto
if (NormalizeDouble(OrderOpenPrice-SL*Point,Digits)*SL_PERCENT/100<=(OrderOpenPrice-Ask) // Se sotto
NormalizeDouble(Bid-(Bid-TS)/100*TRAL_PERCENT,Digits)
|| NormalizeDouble(SL,Digits)==0)
{
SL=Bid-TS*Point; //allora modificatelo
string Text="Buy "; // Testo per Buy
Modify=true; // assegnato alla modifica.
}
Spero davvero di essere stato in grado di spiegare.
Grazie.
Come implementare correttamente l'apertura di un'operazione (OrderSend) rigorosamente all'inizio della candela - OnTimer e/o OnTick,
Per non sovraccaricare il terminale (20-30 grafici aperti e tracciati simultaneamente)?
ha scoperto che il ritardo nella comparsa di un nuovo tick all'inizio di una candela può essere fino a 5-10 secondi; il divario con il tick precedente è significativo (negativo per le condizioni di transazione)
p.s. allo stesso tempo nell'Expert Advisor si suppone di notificare un possibile accordo 1-2 minuti prima dell'apertura dell'accordo, cioè prima dell'inizio dell'apertura di una candela.
Come implementare correttamente l'apertura di un'operazione (OrderSend) rigorosamente all'inizio della candela - OnTimer e/o OnTick,
per non sovraccaricare il terminale (20-30 grafici aperti e tracciati simultaneamente)?
Si è scoperto che il ritardo nell'apparizione di un nuovo tick all'inizio di una candela può essere fino a 5-10 secondi con un gap significativo rispetto al tick precedente (è negativo per condizioni di deal)
p.s. in questo caso, si suppone che l'Expert Advisor informi preliminarmente su un possibile accordo 1-2 minuti prima dell'apertura dell'accordo, cioè prima dell'inizio dell'apertura di una candela.
È necessario visualizzare tutti i grafici aperti nel timer per vedere se appare una nuova barra.
Devi creare un array di puntatori a istanze di classi - una classe per ogni timeframe di ogni grafico aperto.
La classe che controllerà l'apertura di una nuova barra può essere trovata in questo articolo.
Apri il grafico - aggiungilo alla serie di grafici aperti. Chiudi il grafico - cancellalo dalla matrice.
Nel ciclo nel timer si passa attraverso un array di puntatori a istanze di classi e si controlla il fatto dell'apertura di una nuova barra, che la classe restituirà in caso di formazione di una nuova barra.
È necessario visualizzare tutti i grafici aperti nel timer per vedere se appare una nuova barra.
Dovete creare un array di puntatori alle istanze di classe ...
Che ne dite di usare MQL4?
E cosa fare con - "...si suppone che notifichi preliminarmente un possibile accordo 1-2 minuti prima dell'apertura dell'accordo, cioè prima dell'apertura di una candela...", cioè all'interno di una barra
Benvenuto nel topic https://www.mql5.com/ru/forum/208120#comment_5412193
Non riesco a trovare un consenso.
Prima di visualizzare il tipo doubl, lo normalizzo a 2 cifre decimali, ma a volte non funziona. Perché? Ecco una parte del codice.
Tipo prof[] è una stringa
E si blocca nel seguente modo
Prima di visualizzare il tipo doubl, lo normalizzo a 2 cifre decimali, ma a volte non funziona. Perché? Ecco una parte del codice.
Tipo prof[] è una stringa
Si blocca nel seguente modo
DoubleToString()
DoubleToString
Converte un valore numerico in una stringa di testo.
stringaDoubleToString(
valore doppio,//numero
intdigits=8//numero di posti decimali
);
Parametri
Valore restituito
Esempio:
Print("DoubleToString(120.0+M_PI) : ",DoubleToString(120.0+M_PI);
Print("DoubleToString(120.0+M_PI,16) : ",DoubleToString(120.0+M_PI,16);
Print("DoubleToString(120.0+M_PI,-16) : ",DoubleToString(120.0+M_PI,-16);
Print("DoubleToString(120.0+M_PI,-1) : ",DoubleToString(120.0+M_PI,-1));
Print("DoubleToString(120.0+M_PI,-20) : ",DoubleToString(120.0+M_PI,-20);
Un insetto meraviglioso o altro.
Aggiungiamo gli ingressi:
input datetime test =0;