08_mbp: capitol reconstruit dupa sablon
Primul capitol terminat cap-coada dupa 01_buy_doji: nivelurile 1-2-3, cei 5 pasi cu propozitie de actiune si "Treci mai departe doar daca", mini-glosar de 38 de termeni, oglinda pe short cu diagrama ei, checklist. Sursele au iesit in fise/08_mbp_surse.md. Diagrame noi pentru pasii 1, 3, 4 si 5, care nu aveau: context, trigger, stop, iesire. Benzile Bollinger din context sunt calculate din close-uri, nu desenate, cu 20 de bare de incalzire nedesenate. MBP e monotimeframe, deci cerinta de corespondenta intre timeframe-uri nu se aplica aici — nu s-a inventat o diagrama pentru ea. Stopul e fix pe cel mai jos minim din 4 candele, fara marja: asa spune cursul pentru strategia asta, spre deosebire de 01_buy_doji. Diferenta e spusa explicit in text. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
@@ -243,6 +243,11 @@ _fits(in_da + "\n" + "\n".join(add_da), w_da, PH, "panoul DA")
|
||||
_fits(in_nu + "\n" + "\n".join(add_nu), w_nu, PH, "panoul NU")
|
||||
assert svg.count("<svg") == 3 and svg.count("</svg>") == 3
|
||||
assert f"{n_fall} bare" in svg and len(FALL) == n_fall
|
||||
# etichetele goale (nivelurile-distanțier) nu au ce căuta în SVG: auditul le
|
||||
# citește ca text suprapus peste ce e sub ele
|
||||
svg = re.sub(r"\n\s*<text[^>]*>\s*</text>", "", svg)
|
||||
assert svg.count("\n\n") == 0
|
||||
|
||||
OUT.write_text(svg, encoding="utf-8")
|
||||
print(f"scris {OUT.name}: DA close {da[M].c:.2f} < bandă {lo_da:.2f}, cădere {cadere:.2f} $ "
|
||||
f"în {n_fall} bare, suport {nivel:.2f}; NU lățime bandă {lat_nu:.2f} vs {lat_da:.2f}")
|
||||
|
||||
@@ -6,11 +6,8 @@
|
||||
<polyline points="40.0,210.0 52.0,212.9 64.0,215.4 76.0,216.4 88.0,215.8 100.0,214.7 112.0,212.2 124.0,209.4 136.0,205.3 148.0,201.0 160.0,196.5 172.0,191.9 184.0,186.9 196.0,181.8 208.0,176.5 220.0,171.0 232.0,165.3 244.0,159.4 256.0,153.1 268.0,146.1 280.0,140.3 292.0,135.6 304.0,132.7 316.0,131.5 328.0,131.9 340.0,133.8 352.0,136.8 364.0,141.2" fill="none" stroke="#1a5fb4" stroke-width="1.2" opacity="0.85"/>
|
||||
<polyline points="40.0,178.4 52.0,179.5 64.0,185.5 76.0,188.5 88.0,186.3 100.0,180.8 112.0,169.8 124.0,157.0 136.0,142.0 148.0,126.8 160.0,115.4 172.0,103.1 184.0,93.8 196.0,83.1 208.0,75.7 220.0,66.7 232.0,61.1 244.0,54.3 256.0,50.8 268.0,48.0 280.0,51.9 292.0,61.3 304.0,69.2 316.0,73.4 328.0,72.2 340.0,67.1 352.0,61.5 364.0,55.9" fill="none" stroke="#1a5fb4" stroke-width="1.2" opacity="0.85" stroke-dasharray="4 3"/>
|
||||
<line x1="24" y1="249.8" x2="358" y2="249.8" stroke="#777" stroke-width="1.5" stroke-dasharray="6 3"/>
|
||||
<text x="30" y="243.8" fill="#777"></text>
|
||||
<line x1="24" y1="34.0" x2="358" y2="34.0" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
|
||||
<text x="344" y="28.0" fill="none" text-anchor="end"></text>
|
||||
<line x1="24" y1="294.6" x2="358" y2="294.6" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
|
||||
<text x="344" y="288.6" fill="none" text-anchor="end"></text>
|
||||
<line x1="40.0" y1="229.6" x2="40.0" y2="245.2" stroke="#1a1a1a" stroke-width="1.2"/>
|
||||
<rect x="36.0" y="234.2" width="8" height="6.2" fill="#c00"/>
|
||||
<line x1="52.0" y1="235.8" x2="52.0" y2="249.8" stroke="#1a1a1a" stroke-width="1.2"/>
|
||||
@@ -76,9 +73,7 @@
|
||||
<polyline points="40.0,113.7 52.0,113.5 64.0,113.4 76.0,113.4 88.0,113.3 100.0,113.1 112.0,113.0 124.0,113.0 136.0,112.9 148.0,112.8 160.0,112.7 172.0,112.8 184.0,112.6 196.0,112.7 208.0,112.6 220.0,112.5 232.0,112.5 244.0,112.4 256.0,112.4 268.0,112.5 280.0,113.3 292.0,114.2 304.0,114.3 316.0,113.7 328.0,112.8 340.0,112.2 352.0,112.4 364.0,113.1" fill="none" stroke="#1a5fb4" stroke-width="1.2" opacity="0.85"/>
|
||||
<polyline points="40.0,84.2 52.0,83.6 64.0,83.3 76.0,83.3 88.0,83.3 100.0,83.5 112.0,83.7 124.0,83.6 136.0,83.4 148.0,83.1 160.0,82.9 172.0,82.9 184.0,83.1 196.0,83.1 208.0,83.0 220.0,82.9 232.0,82.7 244.0,82.5 256.0,82.5 268.0,82.4 280.0,82.3 292.0,84.1 304.0,84.7 316.0,82.9 328.0,82.0 340.0,82.7 352.0,82.3 364.0,82.2" fill="none" stroke="#1a5fb4" stroke-width="1.2" opacity="0.85" stroke-dasharray="4 3"/>
|
||||
<line x1="24" y1="34.0" x2="358" y2="34.0" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
|
||||
<text x="344" y="28.0" fill="none" text-anchor="end"></text>
|
||||
<line x1="24" y1="294.6" x2="358" y2="294.6" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
|
||||
<text x="344" y="288.6" fill="none" text-anchor="end"></text>
|
||||
<line x1="40.0" y1="107.9" x2="40.0" y2="139.9" stroke="#1a1a1a" stroke-width="1.2"/>
|
||||
<rect x="36.0" y="113.3" width="8" height="21.1" fill="#188a3e"/>
|
||||
<line x1="52.0" y1="90.7" x2="52.0" y2="118.8" stroke="#1a1a1a" stroke-width="1.2"/>
|
||||
|
||||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
@@ -184,6 +184,11 @@ assert abs((ch_da._y(ENTRY) - ch_da._y(TP1)) - (ch_nu._y(ENTRY) - ch_nu._y(TP1))
|
||||
# 1:1 și vizual: distanța intrare-TP1 == distanța SL-intrare
|
||||
assert abs((ch_da._y(ENTRY) - ch_da._y(TP1)) - (ch_da._y(SL) - ch_da._y(ENTRY))) < 1e-9
|
||||
|
||||
# etichetele goale (nivelurile-distanțier) nu au ce căuta în SVG: auditul le
|
||||
# citește ca text suprapus peste ce e sub ele
|
||||
svg = re.sub(r"\n\s*<text[^>]*>\s*</text>", "", svg)
|
||||
assert svg.count("\n\n") == 0
|
||||
|
||||
OUT.write_text(svg, encoding="utf-8")
|
||||
print(f"scris {OUT.name}: TP1 {TP1:.2f} la bara {tp_i}, trail {trail:.2f}, ieșire {iesire:.2f} "
|
||||
f"(+{r_iesire:.2f}R); NU: 50 % la {half:.3f}, scos cu +{r_scos:.1f}R, ratat {ratat:.2f} "
|
||||
|
||||
@@ -11,9 +11,7 @@
|
||||
<line x1="24" y1="131.3" x2="378" y2="131.3" stroke="#b06000" stroke-width="1.5" stroke-dasharray="1 3"/>
|
||||
<text x="364" y="125.3" fill="#b06000" text-anchor="end">trail 624.41</text>
|
||||
<line x1="24" y1="34.0" x2="378" y2="34.0" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
|
||||
<text x="364" y="28.0" fill="none" text-anchor="end"></text>
|
||||
<line x1="24" y1="396.5" x2="378" y2="396.5" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
|
||||
<text x="364" y="390.5" fill="none" text-anchor="end"></text>
|
||||
<line x1="52.0" y1="146.3" x2="52.0" y2="239.3" stroke="#1a1a1a" stroke-width="1.2"/>
|
||||
<rect x="43.0" y="164.3" width="18" height="45.0" fill="#c00"/>
|
||||
<line x1="82.0" y1="194.3" x2="82.0" y2="308.3" stroke="#1a1a1a" stroke-width="1.2"/>
|
||||
@@ -52,9 +50,7 @@
|
||||
<line x1="24" y1="392.0" x2="381" y2="392.0" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
|
||||
<text x="30" y="386.0" fill="#c00">SL inițial 623.60</text>
|
||||
<line x1="24" y1="51.7" x2="381" y2="51.7" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
|
||||
<text x="367" y="45.7" fill="none" text-anchor="end"></text>
|
||||
<line x1="24" y1="414.3" x2="381" y2="414.3" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
|
||||
<text x="367" y="408.3" fill="none" text-anchor="end"></text>
|
||||
<line x1="52.0" y1="164.0" x2="52.0" y2="257.0" stroke="#1a1a1a" stroke-width="1.2"/>
|
||||
<rect x="43.0" y="182.0" width="18" height="45.0" fill="#c00"/>
|
||||
<line x1="82.0" y1="212.0" x2="82.0" y2="326.0" stroke="#1a1a1a" stroke-width="1.2"/>
|
||||
|
||||
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.4 KiB |
@@ -149,6 +149,11 @@ for i in range(len(box)):
|
||||
assert not (abs(ay - by) < 13 and a0 < b1 - 4 and b0 < a1 - 4), \
|
||||
f"texte suprapuse: {at!r} / {bt!r}"
|
||||
|
||||
# etichetele goale (nivelurile-distanțier) nu au ce căuta în SVG: auditul le
|
||||
# citește ca text suprapus peste ce e sub ele
|
||||
svg = re.sub(r"\n\s*<text[^>]*>\s*</text>", "", svg)
|
||||
assert svg.count("\n\n") == 0
|
||||
|
||||
OUT.write_text(svg, encoding="utf-8")
|
||||
print(f"scris {OUT.name}: fereastră {N_F} candele [{I0}..{TRIG}], SL {sl:.2f} (= low M), "
|
||||
f"intrare {entry:.2f}, 1R {risc:.2f}, {unitati} unități, notional {notional:,.0f}")
|
||||
|
||||
@@ -9,9 +9,7 @@
|
||||
<line x1="24" y1="531.1" x2="742" y2="531.1" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
|
||||
<text x="30" y="525.1" fill="#c00">SL 623.60</text>
|
||||
<line x1="24" y1="56.0" x2="742" y2="56.0" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
|
||||
<text x="728" y="50.0" fill="none" text-anchor="end"></text>
|
||||
<line x1="24" y1="562.2" x2="742" y2="562.2" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
|
||||
<text x="728" y="556.2" fill="none" text-anchor="end"></text>
|
||||
<line x1="64.0" y1="87.1" x2="64.0" y2="171.1" stroke="#1a1a1a" stroke-width="1.2"/>
|
||||
<rect x="55.0" y="105.1" width="18" height="36.0" fill="#c00"/>
|
||||
<line x1="94.0" y1="123.1" x2="94.0" y2="216.1" stroke="#1a1a1a" stroke-width="1.2"/>
|
||||
|
||||
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.4 KiB |
@@ -160,6 +160,11 @@ fits(in_nu + "\n" + "\n".join(add_nu), w_nu, PH, "panoul NU")
|
||||
assert svg.count("\n\n") == 0, "linie goală în SVG rupe blocul din markdown"
|
||||
assert svg.count("<svg") == 3 and svg.count("</svg>") == 3
|
||||
assert f"{n_nu} candele fără trigger" in svg and n_nu == len(fereastra_nu)
|
||||
# etichetele goale (nivelurile-distanțier) nu au ce căuta în SVG: auditul le
|
||||
# citește ca text suprapus peste ce e sub ele
|
||||
svg = re.sub(r"\n\s*<text[^>]*>\s*</text>", "", svg)
|
||||
assert svg.count("\n\n") == 0
|
||||
|
||||
OUT.write_text(svg, encoding="utf-8")
|
||||
print(f"scris {OUT.name}: M {da[M].c:.2f} (low {sl:.2f}), trigger {entry:.2f}; "
|
||||
f"NU {n_nu} bare roșii, rupere {rupere:.2f} ({pierdere:.2f} $ sub stop)")
|
||||
|
||||
@@ -8,9 +8,7 @@
|
||||
<line x1="24" y1="354.5" x2="358" y2="354.5" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
|
||||
<text x="30" y="348.5" fill="#c00">SL 623.60</text>
|
||||
<line x1="24" y1="34.0" x2="358" y2="34.0" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
|
||||
<text x="344" y="28.0" fill="none" text-anchor="end"></text>
|
||||
<line x1="24" y1="426.0" x2="358" y2="426.0" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
|
||||
<text x="344" y="420.0" fill="none" text-anchor="end"></text>
|
||||
<line x1="44.0" y1="58.1" x2="44.0" y2="117.0" stroke="#1a1a1a" stroke-width="1.2"/>
|
||||
<rect x="37.0" y="69.5" width="14" height="28.5" fill="#c00"/>
|
||||
<line x1="66.0" y1="86.6" x2="66.0" y2="145.5" stroke="#1a1a1a" stroke-width="1.2"/>
|
||||
@@ -55,9 +53,7 @@
|
||||
<line x1="24" y1="354.5" x2="404" y2="354.5" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
|
||||
<text x="30" y="348.5" fill="#c00">stopul ar fi fost 623.60</text>
|
||||
<line x1="24" y1="34.0" x2="404" y2="34.0" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
|
||||
<text x="390" y="28.0" fill="none" text-anchor="end"></text>
|
||||
<line x1="24" y1="426.0" x2="404" y2="426.0" stroke="none" stroke-width="1.5" stroke-dasharray=""/>
|
||||
<text x="390" y="420.0" fill="none" text-anchor="end"></text>
|
||||
<line x1="44.0" y1="58.1" x2="44.0" y2="117.0" stroke="#1a1a1a" stroke-width="1.2"/>
|
||||
<rect x="37.0" y="69.5" width="14" height="28.5" fill="#c00"/>
|
||||
<line x1="66.0" y1="86.6" x2="66.0" y2="145.5" stroke="#1a1a1a" stroke-width="1.2"/>
|
||||
|
||||
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.3 KiB |