Torna al Blog

Cos'è un Pip nel Forex? Guida dello Sviluppatore a Pip, Pipette e Matematica FX (2026)

V
Vlado Grigirov
May 10, 2026
Currency API Exchange Rates Forex Education Developer Guide Pips Finexly

Cos'è un Pip nel Forex? Guida dello Sviluppatore a Pip, Pipette e Matematica FX (2026)

Se stai costruendo un bot di trading, una calcolatrice di dimensione della posizione, una dashboard di rischio o qualsiasi prodotto consapevole del FX, ti imbatterai presto nella domanda: cos'è un pip nel forex e come ne calcolo il valore in codice? Sbagliarlo significa P&L distorto, stop-loss che scattano ai livelli sbagliati e utenti che non avranno pazienza.

Questa guida spiega pip, pipette e la formula completa del valore del pip dal punto di vista di uno sviluppatore — con esempi risolti e codice pronto da copiare in JavaScript, Python, PHP e cURL. Alla fine avrai una calcolatrice di pip funzionante che recupera tassi in tempo reale dalla documentazione dell'API Finexly e gestisce ogni caso limite che i manuali ignorano.

Cos'è un Pip? La Definizione Rapida

Un pip (abbreviazione di "percentage in point" o "price interest point") è il più piccolo incremento di prezzo standardizzato per una coppia di valute. Per la maggior parte delle coppie, è la quarta cifra decimale della quotazione — un movimento di 0.0001. Per le coppie quotate in yen giapponesi, è la seconda cifra decimale — un movimento di 0.01.

Esempi concreti:

  • EUR/USD passa da 1.0850 a 1.08511 pip (variazione di 0.0001 USD per EUR).
  • GBP/USD passa da 1.2640 a 1.265515 pip.
  • USD/JPY passa da 154.20 a 154.3010 pip (variazione di 0.10 JPY per USD).
  • AUD/JPY passa da 99.45 a 99.40−5 pip.

Il pip è l'unità universale del mercato FX per "di quanto si è mosso il prezzo?" — molto più utile dei decimali grezzi perché normalizza la conversazione tra coppie con livelli di prezzo assoluti molto diversi.

Pip vs Pipette vs Point

Broker e fornitori di dati moderni quotano i tassi con una cifra decimale oltre il pip standard. Quella cifra extra è chiamata pipette, pip frazionario o semplicemente point. Una pipette equivale a un decimo di un pip.

CoppiaDimensione pipDimensione pipetteQuotazione esempio
EUR/USD0.00010.000011.08507
GBP/USD0.00010.000011.26482
USD/JPY0.010.001154.215
EUR/JPY0.010.001167.482
Quando un broker mostra EUR/USD come 1.08507, il 7 finale è la pipette — di solito reso più piccolo o in apice su una piattaforma di trading. Come sviluppatore, tratta questa distinzione con cura: se calcoli differenze di prezzo usando aritmetica delle stringhe su quotazioni che includono pipette, riporterai i movimenti in pip al ribasso di un fattore 10 a meno che tu non scali correttamente.

Una regola sicura: normalizza sempre a un tipo numerico, poi moltiplica o dividi per la costante della dimensione del pip per quella coppia.

Perché le Dimensioni dei Pip Differiscono tra le Coppie

Il pip a due decimali per le coppie JPY non è una scelta arbitraria. Lo yen giapponese ha un piccolo valore unitario rispetto alla maggior parte delle valute di riserva — circa 1 USD ≈ 154 JPY nel 2026 — quindi quotare a quattro decimali creerebbe movimenti di prezzo cosmeticamente minuscoli e scale di prezzo illeggibili sugli schermi di trading. Troncare a due decimali mantiene l'azione del prezzo visivamente proporzionale alle altre coppie principali.

La stessa logica si applica a una manciata di altre valute di quotazione "a basso valore unitario" (won coreano, fiorino ungherese, ecc.) — spesso quotate con dimensioni pip di 0.01 o 1. Quando costruisci un sistema multi-coppia, non codificare mai 0.0001 come costante di dimensione pip. Cercala sempre per coppia.

Una regola di rilevamento pragmatica che funziona per la maggior parte delle coppie:

function getPipSize(pair) {
  // pair example: "EURUSD" or "EUR/USD"
  const quote = pair.replace("/", "").slice(3, 6).toUpperCase();
  const twoDecimalQuotes = new Set(["JPY", "HUF", "KRW"]);
  return twoDecimalQuotes.has(quote) ? 0.01 : 0.0001;
}

console.log(getPipSize("EURUSD")); // 0.0001
console.log(getPipSize("USD/JPY")); // 0.01
console.log(getPipSize("EURHUF")); // 0.01

Per un sistema di produzione vorrai una tabella completa di dimensioni pip indicizzata sui codici ISO 4217 — vedi la nostra guida completa dello sviluppatore ai codici valuta ISO 4217 per l'elenco completo.

La Formula del Valore del Pip

La domanda centrale per qualsiasi calcolo di P&L: per una posizione di N unità della valuta base, di quanto cambia il saldo del mio conto quando la coppia si muove di un pip?

La formula generale:

pip_value_in_quote_currency = pip_size × position_size
pip_value_in_account_currency = pip_value_in_quote_currency × (quote_to_account_rate)

Tre casi, a seconda di come la valuta del tuo conto si rapporta alla coppia che stai negoziando.

Caso 1: Valuta del Conto = Valuta Quotata

Il caso più semplice. Se negozi EUR/USD su un conto USD, ogni pip vale un importo fisso in dollari senza ulteriore conversione.

pip_value = pip_size × position_size

Per 100,000 unità (un lotto standard) di EUR/USD su un conto USD:

0.0001 × 100,000 = 10 USD per pip

Questo è il classico "$10 per pip per lotto standard" che si sente citato ovunque — vale solo quando la valuta quotata coincide con la valuta del conto.

Caso 2: Valuta del Conto = Valuta Base

Se negozi USD/CHF su un conto USD, il movimento del pip è denominato in CHF e deve essere riconvertito in USD usando il tasso ask corrente della coppia.

pip_value_in_quote = pip_size × position_size
pip_value_in_account = pip_value_in_quote / current_rate

Per 100,000 unità di USD/CHF quando USD/CHF = 0.9050:

0.0001 × 100,000 = 10 CHF
10 CHF / 0.9050 = 11.05 USD per pip

Caso 3: Coppia Cross (Nessun Lato è la Valuta del Conto)

Il caso più complicato. Negozi EUR/JPY su un conto USD. Il movimento del pip è in JPY, e per esprimerlo in USD serve un tasso di conversione tra JPY e USD.

pip_value_in_quote = pip_size × position_size
pip_value_in_account = pip_value_in_quote × (account_per_quote_rate)

Per 100,000 unità di EUR/JPY quando USD/JPY = 154.20:

0.01 × 100,000 = 1,000 JPY
1,000 JPY / 154.20 = 6.49 USD per pip

Nota che abbiamo usato il tasso USD/JPY, non il tasso EUR/JPY, perché stiamo convertendo da JPY a USD, non da EUR a niente.

Costruire una Calcolatrice di Pip con l'API Finexly

Colleghiamo la formula sopra a una vera API di tassi di cambio in tempo reale, così la calcolatrice resta accurata mentre il mercato si muove. Iscriviti su Finexly per una chiave API gratuita — 1,000 richieste/mese senza carta richiesta, più che sufficienti per una calcolatrice come questa. Il riferimento completo delle richieste è nella documentazione dell'API Finexly.

JavaScript (Node.js)

const FINEXLY_API_KEY = process.env.FINEXLY_API_KEY;
const BASE_URL = "https://finexly.com/api";

// Two-decimal-pip currencies. Extend as needed.
const TWO_DECIMAL_PIP_QUOTES = new Set(["JPY", "HUF", "KRW"]);

function pipSize(quoteCcy) {
  return TWO_DECIMAL_PIP_QUOTES.has(quoteCcy) ? 0.01 : 0.0001;
}

async function getRate(base, quote) {
  const res = await fetch(
    `${BASE_URL}/latest?base=${base}&symbols=${quote}&api_key=${FINEXLY_API_KEY}`
  );
  const json = await res.json();
  return json.rates[quote];
}

async function calcPipValue({ pair, positionSize, accountCcy }) {
  const base = pair.slice(0, 3).toUpperCase();
  const quote = pair.slice(3, 6).toUpperCase();
  const pip = pipSize(quote);
  const pipValueInQuote = pip * positionSize;

  if (accountCcy === quote) {
    return pipValueInQuote;
  }
  if (accountCcy === base) {
    const rate = await getRate(base, quote);
    return pipValueInQuote / rate;
  }
  // Cross: convert quote -> account via account/quote rate
  const rate = await getRate(accountCcy, quote);
  return pipValueInQuote / rate;
}

// Example: 100,000 units of EUR/JPY on a USD account
calcPipValue({
  pair: "EURJPY",
  positionSize: 100_000,
  accountCcy: "USD",
}).then((v) => console.log(`Pip value: ${v.toFixed(2)} USD`));

Python

import os
import requests

FINEXLY_API_KEY = os.environ["FINEXLY_API_KEY"]
BASE_URL = "https://finexly.com/api"
TWO_DECIMAL_PIP_QUOTES = {"JPY", "HUF", "KRW"}

def pip_size(quote_ccy: str) -> float:
    return 0.01 if quote_ccy in TWO_DECIMAL_PIP_QUOTES else 0.0001

def get_rate(base: str, quote: str) -> float:
    r = requests.get(
        f"{BASE_URL}/latest",
        params={"base": base, "symbols": quote, "api_key": FINEXLY_API_KEY},
        timeout=10,
    )
    r.raise_for_status()
    return r.json()["rates"][quote]

def calc_pip_value(pair: str, position_size: float, account_ccy: str) -> float:
    base, quote = pair[:3].upper(), pair[3:6].upper()
    pip = pip_size(quote)
    pip_in_quote = pip * position_size

    if account_ccy == quote:
        return pip_in_quote
    if account_ccy == base:
        return pip_in_quote / get_rate(base, quote)
    # Cross
    return pip_in_quote / get_rate(account_ccy, quote)

if __name__ == "__main__":
    value = calc_pip_value("EURJPY", 100_000, "USD")
    print(f"Pip value: {value:.2f} USD")

PHP

<?php
$apiKey = getenv('FINEXLY_API_KEY');
$baseUrl = 'https://finexly.com/api';
$twoDecimalPipQuotes = ['JPY', 'HUF', 'KRW'];

function pipSize(string $quoteCcy): float {
    global $twoDecimalPipQuotes;
    return in_array($quoteCcy, $twoDecimalPipQuotes, true) ? 0.01 : 0.0001;
}

function getRate(string $base, string $quote): float {
    global $apiKey, $baseUrl;
    $url = "$baseUrl/latest?base=$base&symbols=$quote&api_key=$apiKey";
    $body = file_get_contents($url);
    $data = json_decode($body, true);
    return $data['rates'][$quote];
}

function calcPipValue(string $pair, float $positionSize, string $accountCcy): float {
    $base = strtoupper(substr($pair, 0, 3));
    $quote = strtoupper(substr($pair, 3, 3));
    $pipInQuote = pipSize($quote) * $positionSize;

    if ($accountCcy === $quote) return $pipInQuote;
    if ($accountCcy === $base)  return $pipInQuote / getRate($base, $quote);
    return $pipInQuote / getRate($accountCcy, $quote);
}

echo number_format(calcPipValue('EURJPY', 100000, 'USD'), 2) . " USD\n";

cURL

Se hai bisogno solo del tasso grezzo da collegare al tuo calcolo del pip:

curl "https://finexly.com/api/latest?base=USD&symbols=JPY&api_key=YOUR_KEY"
# {"base":"USD","rates":{"JPY":154.20},"timestamp":1746...}

Quel singolo tasso è sufficiente per convertire un movimento pip JPY in USD usando la formula sopra.

Trabocchetti Comuni nella Matematica dei Pip che Cadono gli Sviluppatori

I pip sembrano semplici. I bug sono sottili. Cinque cose da osservare:

1. Drift in virgola mobile nell'aritmetica dei pip. 0.1 + 0.2 !== 0.3 in JavaScript, e la stessa famiglia di problemi ti morde quando sommi P&L in pip su molte operazioni. Per qualsiasi cosa che raggiunge la produzione — specialmente i calcoli finanziari — usa contatori interi di pip internamente (moltiplica i prezzi per 10_000 per coppie non-JPY e per 100 per coppie JPY) o una libreria decimale come decimal.js o decimal.Decimal di Python.

2. Codificare 0.0001 come dimensione pip. Questo rompe ogni coppia JPY nel momento in cui un utente ne negozia una. Cerca sempre la dimensione pip da una tabella per coppia.

3. Confondere pip con pipette nel confronto dei prezzi. Una quotazione EUR/USD a 5 decimali come 1.08502 sembra 1.08502 pip di movimento da 1.08501, ma è solo 1 pipette = 0.1 pip. Normalizza in float e dividi per la dimensione del pip.

4. Usare tassi obsoleti per la conversione di valuta del conto nel Caso 3. Un calcolo del valore pip per una posizione aperta dovrebbe usare il tasso corrente, non il tasso al momento dell'apertura della posizione. Se metti in cache i tassi, imposta TTL abbastanza brevi affinché la conversione resti accurata — vedi migliori pratiche di caching e gestione errori per le API valutarie per pattern testati in produzione.

5. Dimenticare l'asimmetria bid/ask. I broker convertono il P&L usando bid per chiudere lunghi e ask per chiudere corti. Per una calcolatrice rivolta all'utente finale che ha bisogno solo di una stima, un tasso medio va bene. Per un sistema di esecuzione, usa il lato appropriato.

Per uno sguardo più approfondito alla divisione bid/ask, vedi il nostro articolo tasso spot vs tasso forward, e per le conversioni cross-coppia tassi di cambio incrociati spiegati.

Valore Pip a Colpo d'Occhio: Coppie Comuni

Per un conto denominato in USD che opera con un lotto standard (100,000 unità), ecco i valori pip tipici a tassi indicativi di maggio 2026. Trattali come un controllo di sanità mentale, non come dogma — preleva tassi in tempo reale dal convertitore di valuta Finexly o dall'API per qualsiasi cosa tocchi un conto reale.

CoppiaDimensione pipValore pip (1 lotto, conto USD)
EUR/USD0.000110.00 USD
GBP/USD0.000110.00 USD
USD/CHF0.0001~11.05 USD
USD/JPY0.01~6.49 USD
EUR/JPY0.01~6.49 USD
AUD/USD0.000110.00 USD
EUR/GBP0.0001~12.61 USD
Due pattern vale la pena memorizzare come sviluppatore che lavora con FX: le coppie quotate in USD valgono sempre esattamente $10 per pip per lotto standard, e le coppie quotate in JPY si aggirano intorno alla metà di quello, derivando con USD/JPY.

Domande Frequenti

Cos'è un pip nel forex in termini semplici? Un pip è il più piccolo movimento standardizzato nel prezzo di una coppia di valute — tipicamente la quarta cifra decimale per la maggior parte delle coppie (0.0001) e la seconda cifra decimale per le coppie in yen (0.01). È l'unità universale del mercato FX per misurare il movimento di prezzo.

Come calcolo il valore del pip in codice? Moltiplica la dimensione del pip per la dimensione della posizione per ottenere il valore del pip nella valuta quotata, poi converti nella valuta del tuo conto usando il tasso di cambio corrente. I tre casi (quotata = conto, base = conto, cross) sono mostrati negli esempi JavaScript, Python e PHP sopra.

Qual è la differenza tra un pip e una pipette? Una pipette è un decimo di un pip — la cifra frazionaria che alcuni broker e feed di dati aggiungono per spread più stretti. Se un pip su EUR/USD è 0.0001, una pipette è 0.00001.

Perché un pip equivale a circa $10 su EUR/USD? Perché un lotto standard è 100,000 unità e la dimensione del pip per coppie non-JPY è 0.0001. 100,000 × 0.0001 = 10 unità della valuta quotata. Quando la valuta quotata è USD, sono direttamente $10.

Mi serve un'API a pagamento per costruire una calcolatrice di pip? No. Il piano gratuito di Finexly ti dà 1,000 richieste al mese e copre 170+ valute — sufficiente per una calcolatrice di pip personale o un progetto a basso traffico. Per volumi maggiori, vedi i nostri piani tariffari.

Le dimensioni dei pip sono diverse sulle coppie crypto? Le coppie crypto non seguono la convenzione standard dei pip FX. BTC/USD spesso quota a 2 o 4 decimali a seconda del venue, e "1 pip" è definito dal venue. Per P&L crypto puro, lavora in differenze di prezzo assolute piuttosto che in pip.

Pronto a Costruirla?

Ora hai la formula, tre esempi di codice funzionanti e una lista dei bug che mordono la maggior parte delle persone. L'ultimo pezzo sono tassi in tempo reale che non derivano a metà calcolo.

Ottieni la tua chiave API Finexly gratuita — nessuna carta di credito richiesta. Inizia con 1,000 richieste gratuite al mese, 170+ valute, latenza sub-50 ms, e fai upgrade solo quando ti serve. La tua calcolatrice di pip merita tassi accurati quanto la matematica dietro.

Vlado Grigirov

Senior Currency Markets Analyst & Financial Strategist

Vlado Grigirov is a senior currency markets analyst and financial strategist with over 14 years of experience in foreign exchange markets, cross-border finance, and currency risk management. He has wo...

View full profile →

Condividi questo articolo