"Errore di PositionSelect() fluttuante - pagina 6

 
Karputov Vladimir:
I numeri sotto il tuo avatar non ti appartengono, quindi non hai potere su di essi (non puoi cambiarli a piacimento).

Non voglio cambiarlo io, per favore :)

Beh, se non puoi cambiarlo di 1000, almeno moltiplicalo per 100.

 
prostotrader:

Non voglio cambiarlo io, per favore :)

Beh, se non puoi moltiplicarlo per 1000, almeno moltiplicalo per 100.

Non si può. Non consentito. Impossibile.
 
Karputov Vladimir:

I numeri sotto il tuo avatar non ti appartengono, quindi non hai alcun controllo su di essi (non puoi cambiarli a piacimento).

Aggiunto.

Dimentica gli ordini prima della transazione con tipo TRADE_TRANSACTION_DEAL_ADD. Perché "dimenticare"? Perché è la cosa sbagliata da fare.

Lasciate perdere le transazioni, vi dico in confidenza che potete scoprire le transazioni dalla storia,

quando è arrivata la transazione storica. Non c'è un ordine, quindi si può vedere cosa ha "fatto" l'ordine.

Con questa semplice funzione:

double GetDealsVolume(const string a_symbol,const ulong a_ticket,const datetime start)
  {
   double volume=0;
   if(HistorySelect(start-180,TimeTradeServer()+180))
     {
      int deals=HistoryDealsTotal();
      if(deals>0)
        {
         for(int i=deals-1; i>=0; i--)
           {
            ulong deal_ticket=HistoryDealGetTicket(i);
            ulong ticket=ulong(HistoryDealGetInteger(deal_ticket,DEAL_ORDER));
            if(( ticket>0) && (ticket==a_ticket))
              {
               volume+=HistoryDealGetDouble(deal_ticket,DEAL_VOLUME);
              }
           }
        }
     }
   return( volume );
  } 
 
prostotrader:

Lasciate perdere le transazioni, vi dico in confidenza che potete scoprire le transazioni dalla storia,

quando è arrivata la transazione storica.

Con questa semplice funzione:

Sei disattento:

...
Dimenticate gli ordini fino a una transazione di tipo TRADE_TRANSACTION_DEAL_ADD. Perché "dimenticare"? Perché questo è SBAGLIATO.

Poi si può ricordare dei mandati.

 
Karputov Vladimir:

Sei disattento:

Poi si può ricordare dei mandati.

Grazie, cercherò di non dimenticare :)

E la x100?

Aggiunto:

Ma ecco il problema:

La Transazione viene prima, come faccio a sapere se è la prima?

O viceversa La transazione viene prima.

 
prostotrader:

Grazie, cercherò di non dimenticare :)

E il x 100?

L'ho già fatto:

 
prostotrader:

...

Aggiunto:

Ma ecco il problema:

La transazione Hist. viene prima, ma come faccio a sapere che è prima?

O viceversa La transazione viene prima.

Bisogna pensarci. Chiarire, è quando viene attivato un ordine con più di 1 volume?
 
Karputov Vladimir:
Ho bisogno di pensarci. Si prega di chiarire, è quando un ordine con un volume superiore a 1 viene attivato?
Non importa quale sia l'ordine o il volume
 

Se tutto funzionasse come ha dettoMQ Alexander, allora

non ci sarebbe stato alcun problema.

Così com'è, è impossibile dirlo... :(

Perché la transazione può essere già nella storia prima del Deals done: 1.0.

E secondo le parole di Aleksander, funzionerebbe così ( e sarebbe giusto!):

Quando arriva la transazione storica:

Volume iniziale - Volume attuale = Contratti fatti - Transazione già arrivata

Non mettere una bandiera e trattare con posizioni e ordini!

--------------------------------

Volume iniziale - Volume attuale != Operazioni fatte - L'operazione è la prossima

Dovresti impostare il flag, aspettare la transazione Deals e usare il flag per gestire le posizioni e gli ordini!

Questo è tutto!

 
Storia della transazione aggiornata prima di TRADE_TRANSACTION_DEAL_ADD
Non elaborato, Iniziato: 2016.08.15 18:43, #1537513
Motivazione: