Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 480
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Aiuta a tradurre l'algoritmo per trovare le coordinate del punto di intersezione di due segmenti
Dall'articolo:
È molto semplice!
Forse qualcuno ne ha uno già pronto negli archivi?x1,y1 e x2,y2 sono coordinate dei vertici del primo segmento;
x3,y3 e x4,y4 sono le coordinate dei vertici del secondo segmento;
per trovare l'intersezione facciamo le equazioni delle linee:
prima equazione:
(x-x1)/(x2-x1)=(y-y1)/(y2-y1);
seconda equazione
(x-x3)/(x4-x3)=(y-y3)/(y4-y3);
queste equazioni definiscono una retta passante per due punti, che è ciò di cui abbiamo bisogno.
Da queste equazioni troviamo x e y con le seguenti formule:
x:=((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
y:=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
poiché le nostre linee si intersecano, hanno un punto di intersezione comune con le coordinate (x,y), che dobbiamo trovare.
Affinché l'intersezione appartenga ai nostri segmenti di linea, dobbiamo vincolarla, cioè controllare la condizione:
se
(((x1<=x)e(x2>=x)e(x3<=x)e(x4 >=x))o((y1<=y)e(y2>=y)e(y3<=y) e(y4>=y))
allora c'è un punto di intersezione di questi segmenti, e se non c'è, non c'è nessun punto di intersezione.
Dovresti anche controllare il parallelismo di questi segmenti usando i coefficienti angolari:
k1:=(x2-x1)/(y2-y1);
k2:=(x4-x3)/(y4-y3);
dove k1 e k2 sono le tangenti degli angoli dei segmenti alla direzione positiva dell'asse OX, se k1=k2, allora i segmenti sono paralleli e quindi non hanno punti di intersezione.
Ciao cari amici!
Aiuta a tradurre l'algoritmo per trovare le coordinate del punto di intersezione di due segmenti di linea
Dall'articolo:
È molto semplice!
Forse qualcuno ne ha uno pronto negli archivi?x1,y1 e x2,y2 sono le coordinate dei vertici del primo segmento;
x3,y3 e x4,y4 sono le coordinate dei vertici del secondo segmento;
per trovare l'intersezione facciamo le equazioni delle linee:
prima equazione:
(x-x1)/(x2-x1)=(y-y1)/(y2-y1);
seconda equazione
(x-x3)/(x4-x3)=(y-y3)/(y4-y3);
queste equazioni definiscono una retta passante per due punti, che è ciò di cui abbiamo bisogno.
Da queste equazioni troviamo x e y con le seguenti formule:
x:=((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
y:=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
poiché le nostre linee si intersecano, hanno un punto di intersezione comune con le coordinate (x,y), che dobbiamo trovare.
Affinché l'intersezione appartenga ai nostri segmenti di linea, dobbiamo vincolarla, cioè controllare la condizione:
se
(((x1<=x)e(x2>=x)e(x3<=x)e(x4 >=x))o((y1<=y)e(y2>=y)e(y3<=y) e(y4>=y))
allora c'è un punto di intersezione di questi segmenti, e se non c'è, non c'è nessun punto di intersezione.
Dovresti anche controllare il parallelismo di questi segmenti usando i coefficienti angolari:
k1:=(x2-x1)/(y2-y1);
k2:=(x4-x3)/(y4-y3);
dove k1 e k2 sono le tangenti degli angoli dei segmenti alla direzione positiva dell'asse OX, se k1=k2, allora i segmenti sono paralleli e quindi non hanno punti di intersezione.
È un po' complicato... Ho scritto la definizione dell'intersezione delle linee, una a 2m highs e l'altra a 2m lows, oltre la prossima barra o no. L'ho scritto usando la tangente, il rapporto tra la differenza di prezzo in pip e il numero di barre tra le Haijs su cui è disegnata la linea. Corrispondentemente, è la tangente dell'angolo della seconda linea in basso. E poi uso la tangente per trovare il numero di punti della prossima barra, cioè uso la formula inversa con il valore cambiato di un cateto (il numero di barre). Otteniamo il valore del prezzo nel punto testato di queste linee. E di conseguenza se il valore del prezzo della barra dritta è inferiore, l'incrocio è avvenuto.
Ma finora non riesco a trovare questo indicatore.
...
O forse qualcuno ne ha uno già pronto negli archivi?
Kim ha pubblicato una funzione. La funzione restituisce il prezzo del punto della semiretta disegnata dalla linea verso destra.
x1 - barra della coordinata della prima linea, y1 - prezzo della coordinata della prima linea. x2 - barra della coordinata della seconda linea, y2 - prezzo della coordinata della seconda linea, x - la barra per la quale viene restituito il prezzo.
Puoi trovare i prezzi di ciascuna delle due linee e vedere se si sovrappongono...
Ho scritto qui una specie di..., qualcosa conta e viene disegnato, ma non ad ogni incrocio. C'è qualcosa che non va nella mia scrittura. Non capisco cosa sia.
Grazie mille Alexey e Artem per la vostra attenzione alla mia domanda!
Ho scritto qui una specie di..., qualcosa conta e viene disegnato, ma non ad ogni incrocio. C'è qualcosa che non va nella mia scrittura. Non so cosa sia.
Al momento, non sono in grado di capire nulla nella programmazione, oggi è il compleanno della mia amata moglie. Ha 18 anni e 384 mesi.
Ma!!! Si noti che l'incrocio delle linee può avvenire dentro o fuori le barre, e il prezzo (coordinata Y) può essere ottenuto solo sulla barra. O prima o dopo, ma il punto di crossover non può essere sempre determinato. Direi che è raro. Considerando quanto sopra, rivedete il vostro codice con questo in mente, forse funzionerà.
Alexey Viktorov 2015.12.12 17:33 # RU
Ha compiuto 18 anni.
Si prega di consigliare che tipo di comandi dovrebbero essere inseriti nell'Expert Advisor in modo che corregga automaticamente i takeprofits già impostati nelle posizioni aperte quando le ricalcola. O forse c'è uno script che corregge tutte le fermate dell'ultimo set?
Si prega di consigliare come aggiungere codice in modo che nel tester delle strategie sia possibile cambiare i pesi dei modelli. m_pattern_0(90) sostituire le variabili di input
Non sono molto bravo con l'OOP, ottengo errori" funzionemembro non definita" o il codice semplicemente non funziona.
Domanda simile senza risposta qui https://www.mql5.com/ru/forum/13484
p.s.: con CiCustom posso cambiare i pesi per i modelli, ma con gli indicatori standard che hanno classi standard (come CSignalEnvelopes ecc.) dove sono i metodi per impostare i valori per ogni modello, ma non sono ancora disponibili nelWizard?
O forse c'è una risposta per questo da qualche parte?
Qualcosa sarà caricato dal sito MetaQuotes e ottengo la seguente immagine:
Top : Database 2049/12358 record.
Il penultimo è del 17.10.2014, l'ultimo è del 14.07.1993.
Dove sono quelli che mancano?