Discussione sull’articolo "Programmazione basata su automi come nuovo approccio alla creazione di sistemi di trading automatizzati" - pagina 3

 
Rorschach:

"3. Ero curioso e volevo ascoltare il rumore bianco delle zecche reali, e sono riuscito a farlo utilizzando il software WaveLab 6.0".

Hee. A quanto pare non sono l'unico pazzoide di questo tipo))))) Ecco cosa ho ottenuto. L'ho fatto tramite Adobe Audience.

Come hai fatto a normalizzare il prezzo?

Come al solito, tagliando le code lunghe, tutto ciò che va oltre 3*sko viene portato a questo valore.
 

Un carico di emozioni

1) Un sacco di bukaf niente...

2) Guardando questo si comincia a capire perché gli americani sono su Marte e non noi.

3) Sul resto preferisco tacere (per le sole emozioni).

 

Mi è piaciuto l'articolo, soprattutto per quanto riguarda la pratica moderna dello sviluppo e della documentazione dei programmi. È così che funziona.

Naturalmente, l'articolo avrebbe dovuto mostrare almeno il più semplice Expert Advisor basato sul metodo degli automi. O è previsto per il prossimo articolo?

A mio avviso, il metodo degli automi presenta un grosso problema. Per i veri Expert Advisor è impossibile definire lo Stato in modo univoco. Lo stato dell'Expert Advisor è determinato da alcune variabili interne sul computer dell'utente e dallo stato delle posizioni (tasso corrente, capitale, esecuzione degli ordini) sul server. Lo stato interno è determinato in modo univoco, ma lo stato delle posizioni sul server può non essere noto, essere noto con un certo ritardo, essere in uno stato poco chiaro (alcuni ordini e richieste vengono eseguiti, altri no, e non si sa perché).

E poiché lo stato attuale del consulente non è noto, gli ordini e le richieste non vengono eseguiti, è impossibile costruire una logica chiara di automi. In realtà, otteniamo questo algoritmo:

comp: Comprami un paio di centinaia di euro, server.

server: Fottiti, comp, i tuoi stop nella richiesta sono sbagliati.

comp: Perché sono sbagliati?

server: il prezzo è saltato.

comp: bene, allora compra senza stop.

Il server tace

comp: beh, cosa hai comprato?

Il server tace

comp: beh, vaffanculo. Facciamo un pisolino di otto minuti.

Comp tra otto minuti: come va?

server: ho comprato eurobucks, ma mentre compravo il prezzo è andato da un'altra parte.

Comp: Fanculo. Facciamo un altro pisolino di un'ora.

E così via.

 
L'evoluzione gira in tondo: è ora di tornare agli automi (non) finiti, poi costruiremo macchine di Turing.
 
Virty:

...

A mio parere, il metodo degli automi presenta un grosso problema. Per i veri Expert Advisor è impossibile definire in modo univoco lo Stato. Lo stato dell'Expert Advisor è determinato da alcune variabili interne sul computer dell'utente e dallo stato delle posizioni (tasso corrente, capitale, esecuzione degli ordini) sul server. Lo stato interno è determinato in modo univoco, ma lo stato delle posizioni sul server può non essere noto, essere noto con un certo ritardo, essere in uno stato poco chiaro (alcuni ordini e richieste vengono eseguiti, altri no, e non si sa perché).

Ebbene, poiché lo stato attuale dell'EA non è noto, gli ordini e le richieste non vengono eseguiti, è impossibile costruire una logica chiara di automi.

...

Questa è una novità. Qualsiasi TS (senza eccezioni) è costruito sull'analisi e sulla chiara comprensione degli stati del TS. Gli stati più semplici: elaborazione dei segnali di apertura/chiusura/modifica di un ordine, ecc. ecc.

Se "lo stato attuale dell'EA non è chiaramente noto", allora non è sicuramente un EA, e sicuramente non è un programma, e la parola "algoritmo" in relazione a un EA dovrebbe essere cancellata e dimenticata per sempre.

 

Un sacco di emozioni.

O.K., propongo di trasformare la discussione in una direzione pratica. Analizziamo un algoritmo concreto basato sulla teoria degli automi finiti. Discutiamo i suoi punti di forza e di debolezza. Io stesso non scrivo con questo metodo, ma ho una certa familiarità con la questione e con gli algoritmi, per cui ora abbozzerò il principio generale di questo controllo:

//СХЕМА + ПСВЕДОКОД
enum eTradeState {NoTradeRegim, BuyRegim, SellRegim, WaitRegim};
eTradeState TradeState = eTradeState.NoTradeRegim;
int Trade()
{
   switch (TradeState)
   {
       case eTradeState.NoTradeRegim:
          NoTradeRegim();
          break;
       case eTradeState.WaitRegim:
          WaitRegim();
          break;
       case eTradeState.SellRegim:
          SellRegim();
          break;
       case eTradeState.BuyRegim:
          BuyRegim();
          break;
   }
}
//Qui si descrivono le condizioni in cui l'Expert Advisor inizierà a operare. Ad esempio
void NoTradeRgim()
{
   /Segue un ulteriore pseudocodice. 
   if(CurrentDay == WorksDays && Market.Enable = true)
      TradeState = eTradeState.WaitRegim;
}
//Qui si colgono i segnali per entrare in una posizione lunga o corta.
void WaitRegim()
{
   if(CheckForNoTrade() == true)
   {
      TradeState = eTradeState.NoTradeRegim;
   }
   if(CheckForBuy() == true)
   {
      BuyAtStop(...)
      TradeState = eTradeState.BuyRegim;
   }
   if(CheckForSell() == true)
   {
      SellAtStop(...);
      TradeState = eTradeState.SellRegim;
   }
}
//In questa funzione accompagniamo un lungo accordo
void BuyRegim()
{
   //Scrivere qui le condizioni in cui l'operazione viene chiusa, o il suo stop loss o altri parametri vengono modificati, ecc.
   if(StopLossChanged() == true)
      NewStop = ...;
   if(profit >= takeprofit)
   {
      CloseDeal(...);
      TradeState = eTradeState.WaitRegim;
   }

}
//In questa funzione accompagniamo un'operazione short
void SellRegim()
{
   //Scrivere qui le condizioni alle quali l'operazione viene chiusa, o il suo stop loss viene spostato, ecc.
   if(StopLossChanged() == true)
      NewStop = ...;
   if(profit >= takeprofit)
   {
      CloseDeal(...);
      TradeState = eTradeState.WaitRegim;
   }

}

Descritto in modo schematico, ma credo che l'idea di base sia chiara. In ogni momento del tempo l'Expert Advisor ha un solo stato (modalità non mercato, modalità di attesa del segnale, modalità di acquisto, modalità di vendita). In ogni stato esiste un certo insieme di azioni e condizioni in base alle quali avviene il passaggio dallo stato corrente a un altro. L'idea è quella di controllare chiaramente ciascuno degli stati e quindi la logica interna è strettamente localizzata e non si possono verificare errori logici come la chiusura di una transazione inesistente o già chiusa.

Io stesso non scrivo con questa tecnica, perché penso che non sia adatta a tutti gli algoritmi. Tuttavia, risolve alcuni compiti meglio dell'approccio classico.

Cosa ne pensano gli esperti?

 
C-4:
...

Io stesso non scrivo con questa tecnica, penso che non sia adatta a tutti gli algoritmi. Ma comunque risolve alcuni problemi meglio dell'approccio classico.

Cosa ne pensano gli esperti?

E posso chiederti cosa intendi con l'espressione "approccio classico"?

Perché ognuno ha la propria visione della realtà.

 
Urain:

Posso chiederle cosa intende per "approccio classico"?

Perché ognuno ha il proprio riflesso della realtà.

Devo essermi espresso male. Certo, ognuno scrive a modo suo. Intendevo la maggior parte degli approcci quando lo stato del sistema a ogni passo non è chiaramente definito. Deve essere determinato non solo durante l'esecuzione dell'Expert Advisor. L'esempio più semplice è il codice scritto in un blocco OnTick(). Non vengono analizzate le modalità. La scelta di una soluzione viene effettuata sulla base della ramificazione del blocco if(...).
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
C-4:
Mi riferivo alla maggior parte degli approcci quando lo stato del sistema in ogni fase non è chiaramente definito. Deve essere determinato al momento dell 'esecuzione dell'EA.

Se lo stato non è "chiaramente definito", come si può definire ciò che è "non chiaramente definito"? Nel caso in cui si lavori con ordini/posizioni, non è necessario che l'EA capisca a ogni tick in quale stato si trova? Oppure l'EA si trova ad ogni tick in uno "stato non definito". Che tipo di EA è quello che non sa cosa fare a ogni tick?

 

L'articolo non tratta affatto l'argomento, tranne che per il fatto che esiste un interruttore. Non importa se esiste o meno, può essere commutato con degli "if".

Una volta stavo scrivendo un EA, con un sistema molto complesso di ordini. Ho dovuto analizzarlo seriamente e stilare un elenco di stati: nessun ordine, uno in sospeso, un ordine di mercato, due ordini in sospeso, uno in sospeso e uno di mercato, ecc. Solo in questo modo sono riuscito a superarlo. Ma si è rivelata una cosa così universale e rapidamente riprogrammabile. Un bell'argomento per un articolo.