Comunità di esperti - pagina 3

 
komposter<br / translate="no">
Ho dato un'occhiata veloce (non ho ancora scavato), ho trovato il punto di riferimento che stai calcolando.
Prova a "buttare via" e mettere stupido Punto. Forse è questo il problema (il punto attraverso MarketInfo può non uscire sempre come si vuole?).

Si suppone che sia sempre...
anche se puoi provare a normalizzarlo =)

e non è sempre accettabile - l'esperto può fare trading su diverse coppie, e il punto può essere diverso...
 
Il
problema è vecchio come il primo chip del computer -
è triste, naturalmente... ma ci deve essere un modo per aggirarlo, giusto? Spero che Renat dica qualcosa...
 
if ( orderstoploss == 0.0 || (  orderstoploss < ( bid - TrailingStop * point ) ) )


Supponiamo che orderstoploss = 1.29211 (5 cifre dopo il punto decimale)
bid=1.29716 (anche 5 cifre)
TrailingStop = 50
point =0.001
allora (bid - TrailingStop * point)=1.29216>1.29211
Vero, questo richiede che le cifre diventino improvvisamente 5
E anche

if ( orderstoploss == 0.0 || (  orderstoploss < ( bid - TrailingStop * point ) ) )


può essere sostituito in modo indolore con

if ( orderstoploss < ( bid - TrailingStop * point )) )


Penso che non sia necessario controllare l'assenza del livello di stop loss durante il trailing.
In realtà lo è, mi sto correggendo. Se impostiamo uno stop loss solo quando c'è un profitto, e se non c'è siamo pronti ad aspettare una chiamata di margine.
Non ho trovato altro. Su quale coppia il tuo trailing stop ha funzionato male e c'è stato un forte movimento?

 
Ciao.
Sto convertendo tutto in valori interi per scopi di confronto. Memorizzo e uso i valori dati dove posso (nell'array).
utilizzare i valori dati (in array, variabili, ecc.)
Cioè le variabili di tipo int possono assumere valori da -2147483648 a 2147483647.
Questa dimensionalità è abbastanza adatta alle croci.
Corrispondentemente, 1,2999 e 1,3000 possono essere fusi a 12999 e 13000, e poi possono essere confrontati in modo sicuro,
senza preoccuparsi di eventuali errori periodici.

Ho abbozzato un esempio qui :)
int Normalize(double double_value, int digits) - приводит double в int  (1.2999 в 12999)
double Restore(int int_value, int digits) - приводит полученный ранее int в double (12999 в 1.2999)


qui

//+------------------------------------------------------------------+
//|                                                   ShiftPoint.mq4 |
//|                                                            Begun |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
   return(0);
}
//+------------------------------------------------------------------+
int Normalize(double double_value, int digits)
{
	return (NormalizeDouble(double_value,digits)*MathPow(10,digits));
}
double Restore(int int_value, int digits)
{
	return (NormalizeDouble((int_value/MathPow(10,digits)),digits));
}
//+------------------------------------------------------------------+
int start()
{
	double	Test_Value =  1.29999999;
	int	Test_int;
	double	Test_double;

	Test_int         = Normalize(Test_Value,Digits);
	Test_double   = Restore(Test_int,Digits);
	Print("-----------------------------");
	Print("Restored value    = ",DoubleToStr(Test_double,Digits));
	Print("Shift Point Value = ",Test_int);
	Print("Real Double Value = ",DoubleToStr(Test_Value,8));
}
//+------------------------------------------------------------------+



uscita:
shiftpoint EURUSD,H1: doppio valore reale = 1.29999999
shiftpoint EURUSD,H1: valore del punto di spostamento = 13000
shiftpoint EURUSD,H1: Valore ripristinato = 1,3000

 
In generale, sostituite questo con
if ( orderstoploss < ( bid - TrailingStop * point )) )


su

if ( TrailingStop < ( bid -orderstoploss)/ point  )


In alternativa.

 
Grazie a tutti per la vostra partecipazione!
Rosh 17.04.05 22:29 <br / translate="no"> mi sembra che il controllo dell'assenza del livello di stop loss non sia necessario per il trailing
Non sono d'accordo, il trailing dovrebbe essere inequivocabile - se acceso, significa che SL è esposto.

Su quale coppia il tuo trailing non ha funzionato correttamente e non c'è stato un forte movimento?
ora l'esperto funziona su eu - errori occasionali... per tutto il giorno... Non credo che sia questo il caso...

In generale, sostituiscilo.
ora lo proverò, forse mi aiuterà ;) te lo dirò domani...

Iniziato il 17.04.05 22:46
Ciao.
Porto tutto a numeri interi per il confronto
Ciao =) è certamente un'opzione... ma non pensavo di dover passare attraverso tutti questi problemi... Vorrei aver sentito gli sviluppatori, loro lo sanno meglio di me...
 
Le mie scuse, non ero coinvolto nella discussione.

2dev:
Il
problema è vecchio come il primo chip del computer:

Hai ragione - questo è un problema fondamentale, è pericoloso confrontare i numeri in virgola mobile.
In luoghi importanti, portate sempre i numeri ad una certa precisione tramite Normalize().

quale implementazione dell'aritmetica usate?

Standardizzare sul tipo double (8 byte).

A proposito, forziamo la normalizzazione di tutti i prezzi passati nelle query commerciali per evitare errori.
Potete inviare una richiesta di stop loss come 1,2932461, ma sarà impostato come 1,2932.
Si prega di controllare se questo è l'errore nel cercare di reimpostare lo stop allo stesso prezzo?
 
Si prega di controllare se questo è l'errore con il tentativo di reimpostare lo stop allo stesso prezzo?

3 persone stavano guardando =)) Renat è venuto e ha appena puntato il dito sull'errore =))
Controllerò ora, naturalmente, ma molto probabilmente questo è il caso... Non ho normalizzato "bid - TrailingStop * point", e questa stessa costruzione è coinvolta nella modifica dell'ordine...
non siamo attenti, signori ;)
 
Nei posti importanti, portate sempre i numeri ad una certa precisione tramite Normalize().

Intendi il Normalize() che ha suggerito Begun?
 
В важных местах постоянно приводите числа к определенной точности через Normalize().

Intendi il Normalize() che ha suggerito Begun?

Scusa, intendevo il NormalizeDouble standard.