Aukciós piaci struktúra, profilformák, footprint jelek és pozícióméretezés
| 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. | |
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
| 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. |
Kontraktusméret (db) = INT( (Számlaméret × Kockázati %) / (Stop pontérték × $50 + Jutalék) )
| 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) |
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); }