[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 320
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
O contate tutte le parentesi di sinistra, poi tutte le parentesi di destra, poi confrontate le quantità, o commentate le funzioni una per una finché non trovate l'errore. Il gusto e il colore di ognuno (design del codice sorgente) è diverso.
Ci sono 4 parentesi di apertura e 4 parentesi di chiusura, va bene. Ma come i commenti possono aiutarmi non capisco bene
Potete commentare prima le funzioni personalizzate, poi commentare i cicli, i costrutti logici... Vi posso assicurare che troverete una corrispondenza con la vostra staffa con il taglio sequenziale. O forse hai dimenticato di mettere anche ";" da qualche parte...
Non stai scambiando IF per FOR?
Scusa, non l'ho notato subito.
Confrontalo con questo frammento. È solo una variante.
Chi può spiegare perché il sesto ordine non si è aperto sulla candela e cosa fare per farlo aprire?
Diario.
2011.11.04 19:42:21 1999.11.04 20:00 RLB_FLAT GBPUSD,H4: aprire #7 vendere stop 0,10 GBPUSD a 1,62233 sl: 1,64443 tp: 1,57089 ok
2011.11.04 19:42:21 1999.11.04 20:00 Tester: #6 cancellato per scadenza
2011.11.04 19:42:10 1999.11.04 12:00 RLB_FLAT GBPUSD,H4: aprire #6 vendere stop 0,10 GBPUSD a 1,63373 sl: 1,64570 tp: 1,62652 ok
2011.11.04 19:42:09 1999.11.04 08:00 Tester: #5 cancellato per scadenza
2011.11.04 19:42:06 1999.11.04 00:00 RLB_FLAT GBPUSD,H4: aprire #5 vendere stop 0,10 GBPUSD a 1,63622 sl: 1,64702 tp: 1,63411 ok
2011.11.04 19:42:00 1999.11.02 04:00 Tester: #4 cancellato per scadenza
2011.11.04 19:41:53 1999.11.01 20:00 RLB_FLAT GBPUSD,H4: aprire #4 vendere stop 0,10 GBPUSD a 1,63365 sl: 1,64917 tp: 1,61097 ok
Il quarto, quinto e sesto ordine in sospeso sono stati cancellati per scadenza.
Aumentare la loro durata o impostare 0 (zero), vedi. OrdinaModifica()
Il quarto, quinto e sesto rinvio sono stati cancellati a causa della loro data di scadenza.
Aumentare la loro data di scadenza o impostarla a 0 (zero) vedi OrderModify(). OrdinaModifica()
Quello che mi confonde è che prima che il 6° ordine scadesse (è scaduto alle 20:00) c'era una candela al ribasso alle 16:00. Questo può essere visto nell'immagine.
1. La funzione trova l'ordine con il ticker più alto nella storia, il che significa l'ultimo ordine chiuso (a meno che, naturalmente, non ci sia un caso eccezionale, per il quale è preferibile l'opzione con il tempo massimo di chiusura).
2. Secondo le condizioni , il primo ordine viene aperto con il TP/SL specificato e solo il secondo ordine può essere aperto con il nuovo TP/SL, il che significa che la funzione può restituire zero solo se il primo trade era zero, ma non se non ci sono ordini chiusi nella storia.
Un'ultima cosa. Nella tua variante l'uso di j e di un altro SELECT nella funzione è ridondante.
è sufficiente:
1. Può fidarsi al 100% del suo broker (o del broker del cliente), sulla sua numerazione dei biglietti? Il tempo è ancora un valore più stabile - qui può solo cambiare il tempo manualmente regolando la storia. IMHO - meglio usare il tempo.
2. Se il cliente avrà bisogno di cambiare la logica, allora la vostra funzione potrebbe dover essere riscritta.
3. Suggerisci
per usarlo all'interno di un ciclo? Per quale motivo? Puoi usarlo solo una volta per l'ultimo ordine già trovato.
А... Il vostro cliente non testerà e non ottimizzerà. Capisco...
GlobalVariableSetOnCondition() - potete spiegare in parole povere cosa fa questa funzione? La descrizione nella guida è molto confusa, non riesco a capire alcuni punti?
Imposta un nuovo valore della variabile globale esistente se il valore corrente della variabile è uguale al valore del terzo parametro check_value. Se la variabile non esiste, la funzione genera un errore ERR_GLOBAL_VARIABLE_NOT_FOUND (4058) e restituisce FALSE. La funzione restituirà TRUE se eseguita con successo, altrimenti restituirà FALSE. Per ottenere le informazioni sugli errori, deve essere chiamata la funzione GetLastError(). Se il valore corrente della variabile globale è diverso da check_value, la funzione restituisce FALSE.
Questa funzione permette l'accesso atomico alla variabile globale, quindi può essere utilizzata per creare un semaforo per la comunicazione concorrente tra diversi Expert Advisors nello stesso terminale client.
GlobalVariableSetOnCondition() - potete spiegare in parole povere cosa fa questa funzione? La descrizione nella guida è molto confusa, non riesco a capire alcuni punti?
Imposta un nuovo valore ad una variabile globale esistente, se il valore corrente della variabile è uguale al terzo parametro di check_value. Se la variabile non esiste, la funzione genera un errore ERR_GLOBAL_VARIABLE_NOT_FOUND (4058) e restituisce FALSE. La funzione restituirà TRUE se eseguita con successo, altrimenti restituirà FALSE. Per ottenere le informazioni sull'errore, deve essere chiamata la funzione GetLastError(). Se il valore corrente della variabile globale è diverso da check_value, la funzione restituisce FALSE.
Questa funzione permette l'accesso atomico alla variabile globale, quindi può essere utilizzata per creare un semaforo per la comunicazione concorrente tra diversi Expert Advisors nello stesso terminale client.
Supponiamo che abbiate una variabile globale GL_Var.
Attualmente ha un valore di 1.0.
Dovete controllare se questa variabile ha un valore di 1.0 e, in caso affermativo, impostare questa variabile a 2.0
Sarà così:
Per gestire i valori di ritorno di questa funzione, potete chiamarla tramite if
Prima di chiamare questa funzione, potete controllare se la variabile globale GL_Var esiste, per evitare l'errore ERR_GLOBAL_VARIABLE_NOT_FOUND
Per favore, aiutatemi a risolvere un piccolo problema geometrico. C'è una linea con coordinate p1 e p2 (mostrata in rosso nell'immagine). Devo trovare la coordinata di p3, che è il 38,2% della coordinata di p2. Ho fatto quanto segue:
if(p2>p1) p3=p2-(p2-p1)*0,382; vero per la parte superiore della figura
if(p1>p2) p3= p2+(p1-p2)*0,382; vero per la parte inferiore della figura
C'è un modo per scrivere questo in un'equazione senza "se"?
Beh, scrivilo così.
p3=p2-(p2-p1)*0,382
Beh, scrivilo così.
p3=p2-(p2-p1)*0,382
E infatti! Grazie per il vostro aiuto.