Regole della struttura. Imparare a strutturare i programmi, esplorare le possibilità, gli errori, le soluzioni, ecc. - pagina 16

 
Come ci si può aspettare, ognuno ha la propria struttura e comprensione di come le cose dovrebbero essere. ))
 
tol64:
Come ci si può aspettare, ognuno ha la propria struttura e comprensione di come le cose dovrebbero essere. ))
Esattamente, è per questo che propongo di rinunciare a questa discussione, dato che non arriveremo comunque a nessun consenso. Suggerisco di tornare a discutere i principi generali della programmazione di grandi progetti.
 
C-4:
No, no e ancora no!!!!!!!!!!!!!!!! Secondo questa logica, una semplice strategia flip su una media mobile è anche MM. Perché, era +1 contratto ed è diventato -1.

:)

Il mio collega ha cercato di spiegarti come l'EA può essere convenientemente strutturato (i nomi dei moduli sono convenzionali, ovviamente). Invece di giocare con la terminologia (che non è importante), prova a verificare questa divisione strutturale. È abbastanza conveniente e produttivo.

Le frecce mostrano il movimento delle informazioni:


 
C-4:
Esattamente, quindi suggerisco di smettere di discutere su questo, perché non arriveremo comunque a un consenso. Suggerisco di tornare a discutere i principi generali della programmazione di grandi progetti.
Sembra che uno di questi principi sia in discussione, quando viene applicato ai progetti di trading (alla logica di base della loro creazione).
 
MetaDriver:

...

Kartinko. Le frecce mostrano il movimento delle informazioni:

Questo è un modo molto più chiaro di guardare i pensieri. Tutto è chiaro anche senza parole. Altrimenti, questi infiniti bla-bla-bla sono molto difficili da digerire a volte. )) E dopo lo schema si possono fare domande qualificanti. Non li ho ancora. ))

 
MetaDriver:

:)

Il mio collega ha cercato di spiegarti come l'EA può essere convenientemente strutturato (i nomi dei moduli sono convenzionali, ovviamente). Invece di giocare con la terminologia (che non è importante), prova a verificare questa divisione strutturale. È abbastanza conveniente e produttivo.

Le frecce mostrano il movimento delle informazioni:

Sì, lo vedo. Solo la complessità non è data da nessuna parte, ma delegata al correttore di raccomandazioni e al driver del mercato. In questo schema, il correttore deve scavare nella storia commerciale del TS e capire per lui qual è il suo stato reale. Il driver del mercato deve ancora identificare correttamente la posizione attuale della strategia e correggerla, e nel netting questo non è facile.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Позиционирование графика - Документация по MQL5
 
tol64:

Questo è un modo molto più chiaro di pensare alle cose. Tutto è chiaro anche senza parole. Altrimenti, questi infiniti blah-blah-blah sono molto difficili da digerire a volte. )) E dopo lo schema si possono fare domande qualificanti. Non li ho ancora. ))

Ecco la risposta se devi fare un disegno per capire il compito :)

MetaDriver:

:)

(I nomi dei moduli sono ovviamente relativi.) Invece di giocare con la terminologia (che non è importante), provate a controllare questa divisione strutturale. È abbastanza conveniente ed efficiente.

Le frecce mostrano il movimento delle informazioni:


Dov'è la rete a strascico? Immagino che sia nel blocco MM, perché ha bisogno di un previsore direzionale.

O è ancora nell'autista del mercato? perché avete bisogno della posa attuale per pescare.

Aggiungerei un predittore di volatilità e un altro blocco per correggere gli stop protettivi, cioè gli stop protettivi perché (imho) l'uscita da TP o SL è forza maggiore per un TS normale.

 
Urain:

Questa è la risposta alla necessità di disegnare un'immagine per capire il compito :)

Dov'è la rete a strascico? Credo che sia nel blocco MM, no?

o nel driver del mercato? Dopo tutto, la posizione attuale è necessaria per la pesca a strascico.

Aggiungerei un predittore di volatilità e un altro blocco per correggere gli stop protettivi, esattamente protettivi perché (imho) l'uscita da TP o SL è forza maggiore per un TS normale.

E poi qualche altro blocco e la strategia inizierà a sbattere... Se all'inizio ci sono domande assolutamente ragionevoli in quale blocco descrivere una parte della strategia e quale in un altro, allora significa che lo schema non è univoco, e questo porta a quali problemi noti.
 

Ora che abbiamo iniziato a disegnare schemi, ecco il mio migliorato. Spero che sia più chiaro del precedente:

BENEFICI

  • Ci sono solo due moduli.
  • I collegamenti sono chiaramente definiti e non ambigui
  • Qualsiasi classe che descrive 4 metodi può essere una strategia di trading
  • La descrizione di tutte le regole è sempre memorizzata in un posto: la classe della strategia di trading. Non c'è bisogno di cercare nell'intero progetto qualche "modulo di volatilità".
  • Il numero di stati della strategia è una costante. In base a nessuna regola della ST, non può essere più grande. Non ci possono essere moduli aggiuntivi e sono semplicemente inutili
  • Tutte le entità comuni possono e devono essere descritte nella classe base del controllo*.

*Così, la regola "Esci alla fine della sessione di trading", che è universale per tutte le strategie, può essere descritta nella classe base. Se questa regola è impostata, la classe base chiamerà il metodo di supporto della chiusura della posizione alla fine della giornata invece di chiamarlo di nuovo. E la posizione sarà chiusa al momento giusto, anche se questo non è specificato nelle regole della strategia di base.
 
C-4:

Sì, lo vedo. Solo la complessità non è data da nessuna parte, ma delegata al regolatore di raccomandazione e al guidatore del mercato.

Va bene, l'obiettivo non era eliminare le difficoltà oggettive, ma non crearne di nuove.


Secondo questo schema, il perito dovrebbe scavare nella storia commerciale della ST e capire per essa qual è il suo stato reale.

Credo che abbiamo già scoperto che TS non ha uno stato (memoria) e il correttore non deve nemmeno scavare la storia. È stato inserito di proposito nello schema su vostra richiesta - faccio perfettamente bene senza... ))


Il driver del mercato deve ancora identificare correttamente la posizione corrente della strategia e regolarla, e nel netting, questo non è facile.

:)

Devo crederti sulla parola?

double CMarketDriver::GetCurrentPos(string Sym)
  {
   if(!PosInfo.Select(Sym)) return 0; // DBL_MIN;
   double v=PosInfo.Volume();
   return(PosInfo.PositionType()==POSITION_TYPE_SELL) ? -v : v;
  }
bool CMarketDriver::Synhronize(const SymbolPos  &sp,int  &Err)
  {
   Err=0;
   bool res=true;
     {
      SymInfo.Name(sp.Sym);
      SymInfo.Refresh();
      double fp= TranslateLots(sp.Pos);  // Приводит рекомендованную в процентах от депо позу к рыночным лотам для данного инструмента
      double cp=GetCurrentPos(sp.Sym);
      double pos=fp-cp;   // вычисляет разницу текущей и рекомендованной позы
      if(pos>0.000001)
         res=Trade.Buy(NolrmalizeLots(pos),sp.Sym);  // "обналичивает разницу"
      if(pos<-0.000001)
         res=Trade.Sell(NolrmalizeLots(pos),sp.Sym);  // "обналичивает разницу"   
     }
   return res;
  }
Motivazione: