Buy stop Sell stop Grid advisor come classe - pagina 2

 

Sto aggiungendo funzionalità a poco a poco. All'avvio, se non ci sono posizioni e non ci sono ordini pendenti, vengono piazzati ordini di stop pendenti. La descrizione della versione è allegata al file della classe:

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//+------------------------------------------------------------------+

ds

 

Interessante - la funzione CBuyStopSellStopGrid::RefreshRates(void) controlla i valori di asc-bid pari a zero.

È davvero una situazione possibile?

In generale - niente più osservazioni, il codice è abbastanza trasparente e chiaro.

 
George Merts:

Interessante - la funzione CBuyStopSellStopGrid::RefreshRates(void) controlla i valori di asc-bid pari a zero.

È davvero possibile questa situazione?

In generale, non ci sono altre osservazioni, il codice è abbastanza trasparente e chiaro.


Sì, questa è la vita e tutto è possibile qui. In generale, controllate che non ci siano valori zero inseriti a causa del tester (è successo circa un anno fa: all'avvio del primo t=poco il tester dava degli zeri).

Sto aggiungendo funzionalità a poco a poco. In OnTradeTransaction, se c'è una posizione ("DEAL_ENTRY_IN") rimuoviamo gli ordini pendenti e impostiamo di nuovo due ordini pendenti stop:

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//| 1.002:                                                           |
//|   OnTradeTransaction: if DEAL_ENTRY_IN delete all pending orders,|
//|   and, sets Buy stop and sell stop                               |
//+------------------------------------------------------------------+

BuyStopSellStopGrid 1.002

Finora abbiamo tali carenze:

  1. su ogni tick, si controlla l'ammontare delle posizioni e degli ordini pendenti
  2. Nessun controllo delle operazioni di trading (piazzamento dell'ordine pendente) - l'Expert Advisor non gestisce situazioni in cui l'ordine pendente non è stato piazzato
  3. Un insieme di posizioni senza posizioni - questa situazione non è gestita, cioè se abbiamo, diciamo, chiuso una posizione Buy, e poi si è aperta una posizione Sell...
 
Vladimir Karputov:

Sì, questa è la vita e tutto è possibile. In generale, il controllo dei valori zero è stato introdotto a causa del tester (c'è stato un caso circa un anno fa: all'avvio del primo t=poco, il tester dava degli zeri).

Sto aggiungendo funzionalità a poco a poco. In OnTradeTransaction, se c'è una posizione ("DEAL_ENTRY_IN") rimuoviamo gli ordini pendenti e impostiamo di nuovo due ordini pendenti stop:


Finora abbiamo tali carenze:

  1. su ogni tick, si controlla l'ammontare delle posizioni e degli ordini pendenti
  2. Nessun controllo delle operazioni di trading (piazzamento dell'ordine pendente) - l'Expert Advisor non gestisce situazioni in cui l'ordine pendente non è stato piazzato
  3. Un insieme di posizioni senza posizioni - per esempio, la situazione non è gestita, quando, diciamo, abbiamo aperto una posizione Buy, e poi una posizione Sell aperta...

L'algoritmo mostrato nello screenshot non funziona. Per far funzionare l'algoritmo, dovete fare quanto segue:

Quando viene ricevuto un segnale di acquisto, una griglia di ordini BUY STOP viene piazzata sopra il massimo della prima candela. Al di sotto del prezzo di chiusura, viene piazzato un ordine SELL STOP. Gli ordini dovrebbero essere chiusi non a causa del profitto o della perdita, ma a causa di un altro segnale. Con segnali più o meno sani, questo sistema funzionerà sempre.

Questa è solo una variante; si può fare tutto in modo diverso.

 
Ibragim Dzhanaev:

Se i segnali sono più o meno sani, un tale sistema funzionerà sempre.

Sarebbe meglio scrivere "se compri ai minimi e vendi ai massimi, sarai sempre in profitto".

Chi discute? Il problema è trovare "segnali ragionevoli".

 

Versione 1.003:

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//| 1.002:                                                           |
//|   OnTradeTransaction: if DEAL_ENTRY_IN delete all pending orders,|
//|   and, sets Buy stop and sell stop                               |
//| 1.003:                                                           |
//|   OnTradeTransaction: DEAL_ENTRY_IN                              |
//|      DEAL_TYPE_BUY => ClosePositions(POSITION_TYPE_SELL)         |
//|      DEAL_TYPE_SELL => ClosePositions(POSITION_TYPE_BUY)         |
//|   PlacesXXXX:                                                    |
//|      "RefreshRates()" is now inside the "PlacesXXXX"             |
//|   OnTradeTransaction:                                            |
//|      a "while" loop for "PlacesXXXX"                             |
//+------------------------------------------------------------------+

  • ora chiude TUTTE le posizioni opposte quando viene aperta una posizione.
  • l'acquisizione del prezzo corrente è stata spostata all'interno delle funzioni PlacesBuy e PlacesSell per proteggere da gap e slittamenti.
  • InOnTradeTransaction gli ordini pendenti sono piazzati in un ciclo while - per dire, stiamo battendo il server sul tempo :) - Non è la soluzione migliore, ma rimarrà per ora.

In realtà, ora possiamo pensare:

  1. Qual è il modo migliore per aumentare le posizioni (calcolo del volume dei lotti)?
  2. Cosa fare con le posizioni opposte...

 
George Merts:

Un modo migliore sarebbe scrivere "se compri ai minimi e vendi ai massimi, sarai sempre in profitto".

Chi discute? Il problema è trovare "segnali ragionevoli".


L'opzione più semplice e ovvia.


 
Posso unirmi a voi?
 

O almeno così va.


 
Artiom Morochin:
Posso unirmi a voi?

Fatto. Collegare il magazzino, aggiornare i file del progetto dal magazzino.