[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 1126
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
Il codice è sbagliato. Innanzitutto, se la funzione start() è di tipo int, dovrebbe restituire un valore intero. Avete un ritorno restituito solo per condizione. E se la condizione non è soddisfatta, cosa dovrebbe restituire la funzione start() al terminale?
Inoltre, sei troppo complicato da controllare - meglio fare come segue: creiamo un contatore di ordini, aperti e chiusi oggi. Se il numero di ordini chiusi oggi è maggiore di zero, allora non si fa trading. Altrimenti, siamo autorizzati a commerciare.
cambiato int in void... non ha aiutato
Ad essere onesti, non capisco davvero come fare un contatore per gli ordini ed essere ancora in grado di abilitare/disabilitare l'opzione di trade giornaliero una tantum....
....pensiero-pensiero-pensiero proverò così
if(CalculateCurrentOrders(Symbol())==0 && Ordini==0)
{
CheckForOpen();
if(WaitForNewDay) {Ordini++;}
ritorno;
}
Azzeramento del contatore:
if(WaitForNewDay)CheckForNewDay();
void CheckForNewDay()
{
tm=iTime(Symbol(),PERIOD_D1,0);
if (bt!=tm) {bt=tm; Ordini=0;}
}
Comunque, sono tornato a quello da cui stavo scappando ))))
cambiato int in void... non ha aiutato
Onestamente, non capisco come fare un contatore di ordini ed essere ancora in grado di abilitare/disabilitare l'opzione di day trading una tantum....
-------------
Comunque, torniamo a quello da cui stavo scappando ))))
Per favore aiutatemi con il codice. Disegno e muovo manualmente una linea orizzontale e quando il prezzo la tocca, si attiva un segnale.
Il prezzo tocca la linea - c'è un segnale. Lo capisco. Cosa c'è di sbagliato nel codice?
Scusa, ho impostato il compito in modo errato)). Ciò di cui avete bisogno è un codice che faccia questo.
La prima cosa da capire è che una linea è un oggetto. Il codice di programmazione distingue gli oggetti dai loro nomi. Hai bisogno di scrivere il nome della linea nel codice, e poi quando lasci la linea su un grafico, devi andare nelle sue proprietà e cambiare il nome con quello che hai scritto nel codice. Solo allora il codice capirà che è necessario elaborare le letture prese da questo oggetto.
Successivamente nel codice è necessario interrogare il prezzo in cui si trova la linea. La richiesta viene fatta tramite la funzione doppia ObjectGet(string name, int prop_id). Al posto di name dovete specificare il nome della vostra linea, e al posto di prop_id specificate OBJPROP_PRICE1. In questo modo puoi ottenere programmaticamente il prezzo al quale questa linea è impostata. Poi nel codice, dovete controllare se il prezzo tocca questa linea. Per esempio: se il prezzo del tick precedente è sotto il livello in cui è impostata la linea ed è più o uguale a questo livello nel tick attuale, allora questo tocco si è verificato.
Alexander, se non riesci a fare qualcosa con il codice, possono aiutarti qui. Se avete bisogno che il codice sia implementato per voi, andate su https://www.mql5.com/ru/job.
L'ho fatto ma il segnale non funziona quando Close[0]==n. Come risolvere il problema?
Beh, a giudicare dal codice, avete fatto un indicatore. Quindi, per controllare se questa parte del codice funziona, dovrete sedervi e aspettare che il prossimo tick tocchi la linea. È meglio creare uno script per testare questa parte del codice, perché vi darà risultati immediati.
La prima cosa di cui dovete assicurarvi è che il codice veda effettivamente la vostra linea. Come si fa? Devi chiedere il suo prezzo e mostrarlo come un avviso. Farlo.
Ora che lo script è stato ricompilato, apriamo qualsiasi grafico e disegniamo una linea orizzontale su di esso. Poi entriamo nelle sue proprietà e, dato che abbiamo dato il nome "1" alla linea nel codice, impostiamo anche questo nome nelle proprietà della linea:
Fare clic su OK. Lasciamo lo script sul grafico e ci assicuriamo che l'allarme abbia restituito il prezzo corretto. Spostiamo la linea nel grafico in un altro posto e di nuovo rilanciamo lo script al grafico e ci assicuriamo che se cambiamo la posizione della linea manualmente, il codice la vede e la riconosce ancora.
Procediamo nello stesso modo.
L'indicatore viene testato attraverso il tester con la visualizzazione accesa. Ho corretto un po' il codice, perché per far scattare l'allarme i valori dovrebbero essere normalizzati. Ma se si sposta la linea sulla barra corrente, diciamo un'ora, allora l'allarme sarà attivato solo 1 volta con il successivo movimento della linea sulla barra corrente di allarme per qualche motivo non funziona. Devo aspettare un altro bar.