[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 74

 
Mathemat:

Una matrice di 8 punti è M[8][2] piuttosto che M[8][8].

I "tre qualsiasi" sono quelli preselezionati o cosa?


Beh, sì, l'array è ovviamente M[8][2]. I tre qualsiasi sono quelli dell'array che devono essere definiti nel processo di calcolo. Possiamo formularla in modo leggermente diverso: dobbiamo trovare le coordinate del centro di un cerchio e le coordinate di tre punti il più vicino possibile a questo cerchio.
 
 
atztek:


E poi OrderOpenPrice() .


quindi lo definirà da solo?
 
Myth63:

così lo identificherà lui stesso?
Cosa intende per "lo troverà"?
Si guardano gli ordini aperti e, per ogni ordine, il comando OrderOpenPrice() dà il valore del prezzo al quale l'ordine è stato aperto.
Assegnare il suo valore a qualche variabile e usarlo.
 
Elenn: Beh, sì, l'array è ovviamente M[8][2]. Qualsiasi tre sono uno qualsiasi dell'array, che dovrebbe essere definito nel processo di calcolo.

In breve, il problema si riduce a questo: ci sono tre punti. Devi disegnare un cerchio di raggio r tale che la somma dei quadrati delle distanze da loro al cerchio sia minima.

In realtà, è un grande compito, che non può essere risolto in fretta. Un cerchio non è una linea retta. Quale delle due distanze prendere non è affatto ovvio.

Bene, ecco un esempio concreto:

Mostra la disposizione corretta.

 
atztek:
Cosa vuol dire "lo rileverà"?
Si guardano gli ordini aperti e, per ogni ordine, il comando OrderOpenPrice() dà il valore del prezzo al quale l'ordine è stato aperto.
Assegnare il suo valore a qualche variabile e usarlo.


L'ho capito così: lo imposterà automaticamente e lo userà per il controllo. ?

for(cnt=0;cnt<totale;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()== OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNum2)
{
if ( Ask>(OrderOpenPrice()+(AD1*Point) )
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Black);
return(0);

}

Sembra essere giusto?

 
Myth63:


L'ho capito così: lo imposterà automaticamente e lo userà per il controllo. ?

for(cnt=0;cnt<totale;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()== OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNum2)
{
if ( Ask>(OrderOpenPrice()+(AD1*Point) )
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Black);
return(0);

}

Sembra essere giusto?

Non proprio. E se non viene selezionato nessun ordine? Dov'è la normalizzazione del prezzo quando si invia un ordine di compravendita?

Gli ordini sono chiusi in un ciclo, il che significa che la ricerca non deve essere fatta da zero, ma da OrdersTotal()-1 a >=0

 
Mathemat:

In breve, il problema si riduce a questo: ci sono tre punti. Devi disegnare un cerchio di raggio r tale che la somma dei quadrati delle distanze da loro al cerchio sia minima.

In realtà è un grande compito, non qualcosa che si può fare in un batter d'occhio. Un cerchio non è una linea retta. Quale delle due distanze prendere non è affatto ovvio.

Beh, un esempio concreto:

Mostra la disposizione corretta.


Credo di sì:
 

Elenn: Думаю, что так:

No, non mi assumo un tale compito. Nel processo del calcolo stesso, dovrai decidere quali distanze prendere (ci sono due distanze da qualsiasi punto al cerchio). Niente di bello.

Forse GA può aiutare a trovare il minimo locale qui. Ma non sono bravo in questo.

P.S. Non hai specificato la funzione obiettivo - somma dei quadrati delle distanze o somma delle distanze stesse.

 
Mathemat:

In realtà è un grande compito, non qualcosa che si può fare in un batter d'occhio. Un cerchio non è una linea retta.

Capisco che il compito non è facile. Non voglio ridurre il problema a una stupida ricerca di tutte le possibili varianti di "tre". Per quanto ho capito, la variante con una linea retta "partecipa" anche tutti i punti, ma non tre di essi. Come pensi che potrebbe essere la variante per una linea, in modo che la somma delle distanze dai tre punti "migliori" a questa linea sia minima?
Motivazione: