Inizializza e reinizializza automaticamente l'EA da un file - pagina 7

 
Fry_Антон:

Capisco.

Specifiche: domani penserò a come prendere una posizione al volo su FORTS. In effetti, ciò di cui ho bisogno più di tutto è conoscere il prezzo di apertura reale di una posizione che si è liberata (riaperta al prezzo di compensazione).

La posizione su FORTS è guadagnata dalla somma dei trade su uno (o più ordini). Alla compensazione c'è un trade tecnico senza biglietto, dobbiamo capire come determinare il prezzo di POSITION_PRICE_OPEN che era prima della compensazione.

Può essere conservato. Decidere solo sulla durata della vita. Per esempio, per dimenticare se l'EA è fuori dal mercato (nessuna posizione).
 
Dmitry Fedoseev:

Ovviamente, se:

Bisogna continuare a scalpellare. Ma almeno non bloccare l'esperto. Forse meno sfacciatamente cesello, come il numero di errori aumenta, aumentare la pausa tra i tentativi. La soluzione più semplice è qualche tentativo e una pausa fino all'apertura della prossima barra.

E le sanzioni dello scambio per il superamento delle 2.000 transazioni? Diciamo che ho 50 EAs e sono passate 2.000 transazioni. Cosa devo fare dopo, ricevere sanzioni monetarie dallo scambio?
 
Fry_Антон:

Capisco.

Specifiche: domani penserò a come prendere una posizione al volo su FORTS. In effetti, ciò di cui ho bisogno più di tutto è conoscere il prezzo di apertura reale di una posizione che si è liberata (riaperta al prezzo di compensazione).

La posizione su FORTS è guadagnata dalla somma dei trade su uno (o più ordini). Alla compensazione c'è un trade tecnico senza biglietto, dobbiamo capire come determinare il prezzo di POSITION_PRICE_OPEN che era prima della compensazione.

//+------------------------------------------------------------------+
//| Expert Get position price function                               |
//+------------------------------------------------------------------+
double GetPositionPrice( const string aSymbol )
{
  double price_in = 0;
  double volume_in = 0;
  
  if ( PositionSelect( aSymbol ) )
  {
    ulong pos_id = ulong( PositionGetInteger( POSITION_IDENTIFIER ) );
    
    if ( pos_id > 0 )
    {
      if ( HistorySelectByPosition( pos_id ) )
      {
        int deals = HistoryDealsTotal();
      
        for( int i = 0; i < deals; i++ )
        {
          ulong deal_ticket = HistoryDealGetTicket( i );
          ulong order_ticket = ulong( HistoryDealGetInteger( deal_ticket, DEAL_ORDER ) );
        
          if ( order_ticket > 0 )
          {
            ENUM_DEAL_ENTRY deal_entry = ENUM_DEAL_ENTRY( HistoryDealGetInteger( deal_ticket, DEAL_ENTRY ) );
              
            if ( deal_entry == DEAL_ENTRY_IN )
            {
              double price = HistoryDealGetDouble( deal_ticket, DEAL_PRICE );
              double volume = HistoryDealGetDouble( deal_ticket, DEAL_VOLUME );
                                
              price_in += price * volume;
              volume_in += volume;  
            }
          }
        }
        if ( volume_in > 0 ) return( NormalizeDouble( price_in / volume_in, _Digits ) );
      }
      else
      {
        Print( "GetPositionPrice: Невозможно получить историю позиции по символу ", aSymbol );
      }
    }
    else
    {
      Print( "GetPositionPrice: Невозможно определить идентификатор позиции по символу ", aSymbol );
    }
  }
  return( 0 );
}
 
Михаил:

Grande! Lo imbullonerò domani.

Mi avete fatto risparmiare un sacco di tempo. Grazie.

 
Fry_Антон:

grande! Lo allegherò domani.

Mi avete fatto risparmiare un sacco di tempo. Grazie.

Memo:

Questa funzione è SOLO per gli scambi in entrata!

(cioè non c'è stata alcuna riduzione di posizione).

Se avete bisogno di entrambi, allora aggiungete alla funzioneDEAL_ENTRY_OUT

 
Михаил:

Memo:

Questa funzione è solo per gli scambi in entrata!

(cioè nessuna diminuzione della posizione)

Se avete bisogno di entrambi, allora aggiungete alla funzioneDEAL_ENTRY_OUT

che ho capito subito. È il principio stesso che è importante qui: è una ricerca per ID nella storia, ed è essenzialmente la risposta completa alla domanda di cui sopra.


Francamente, non capisco la logica degli sviluppatori, perché hanno deciso di progettare un accordo tecnico di compensazione in un modo così "goffo".

Sia gli oggetti grafici sui grafici, che le proprietà delle posizioni nella storia, e inoltre le proprietà di una posizione aperta (redditività) - tutto è fuorviante non solo per un semplice codice in un EA, ma per qualsiasi trader in generale.

 
kond777:
E che dire delle multe della Borsa per aver superato le 2.000 transazioni? Supponiamo che io abbia 50 EAs e che siano passate 2 000 transazioni. Cosa devo fare dopo, ricevere multe monetarie dallo scambio?

Non imparerete la risposta alla vostra domanda.

Per non ricevere multe, è necessario fermare il lavoro dell'esperto (tu ed io ne abbiamo discusso molto tempo fa).

Se il nostro programmatore di miracoli dice che è necessario fermarsi, ammette così di essere

ammettendo di essere ....., che non sa nulla di programmazione

esperti per il trading azionario....

 
Михаил:

Non imparerete la risposta alla vostra domanda.

Per non ricevere multe, è necessario fermare il lavoro dell'esperto (tu ed io ne abbiamo discusso molto tempo fa).

Se il nostro programmatore di miracoli dice che è necessario fermarsi, ammette così di essere

ammettendo di essere ....., che non sa nulla di programmazione

Expert Advisors per il trading azionario....

Secondo me,Dmitry Fedoseev dà l'impressione di una persona competente, credo che probabilmente sarà in grado di offrire una soluzione a questo problema.
 
Михаил:

Sì, perché stai consigliando a una persona ciò che è buono per MT4 ed è completamente "inutile" in MT5!

È ovvio dai tuoi messaggi che non hai idea di come funziona MT5.

E non sta a voi giudicare se il principio della programmazione esperta è vergognoso o no!

Non ti vedo affatto come un'autorità, ma come un ragazzo sfacciato e presuntuoso!

Sei geloso? E giustamente, è meglio essere un giovane cucciolo che un vecchio uccello del paradiso.
 
Алексей Тарабанов:
Geloso? Hai ragione - meglio essere un giovane cucciolo che un vecchio uccello del paradiso.
C'è più gas nella pozza...