[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 487

 
tol64:


)))) No, penso che sarebbe meglio lasciare il mago. E lascia gli ordini in sospeso.

Per essere più precisi, lasciate i simboli magici che sono necessari. E se usi diversi EA su diversi grafici, dovresti anche includere i simboli nel controllo. Non sono ancora arrivato a questo punto. ))


Di solito controlliamo un simbolo e un magik - un simbolo da usare su diversi strumenti, non per cambiare un magik - e un magik da usare su uno strumento e diversi timeframes - ma solo un magik può essere controllato, se è emesso in variabili esterne
 
Potete dirmi se il broker jmt:0 ha lo stesso colore in estate e in inverno?
 
FOReignEXchange:

Non uso mai i maghi. Anche se a volte ci sono pochi oggetti alla volta. Io uso i biglietti. È molto più facile controllare attraverso OrderSelect. E la funzione OrderSend diventa più chiara. Beh, ognuno è padrone della propria scrittura. Personalmente, non ho mai avuto problemi senza maghi.

Il biglietto non va mai da nessuna parte. È conveniente.

Esattamente... :) Chiudere una posizione parzialmente aperta. E poi cercate di cambiare la fermata o la presa in base al biglietto che avete per questa posizione. Allora avrai il meglio dei due mondi. :)

Esempio: abbiamo una posizione aperta con 1,0 lotto e il biglietto #1. Devi chiudere 0,5 lotti di questa posizione e mantenere i restanti 0,5 lotti.

Azioni del Dealer Center:

1. Chiudere la posizione #1 a tutto volume (lotto 1.0) 2.

2) Aprire la posizione #2 con un volume di 0,5 lotti

A voi sembra una chiusura parziale della posizione #1 e lasciare il resto sul mercato. Solo che il biglietto di questa posizione non è quello che pensi...

 
FOReignEXchange:


Non capisco? Sto solo guardando nell'aiuto, lì OrderSelect() usa una condizione. E non ho visto da nessuna parte senza il vero.

If è un operatore di condizione. E ci dovrebbe essere una condizione tra parentesi. Mi sembra più logico così. Anche se non ci può essere alcuna differenza.

Facciamo un'analogia con il russo. IMHO - è più conveniente leggere il codice mentalmente sostituendo i suoi operatori con il testo parlato:

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

Quello che abbiamo qui è:

Se l'ordine non è statoscelto, interrompiamo il ciclo.

Ora:

if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;

Qui è più conveniente:

senessun ordine è selezionato, interrompiamo il ciclo.

La stessa cosa è assolutamente la stessa, ma è più facile da leggere. E c'è meno scrittura...

E possiamo anche rimuovere tutte le cose inutili e ottenere ancora meno codice:

if(!OrderSelect(i,SELECT_BY_POS)) break;

Perché? Perché selezioniamo un ordine a mercato ed è MODE_TRADES di default, quindi possiamo ometterlo nel parametro della funzione OrderSelect()...

Oh, sì... :)

 
artmedia70:

Oh caro... :)


)))

Ok. È mattina, quindi buongiorno! ))

Ho ancora un'altra anomalia che non capisco a prima vista. L'operazione più semplice:

double High_1  = NormalizeDouble(iHigh(Symbol(),Timeframe,1),Digits);
double new_val = NormalizeDouble(High_1 + PlsMns_point*Point,Digits);

Posso vedere nel diario:

E letteralmente in un'immagine speculare:

 double Low_1   = NormalizeDouble(iLow(Symbol(),Timeframe,1),Digits);
 double new_val = NormalizeDouble(Low_1 - PlsMns_point*Point,Digits);

Nel registro vedo questa "figura":

La variabile esternaPlsMns_point è di tipo int. Viene passato in una funzione. Cosa devo fare per eliminare questo malinteso? ))

 

La variabile esterna PlsMns_point è di tipo int .

Dalla prima voce di registro, sembra essere di tipo Double, mentre int è un intero.

 
Stells:

La variabile esterna PlsMns_point è di tipo int .

Secondo la prima voce di registro è di tipo Double, int è un intero.


E se moltiplicato per Punto, la conversione sembra avvenire. Ma non è questo il problema, dato che ho provato anche il doppio.

P.S. E oltre a due varianti identiche. L'unica differenza è nel mirroring. Perché?

 

Credo che manchi questo valore:

double Low_1 = NormalizeDouble(iLow(Symbol(),Timeframe,1),Digits);

forse scaricare la storia

 
tol64:


)))

Ok. È mattina, quindi buongiorno! ))

Ho un'altra anomalia che non capisco a prima vista. L'operazione più semplice:

Posso vedere nel diario:

E letteralmente in un'immagine speculare:

Nel diario vedo questa "figura":

La variabile esternaPlsMns_point è di tipo int. Viene passato in una funzione. Cosa devo fare per eliminare questo malinteso? ))

Stampa anche i valori delle variabili High_1 e Low_1. In generale, stampate i valori passati alla funzione e stampate anche i valori di ritorno, così vedrete da dove partire. Spesso le variabili di cui si è sicuri prendono valori assolutamente inaspettati. È allora che troverete l'errore.
 

Buon giorno, come posso cambiare il volume del file di log (regolare, cancellare), che a volte è intasato a valori enormi a causa di errori EA. Ho bisogno di un modo per farlo dall'Expert Advisor stesso.