Prezzo per pip - pagina 6

 
jjc:
Aggiungendo un chiarimento al "quasi sempre" di Gordon, non riesco a pensare immediatamente a uno strumento forex dove questo non sia vero, ma è raramente vero quando i broker offrono metalli, indici ecc. Per esempio, sul contratto dell'oro di Alpari, TICKSIZE è 0,05 (e Point è 0,01). Per quanto ne so, MarketInfo(Symbol(),MODE_POINT) = MathPow(10, -MarketInfo(Symbol(), MODE_DIGITS))

jjc, Grazie per la tua risposta:

Penso che sia perché usiamo il decimale come convenzione matematica nel calcolo e nella percezione dei numeri. Se invece usassimo l'esadecimale per esempio non avremmo la convenienza del punto finito in uno. Un esempio potrebbe essere la conversione di quanti metri sono 5 cm, noi li moltiplicheremmo semplicemente con il fattore di conversione di un centesimo. ( 5 cm * 0.01 --> 0.05 m ) -- percorrendo un conteggio completo di 10 [unità di cm] -- dieci volte. Ma se usiamo un esadecimale. Avremmo bisogno di attraversare un conteggio completo di 6 - 16 volte con un modulo di 4.

Quindi un Punto è un fattore di conversione decimale. Se la convenzione di mercato suggerisce che per esempio l'attuale rapporto di prezzo di GBPUSD è 1,3535 è solo perché noi/noi abbiamo ritenuto che il valore di conversione decimale al 5° posto dell'acquisto di 1 GBP con 1,3535 USD sia insignificante per l'economia di scambio. Ma se il commercio fosse più grande (in valore di metri forse) e frequente. Allora noi/voi lo inseguiremmo fino al centesimo meno significativo che il rapporto di prezzo dovrebbe essere. Come 1,3535665, per esempio.

Quindi sono d'accordo che Point sarà sempre = MathPow(10, -MarketInfo(Symbol(), MODE_DIGITS)) come lo equiparate voi.

EDIT : Scusate ragazzi, la prima bozza è passata. Era & ancora troppo ADD per postare. Spero che questo sia meglio...

 
1005phillip:

Incluso nel file rar allegato. Sono sicuro che avrete domande d'uso, sparate pure.

Phillip, non posso ringraziarti abbastanza! Questo è troppo fantastico! Ho bisogno di un po' di tempo per capirlo. Ma al primo sguardo i commenti sono tutti chiari e non ho problemi a capire anche il file excel. Questa è una preziosa aggiunta al mio arsenale. È molto generoso da parte tua condividere questo lavoro con la comunità Phillip. Grazie ancora!

Questo è corretto. Ma l'errore percentuale è semplicemente lo spread in punti diviso per il prezzo di domanda (~0,02%-0,05% a seconda della coppia di valute)...conta solo se si vuole tenere conto fino all'ultimo centesimo.

Molto interessante!

Come la tua domanda è attualmente scritta la risposta facile è sì - ogni cross senza USD soddisfa il tuo criterio. Ma penso che tu volessi fare una domanda diversa - cioè ho incontrato un broker che offre una coppia di valute incrociate e allo stesso tempo non offre la coppia di valute richiesta che contiene la contro valuta della coppia incrociata e la valuta di denominazione del conto?

La risposta a questa domanda è no, e per una buona ragione, perché un broker semplicemente non può. La ragione per cui un broker non può farlo è perché sono vincolati dalle stesse connessioni di prezzo fondamentali delle equazioni qui dettagliate... in altre parole hanno bisogno di accedere alle stesse informazioni di prezzo per calcolare e riportare le valutazioni della tua posizione cross-currency.

Per esempio, diciamo che hai un conto denominato in euro e compri 1 lotto di GBPUSD. La contro valuta in GBPUSD è l'USD. Quindi per calcolare il tuo profitto/perdita sulla tua posizione GBPUSD il tuo broker (e tu) devi anche conoscere il prezzo della EURUSD. (l'EUR è la valuta del tuo conto, il USD è la contro valuta del cross-pair in cui hai aperto una posizione)

Se il broker non ha EURUSD come coppia offerta, il terminale MT4 non può calcolare il profitto/perdita fluttuante della tua posizione su base tick-by-tick. Quindi non troverete mai un broker che vi offre la possibilità di scambiare una coppia incrociata (relativa alla denominazione del vostro conto) senza offrire anche la coppia di valute primaria che contiene la valuta del vostro conto.

Sì, la tua ultima interpretazione della mia domanda è quella corretta. Una cattiva formulazione da parte mia. Questo aggiungerà qualche chiarimento in più sulla caratteristica delle coppie di valute. Grazie...

cameo

 
gordon:
" Un 'Punto' (MODE_POINT) è la più piccola variazione di prezzo possibile", quindi ovviamente deve finire con un 1.

Sì, è una spiegazione un po' stupida. Ma stavo solo cercando di sottolineare che Point sarà caratteristicamente diverso con TICK_SIZE poiché TICK_SIZE non finirà sempre in 1. Broker lo ridimensionerà a cui vedono il suo valore adatto alla fluttuazione / valore economico.

"Come ho detto prima, anche se la documentazione dichiara "Tick size in punti", questo è ovviamente impreciso. È anche in termini di prezzo".

Non capisco la parte in grassetto Gordon... Se ti va di spiegare...

"MODE_TICKVALUE : Valore attuale della controvaluta in conversione al suo rapporto di base."

Questa definizione non è chiara... (forse l'inglese non è la tua lingua madre?).

Sì, è la mia seconda lingua. Anche se questo non ha dimostrato di essere un ostacolo quando si tratta di produrre stringhe di balbettii senza senso nel passato o nel futuro per quella materia :))))

Cercherò di spiegarlo nel prossimo post. Mi scuso perché ho poco tempo. Molte grazie come sempre Gordon!
 
cameofx:
"Come ho detto prima, anche se la documentazione dichiara "Tick size in punti", questo è ovviamente impreciso. È anche in termini di prezzo".

Non capisco la parte in grassetto Gordon... Se ti va di spiegare...

Diciamo che Punto = 0,00001. Se MODE_TICKSIZE fosse in punti, allora per esempio avremmo MarketInfo(Symbol(),MODE_TICKSIZE) che restituisce 1, che sarebbe interpretato come 1*Point=1*0.00001=0.00001. Ma non è quello che MarketInfo(Symbol(),MODE_TICKSIZE) restituisce, restituisce (per esempio) 0.00001, quindi restituisce un valore che rappresenta il prezzo e non i punti. La documentazione dichiara "Tick size in points", questo è ovviamente impreciso (probabilmente un errore nella traduzione dal russo).
 
SDC:

Ho letto quel thread prima del suo pieno di informazioni contraddittorie.

BarrowBoy - un cambiamento di offerta e/o richiesta

Rosh - un evento di "nuovo prezzo

kminler - ogni tick rappresenta un trade chiuso

puncher - un tick è un pip

Dopo aver letto altri thread e discussioni sui tick sono giunto alla conclusione che un tick non ha un valore specifico in quanto tutto ciò che contiene è una nuova offerta e una nuova richiesta, che potrebbe essere 1 pip diverso dall'ultimo tick, nessun pip diverso o diversi pip di differenza, quindi in sé il tick non porta alcuna differenza di prezzo, solo un nuovo prezzo.

Ma ora ho indagato su come calcolare il valore di un pip e mi sono imbattuto in MarketInfo MODE_TICKVALUE che sembra essere un valore statico impostato, questo di per sé contraddice ciò che la maggior parte delle persone sembrano dire su un tick, che trasmette semplicemente un cambiamento di prezzo, nessun importo specifico, quindi come può esserci una cosa come MODE_TICKVALUE non ha alcun senso a meno che la maggior parte delle persone si sbagli e 1 tick ha in realtà un valore specifico pari a 1 pip, il mio problema è la mancanza di un'adeguata documentazione, come si può scoprire cosa è giusto e cosa è sbagliato, i thread dei forum contengono alcune informazioni, molte delle quali basate su opinioni o supposizioni piuttosto che su fatti, che nella maggior parte delle circostanze non hanno importanza, ma quando si cerca di scrivere un programma basato su informazioni così sommarie e contraddittorie, la vita diventa molto difficile


Sì, questa è anche la mia preoccupazione.

Torno qui solo per seguire la mia ricerca, dovrò leggere di nuovo questo domani. Sto già avendo problemi di lettura a causa di troppo poco sonno e troppo tempo davanti al pc.

 

Wow, mi sono appena messo in pari con tutte le letture qui. Sono davvero esausto e non sono ancora sicuro di come affrontare il problema.

Quindi, dirò semplicemente, ora che sembra che stiamo comprendendo le mie preoccupazioni, l'offerta è ancora valida che vorrei un metodo per calcolare accuratamente il valore del movimento del prezzo da 1 dei valori più piccoli al successivo (aka da x.0001 a x.0002) in base a qualsiasi simbolo su cui l'EA può essere, dovrebbe calcolare anche la leva finanziaria coinvolta. (cioè se su un contratto di 100.000 e una leva di 400:1, potrei aspettarmi che EURUSD costi 10 o quello che è.


In cambio, ho 2 guru del trading manuale formula di gestione del denaro che posso applicare utilizzando la vostra funzione per ottenere il valore pip e creare 2 set di funzioni di gestione del denaro. Sto cercando anche altri metodi. L'idea che ho in mente è quella di creare un pacchetto di gestione del denaro contenente scelte basate su vari guru e l'utente può scegliere quello che funziona per lui.

Quindi sarei davvero grato se qualcuno potesse trovare una funzione che mi dia il valore del pip. Onestamente, sono sorpreso che non sia già una funzione standard nella MT4.

Se il punto è il valore di diciamo 1.1234 - 1.1233 e si può ottenere il valore monetario di questo risultato, allora questo è quello che sto cercando. Per me il termine punto qui vale quanto il termine pip.

Vorrei essere in grado di cambiare il valore della leva quindi questo dovrebbe essere un parametro.

Ok, ora sono in piedi da circa 53 ore, quindi ho bisogno di riposare un po'. Siamo stati occupati a martellare per le nostre nuove release e sono totalmente esausto.

 
LEHayes:

Quindi, dirò semplicemente, ora che sembra che stiamo comprendendo le mie preoccupazioni, l'offerta è ancora valida che vorrei un metodo per calcolare accuratamente il valore del movimento di prezzo da 1 dei valori più piccoli al successivo (aka da x.0001 a x.0002) in base a quale simbolo l'EA può essere su

Bene, riassumendo in parte quanto detto in 6 pagine, il più piccolo movimento di prezzo possibile è dato da MODE_TICKSIZE, e il suo valore in denaro per lotto intero è dato da MODE_TICKVALUE. Con tre avvertenze:

  • MODE_TICKSIZE e MODE_TICKVALUE possono variare tra i broker a seconda del numero di cifre decimali utilizzate. Per esempio, Alpari (5DP) riporta TS come 0.00001 e TV come 1.00 su EURUSD. FXDD riporta TS come 0.0001, e TV come 10.00. I tentativi di standardizzare MODE_TICKSIZE tra i broker sono una questione separata, ad esempio come discusso in https://www.mql5.com/en/forum/124692
  • MODE_TICKVALUE varia nel tempo se la valuta di quotazione del simbolo è diversa dalla vostra valuta di deposito (ad es. su un conto USD EURUSD ha un TICKVALUE fisso ma USDJPY è variabile).
  • Cloudbreaker ha registrato casi di TICKSIZE che varia (ad esempio TICKSIZE riportato come 0,0002 e 0,0001 in chiamate successive, con corrispondente variazione di TICKVALUE). Non l'ho mai visto personalmente, attraverso 15 diversi broker.
 
gordon:
Diciamo che Point = 0,00001. Se MODE_TICKSIZE è in punti, allora per esempio possiamo avere MarketInfo(Symbol(),MODE_TICKSIZE) che restituisce 1, che sarebbe interpretato come 1*Point=1*0.00001=0.00001. Ma non è quello che MarketInfo(Symbol(),MODE_TICKSIZE) restituisce, restituisce (per esempio) 0.00001, quindi restituisce un valore che rappresenta il prezzo e non i punti. Questo è ovviamente un errore nella documentazione (probabilmente un errore nella traduzione dal russo).
Mi permetto di dissentire Gordon, MODE_TICKSIZE è in punti - Point(s) per essere precisi. MODE_TICKSIZE sarà sempre un multiplo X di Point. Che sia 1, 2, 5, 35 ecc. Point IMHO è un tipo di doppio fattore di conversione per portarci all'ultima posizione decimale significativa del rapporto di prezzo. Se un broker ritiene opportuno offrire la sesta posizione decimale come affare da offrire al cliente, allora farà Punto come 0,000001 e Cifre = 6.
Le cifre in questo caso rappresenteranno il punto in numeri interi.
 
LEHayes:

Quindi, dirò semplicemente, ora che sembra che stiamo comprendendo le mie preoccupazioni, l'offerta è ancora valida che vorrei un metodo per calcolare accuratamente il valore del movimento del prezzo da 1 dei valori più piccoli al successivo (aka da x.0001 a x.0002) in base a qualsiasi simbolo l'EA possa essere su, dovrebbe calcolare anche la leva finanziaria coinvolta. (cioè se su un contratto di 100.000 e una leva di 400:1, potrei aspettarmi che EURUSD costi 10 o quello che è.

Controlla i file di inclusione contenuti nel file rar che ho allegato a pagina 5...fa entrambe queste cose, a meno che io non stia fraintendendo la tua domanda.

edit: in particolare i seguenti frammenti di codice.

Per tickvalue usando il file include intitolato "Analyze Currency Symbol 2010.06.07.mqh" dovresti

1. chiamare la funzione int SymbolType()

int CalculatedSymbolType=SymbolType();

2. chiamare la funzione CounterPairForCross()

string CalculatedCounterPairForCross=CounterPairForCross();


3. poi si calcola il tickvalue al prezzo corrente di mercato per il simbolo:

   switch(CalculatedSymbolType) // Determine the tickvalue for the financial instrument based on the instrument's SymbolType (major, cross, etc)
      {
      case 1   :  Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE)/MarketInfo(Symbol(),MODE_BID),6)," (Tick value in the deposit currency - base)"); break;
      case 2   :  Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE),6)," (Tick value in the deposit currency - counter)"); break;
      case 3   :  Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE)/MarketInfo(CalculatedCounterPairForCross,MODE_BID),6)," (Tick value in the deposit currency - ",AccountCurrency()," is Base to Counter)"); break;
      case 4   :  Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE)/MarketInfo(CalculatedCounterPairForCross,MODE_BID),6)," (Tick value in the deposit currency - ",AccountCurrency()," is Base to Counter)"); break;
      case 5   :  Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(CalculatedCounterPairForCross,MODE_BID)*MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE),6)," (Tick value in the deposit currency - ",AccountCurrency()," is Counter to Counter)"); break;
      default  :  Print("Error encountered in the SWITCH routine for calculating tickvalue of financial instrument ",Symbol()); // The expression did not generate a case value
      }


Per la leva utilizzando il file include intitolato "Analyze Currency Symbol 2010.06.07.mqh" si dovrebbe:

1. chiamare la funzione int SymbolType()
int CalculatedSymbolType=SymbolType();

2. chiamare la funzione BasePairForCross()

string CalculatedBasePairForCross=BasePairForCross();


3. poi si calcola la leva specifica del simbolo al prezzo di mercato corrente per il simbolo chiamando SymbolLeverage():

int   CalculatedLeverage=SymbolLeverage();   // Leverage for USDJPY is set to 100:1
Print("Leverage for ",Symbol()," is set at ",CalculatedLeverage,":1");
 
cameofx:
Mi permetto di dissentire Gordon, MODE_TICKSIZE è in punti -- Point(s) per essere precisi. MODE_TICKSIZE sarà sempre un multiplo X di Point. Che sia 1, 2, 5, 35 ecc. [...]
Sembra una questione di semantica... La convenzione comune afferma che quando diciamo che un 'valore è in x', intendiamo che x è l''unità' usata. In questo caso Point non è l'unità usata, quindi MODE_TICKSIZE non è in punti. Sono d'accordo che è un multiplo di Punto, ma questo è solo perché Punto è la più piccola variazione di prezzo possibile, quindi per definizione deve essere un multiplo di Punto.
Motivazione: