Market Profile & Order Flow

Aukciós piaci struktúra, profilformák, footprint jelek és pozícióméretezés

Az aukciós piac alaptörvénye: Az ár egy reklám, amely felkelti az érdeklődést. Az idő szabályozza a lehetőséget. A volumen igazolja az elfogadottságot.

Hogyan épül fel a profil?

  • Időblokkok (TPO Periods): A kereskedési napot 30 perces szakaszokra osztjuk, és az ábécé betűivel jelöljük. 'A' periódus (09:30–10:00 EST), 'B' periódus (10:00–10:30 EST), és így tovább.
  • TPO Print: Ha a piac az adott félórában akár egyetlen kötést is végrehajt egy árszinten, oda kerül a periódus betűje.
  • Collapsed Profile: Amikor a nap végén a betűket balra rendezzük, kirajzolódik a klasszikus Gauss-haranggörbe, megmutatva a vásári egyensúlyt.

Kulcsfontosságú Strukturális Fogalmak

  • Initial Balance (IB): Az 'A' és 'B' periódus (a nap első 60 perce). Ez jelöli ki az intézményi aukció kezdeti referenciakeretét (IB High és IB Low).
  • Point of Control (POC): Az az árszint, ahol a piac a legtöbb időt töltötte (a profil leghosszabb sora). Ez a piac szerint az aznapi legtisztességesebb ár (Fair Value).
  • Value Area (VA): A napi TPO blokkok megközelítőleg 68%-át (1 szórás) lefedő zóna. Felső határa a VAH, alsó határa a VAL.
Single Print Selling Tail (Agresszív Elutasítás / Rejection) VAH (Value Area High - 5612.00) POC (Point of Control - 5598.00) VAL (Value Area Low - 5585.00) A A B A B C A B C D E A B C D E F G A B C D E F G H I J K B C D E F G H I C D E F G C D E D E D Buying Tail (Agresszív Vételi Elutasítás)
1. Ábra: A TPO profil elvi anatómiája az értékzónákkal és az elutasító végekkel (Tails).

TPO vs. Volume Profile: Mi a kritikus különbség?

Tulajdonság TPO (Market Profile) Volume Profile
Mértékegység Idő: Hány 30 perces periódusban fogadták el az árat. Mennyiség: Hány határidős kontraktus fordult meg ott.
Fókusz Piaci struktúra, aukciós szakaszok, rotációs határok. Likviditási szintek, valódi tőkeelköteleződés és abszorpció.
Eltérés haszna Ha az ár sok időt tölt egy szinten (széles TPO), de alacsony a forgalom (vékony Volume Profile), az gyenge intézményi részvételt jelez, ami törékeny szintet eredményez.
Legmagasabb Meggyőződés

1. Open-Drive (OD)

A piac közvetlenül a nyitóáron nyit, és azonnal, agresszíven megindul egy irányba anélkül, hogy visszatesztelné a nyitási szintet. Az 'A' periódus hatalmas egyirányú sávot nyit.

  • Jelentés: Intézményi tőke határozott áttolása (pl. overnight hírre adott agresszív reakció).
  • Stratégia: Szigorúan tilos ellene menni (fade-elni). Kizárólag trendirányú beszállót szabad keresni kisebb idősíkon.
Magas Meggyőződés

2. Open-Test-Drive (OTD)

A piac nyitás után először elindul egy kulcsfontosságú referenciaár felé (pl. tegnapi záróár, POC vagy VAH), ott likviditást tesztel, azonnali elutasítást kap, majd átüti a nyitóárat és trendbe fordul.

  • Jelentés: Sikeres likviditásteszt után megindul a valódi irány.
  • Stratégia: Belépés, amint a piac visszametszi a nyitóárat; a stop a tesztelt csúcs/mélypont mögé kerül.
Csapda Szituáció

3. Open-Rejection-Reverse (ORR)

A piac megpróbál kitörni egy irányba az 'A' periódusban, de masszív ellenoldali limitekbe ütközik. Az aukció elakad, éles fordulattal visszametszi a nyitóárat, és a nap hátralévő részében a másik irányba rotál.

  • Jelentés: Késői kitörési kereskedők csapdába ejtése (Failed Auction nyitásban).
  • Stratégia: A fordulat megerősítésekor belépés az elakadt irány ellen, a sáv túloldala a célár.
Alacsony Meggyőződés

4. Open-Auction (OA)

A nyitás a korábbi értékzónán belül (In-Range) oszcillál. Nincs azonnali OTF kezdeményezés, a napot a lokális range-kereskedők uralják.

  • Jelentés: Kétoldali aukciós egyensúly, iránytalanság.
  • Stratégia: Megvárni az Initial Balance (első 60 perc) kialakulását, és a sáv széleit fade-elni a POC felé.

D-Shape (Klasszikus Egyensúly)

Szimmetrikus haranggörbe. Az ár a nap legnagyobb részében a központi POC körül rotál. A vevők és eladók egyetértenek a valós értékben.

Stratégia: Sávkereskedés. Fade VAH és VAL, célár a POC. Kitörések kereskedése szigorúan tilos.

P-Shape (Short Covering Rally)

Alul vékony szár (Single Prints), felül kiszélesedő értékzóna. Gyakran nem friss long vásárlás, hanem korábbi shortok pánikszerű zárása hajtja.

Stratégia: Óvatosság long oldalon. Ha a felső konszolidáció elbukik, a vékony száron keresztül az ár gyorsan visszaomolhat.

b-Shape (Long Liquidation)

Felül vékony szár, alul kiszélesedő rotáció. Korábbi vevők stop-outja és pozíciófelszámolása hajtja az esést.

Stratégia: Tilos az alján késői shortba lépni! Az alsó rotáció abszorpciót jelez, az eladási nyomás kimerült.

B-Shape (Double Distribution / Trend)

Két jól elkülönülő értékzóna egymás felett, amelyeket egy vékony, single print-es nyak köt össze. Valódi átárazódás történt.

Stratégia: A két zóna közötti vékony nyak visszatesztje kemény támaszként/ellenállásként működik.

Strukturális Hibák: Poor High/Low és Failed Auction

Poor High & Poor Low (Befejezetlen Aukció)

Ha a nap csúcsán vagy mélypontján kettő vagy több betű torlódik fel egyetlen árszinten (nincs elutasító tail), az befejezetlen aukciót jelent.

  • Nem léptek be agresszív ellenoldali eladók, csak ideiglenesen elfogyott a lokális likviditás.
  • Mágneshatás: A piac statisztikailag óriási valószínűséggel visszatér felszámolni ezeket a szinteket.
  • Alapszabály: Kiváló célár (target), de mögé stopot tenni tilos.

Failed Auction (Elbukott Aukció)

A piac átszúr egy kulcsszintet (IBH, IBL, PDH, PDL), de nem talál elfogadást az új áron: a volumen elapad, vagy masszív limit eladások nyelik el a vételt.

  • Az ár azonnal visszahullik a kitörési szint alá.
  • "Failures lead to fast moves": A csapdába esett kitörési kereskedők stopjai üzemanyagként hajtják a piacot a sáv túloldala felé.
5623.50 (High) 0 × 180* Kifulladás a csúcson (Exhaustion) 5623.00 42 × 620* Vételi Imbalance elakadással 5622.50 110 × 890* Masszív Iceberg Abszorpció --- ELŐZŐ NAPI CSÚCS (PDH: 5620.00) --- 5619.50 480* × 95 Eladói Imbalance belépés 5618.75 620* × 120 Trapped Longs pánikban zár
2. Ábra: Footprint abszorpció és eladói fordulat a tetőn (Failed Auction anatómia).

A Footprint Jelek Értelmezése

Időpont Piaci Szakasz TPO / Order Flow Dinamika Kereskedési Akció
09:30 – 10:00 'A' periódus A piac agresszíven felnyúlik 5623.50-ig (3.5 ponttal a PDH fölé szúr). Kivárás. Nem ugrunk be a kitörésbe.
10:00 – 10:15 'B' periódus A 'B' betű megtorpan 5622.00-nél. A Footprinten 5622.50-nél 890 kontraktus vétel fut le az askon elakadás mellett. Abszorpció azonosítva. Készülés a short belépésre.
10:18 Visszametszés Az ár visszahullik 5620 alá. 5619.50-en megjelenik a 480-as eladói imbalance a bid oldalon. SHORT BELÉPÉS: 5619.00
Stop-Loss: 5622.25 (3.25 pont).
10:35 T1 Teszt Az ár eléri az 5612.00-es tegnapi VAH támaszt. A forgalmi POC lefelé vándorol (5618  5614). T1 ZÁRÁS (50%): +7.0 pont.
Stop azonnal Break-Even-be (5619.00).
11:20 T2 Elérése Az ár simán átcsúszik az 5605-ös vékony forgalmi zónán és eléri az 5598.00-as tegnapi VPOC-t. T2 ZÁRÁS (Runner): +21.0 pont.
Teljes R-eredmény: +3.7R.
Pozícióméretezési Képlet:
Kontraktusméret (db) = INT( (Számlaméret × Kockázati %) / (Stop pontérték × $50 + Jutalék) )

Számítási Mátrix ($50,000 számla, 1.0% = $500 kockázat mellett)

Stop Távolság Számított ES Kontraktus Tényleges Dollárkockázat Hibrid Alternatíva (ES + MES)
2.5 pont 3 db ES $388 3 db ES + 8 db MES ($498)
3.25 pont (Mintatrade) 3 db ES $501 (vagy 2 db ES + 9 db MES) Precíz $500 kockázat
4.5 pont 2 db ES $459 2 db ES + 4 db MES ($495)
6.0 pont 1 db ES $304 1 db ES + 15 db MES ($495)
  1. 09:10 – 09:28 (Pre-Market): Rögzítsd a kulcsszinteket (PDH, PDL, VAH, VAL, VPOC, ONH, ONL). Jelöld be a korábbi Poor High/Low szinteket és a Virgin POC-kat.
  2. 09:30 – 10:00 ('A' periódus): Kezeket el a billentyűzettől. Figyeld az aukció irányát. Ne kereskedj, kivéve ha tiszta Open-Drive indul.
  3. 10:00 – 10:30 ('B' periódus): Rögzítsd az Initial Balance határait (IBH és IBL). Mérd fel az IB méretét (szűk vagy tág).
  4. 10:30-tól (Végrehajtás): Csak kulcsszinteken lépj be. Ha Failed Auction: keresd a Footprint abszorpciót, lépj be a szint visszametszésekor. Használj szerveroldali OCO Bracket megbízást.
  5. Menedzsment: T1-nél kötelező skálázás (50%), stop Break-Even-be húzása. Runner futtatása a fejlődő Volume POC mögött.
function setupTradingJournal() {
const ss = SpreadsheetApp.getActiveSpreadsheet(); let logSheet = ss.getSheetByName("Trade Log"); if (!logSheet) { logSheet = ss.getActiveSheet(); logSheet.setName("Trade Log"); } else { logSheet.clear(); }
const darkNavy = "#1E293B"; const lightGray = "#F8FAFC";
// Kalkulátor fejléc logSheet.getRange("R1:U1").merge().setValue("POZÍCIÓMÉRETEZŐ KALKULÁTOR") .setBackground(darkNavy).setFontColor("white").setFontWeight("bold").setHorizontalAlignment("center");
logSheet.getRange("R2").setValue("Számlaméret ($):"); logSheet.getRange("S2").setValue(50000).setNumberFormat("$#,##0"); logSheet.getRange("T2").setValue("Megnyitható ES (db):"); logSheet.getRange("U2").setFormula('=IF(S7>0, INT(S4/((S7*50)+S8)), 0)').setFontWeight("bold");
logSheet.getRange("R3").setValue("Kockázat / Trade (%):"); logSheet.getRange("S3").setValue(0.01).setNumberFormat("0.0%"); logSheet.getRange("T3").setValue("Megnyitható MES (db):"); logSheet.getRange("U3").setFormula('=IF(S7>0, INT(S4/((S7*5)+1.2)), 0)');
logSheet.getRange("R4").setValue("Max Kockázat ($):"); logSheet.getRange("S4").setFormula('=S2S3').setNumberFormat("$#,##0"); logSheet.getRange("T4").setValue("Hibrid Kosár (T1+T2):"); logSheet.getRange("U4").setFormula('=IF(U2>=1, U2 & " ES + " & INT((S4-(U2((S750)+S8)))/((S75)+1.2)) & " MES", U3 & " MES")');
logSheet.getRange("R5").setValue("Belépési Ár:"); logSheet.getRange("S5").setValue(5619.00).setNumberFormat("0.00"); logSheet.getRange("T5").setValue("Tényleges Kockázat ($):"); logSheet.getRange("U5").setFormula('=U2*((S7*50)+S8)').setNumberFormat("$#,##0");
logSheet.getRange("R6").setValue("Stop-Loss Ár:"); logSheet.getRange("S6").setValue(5622.25).setNumberFormat("0.00"); logSheet.getRange("T6").setValue("Tényleges Kockázat (%):"); logSheet.getRange("U6").setFormula('=U5/S2').setNumberFormat("0.00%");
logSheet.getRange("R7").setValue("Stop Távolság (pont):"); logSheet.getRange("S7").setFormula('=ABS(S5-S6)').setNumberFormat("0.00"); logSheet.getRange("T7").setValue("Napi Circuit Breaker:"); logSheet.getRange("U7").setFormula('=IF(SUM(M10:M)<= -3, "STOP TRADING!", "TRADING AKTÍV")').setFontWeight("bold");
logSheet.getRange("R8").setValue("Jutalék / Csúszás ($):"); logSheet.getRange("S8").setValue(4.50).setNumberFormat("$0.00"); logSheet.getRange("T8").setValue("Fegyelmi Állapot:"); logSheet.getRange("U8").setFormula('=IF(COUNTIF(P10:P, "<>None")>0, "FIGYELEM: HIBA TÖRTÉNT", "TISZTA MENET")');
logSheet.getRange("R2:U8").setBackground(lightGray).setFontSize(9);
// KPI Fejléc logSheet.getRange("A1:K1").merge().setValue("FŐBB STATISZTIKÁK & TELJESÍTMÉNY") .setBackground(darkNavy).setFontColor("white").setFontWeight("bold").setHorizontalAlignment("center");
const kpiHeaders = ["Összes Kötés", "Win Rate (%)", "Átlag Nyertes (R)", "Átlag Vesztes (R)", "Expectancy (R/trade)", "Kumulált R"]; for (let i = 0; i < kpiHeaders.length; i++) { logSheet.getRange(2, i * 2 + 1, 1, 2).merge().setValue(kpiHeaders[i]).setFontWeight("bold").setBackground("#E2E8F0").
setHorizontalAlignment("center").setFontSize(9); }
logSheet.getRange("A3:B3").merge().setFormula('=COUNTA(M10:M)').setHorizontalAlignment("center").setFontWeight("bold"); logSheet.getRange("C3:D3").merge().setFormula('=IFERROR(COUNTIF(M10:M, ">0")/A3, 0)').setNumberFormat("0.0%").setHorizontalAlignment("center").setFontWeight("bold"); logSheet.getRange("E3:F3").merge().setFormula('=IFERROR(AVERAGEIF(M10:M, ">0"), 0)').setNumberFormat("0.00").setHorizontalAlignment("center"); logSheet.getRange("G3:H3").merge().setFormula('=IFERROR(AVERAGEIF(M10:M, "<0"), 0)').setNumberFormat("0.00").setHorizontalAlignment("center"); logSheet.getRange("I3:J3").merge().setFormula('=IFERROR((C3*E3)+(1-C3)*G3, 0)').setNumberFormat("0.00").setHorizontalAlignment("center").setFontWeight("bold"); logSheet.getRange("K3:L3").merge().setFormula('=IFERROR(SUM(M10:M), 0)').setNumberFormat("0.00").setHorizontalAlignment("center").setFontWeight("bold");
// Táblázat fejléc const headers = ["Dátum", "Piac", "Profilforma", "Nyitási Típus", "Setup", "Trigger", "Irány", "Belépés", "Stop-Loss", "Kilépés", "Risk (pts)", "PnL (pts)", "R-Multiple", "MAE (pts)", "MFE (pts)", "Fegyelmi Hiba"]; const headerRange = logSheet.getRange(9, 1, 1, headers.length); headerRange.setValues([headers]); headerRange.setBackground(darkNavy).setFontColor("white").setFontWeight("bold").setHorizontalAlignment("center");
// Mintaadatok const sampleData = [ ["2026-09-28", "ES", "D-shape", "ORR", "Failed Auction", "Absorption", "Short", 5619.00, 5624.25, 5605.00, "", "", "", 1.25, 18.00, "None"], ["2026-09-29", "ES", "b-shape", "OTD", "Range Extension", "Stacked Imbalance", "Long", 5580.00, 5576.00, 5594.00, "", "", "", 0.75, 15.50, "Early Exit"], ["2026-09-30", "ES", "D-shape", "OA", "VA Fade", "Delta Div", "Long", 5590.00, 5586.50, 5586.50, "", "", "", 3.50, 2.00, "None"] ]; logSheet.getRange(10, 1, sampleData.length, headers.length).setValues(sampleData);
// Képletek soronként for (let r = 10; r <= 100; r++) { logSheet.getRange(K${r}).setFormula(=IF(H${r}<>"","=ABS(H${r}-I${r})","")); logSheet.getRange(L${r}).setFormula(=IF(AND(H${r}<>"",J${r}<>""), IF(G${r}="Long", J${r}-H${r}, H${r}-J${r}), "")); logSheet.getRange(M${r}).setFormula(=IF(AND(K${r}<>"",K${r}>0,L${r}<>""), ROUND(L${r}/K${r}, 2), "")); }
// Szabályok és validációk const rules = []; rules.push(SpreadsheetApp.newConditionalFormatRule().whenNumberGreaterThanOrEqualTo(2.0).setBackground("#BBF7D0").setFontColor("#14532D").setRanges([logSheet.getRange("M10:M100")]).build()); rules.push(SpreadsheetApp.newConditionalFormatRule().whenNumberLessThan(0).setBackground("#FECACA").setFontColor("#7F1D1D").setRanges([logSheet.getRange("M10:M100")]).build()); rules.push(SpreadsheetApp.newConditionalFormatRule().whenTextDoesNotContain("None").setBackground("#FED7AA").setFontColor("#7C2D12").setRanges([logSheet.getRange("P10:P100")]).build()); rules.push(SpreadsheetApp.newConditionalFormatRule().whenTextEqualTo("STOP TRADING!").setBackground("#EF4444").setFontColor("#FFFFFF").setRanges([logSheet.getRange("U7")]).build()); rules.push(SpreadsheetApp.newConditionalFormatRule().whenFormulaSatisfied('=AND($C10="D-shape", $E10="Range Extension")').setBackground("#FEF08A").setRanges([logSheet.getRange("A10:P100")]).build()); logSheet.setConditionalFormatRules(rules);
logSheet.autoResizeColumns(1, 16); }