commit 827d088edfd8273e9d8cba35f5243654545925ca Author: artemium428 Date: Thu Jul 16 16:21:09 2026 +0200 Initial commit: 428th website diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f928a7f --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.tools/ +*.zip +.DS_Store diff --git a/app.js b/app.js new file mode 100644 index 0000000..a6ad651 --- /dev/null +++ b/app.js @@ -0,0 +1,30 @@ +initLangSwitch(); +initTheme(); + +function syncTaglineFit(){ + const heroBrandInner = document.getElementById('heroBrandInner'); + const logo = heroBrandInner?.querySelector('.logo'); + const tagline = heroBrandInner?.querySelector('.tagline'); + if (!logo || !tagline) return; + + document.documentElement.style.setProperty('--hero-tagline-fit', '1'); + const logoW = logo.getBoundingClientRect().width; + const taglineW = tagline.scrollWidth; + const fit = taglineW > 0 ? Math.min(1, logoW / taglineW) : 1; + document.documentElement.style.setProperty('--hero-tagline-fit', fit.toFixed(4)); +} + +initHeroScroll({ + section: document.querySelector('.hero'), + stage: document.querySelector('.hero-stage'), + brand: document.querySelector('.hero-brand'), + brandInner: document.getElementById('heroBrandInner'), + mobileAnimClass: 'hero--mobile-anim', + scrollDrivenClass: 'hero--scroll-driven', + brandScaleAnimation: 'hero-brand-scale', + syncFit: syncTaglineFit, + subtractRunwayOnMobile: false +}); + +initReveal(); +initContactForm(); diff --git a/common.js b/common.js new file mode 100644 index 0000000..38dfa68 --- /dev/null +++ b/common.js @@ -0,0 +1,467 @@ +// ---------- SHARED UTILITIES ---------- +function readCssPx(name, fallback, el = document.documentElement){ + const value = getComputedStyle(el).getPropertyValue(name).trim(); + const parsed = parseFloat(value); + return Number.isFinite(parsed) ? parsed : fallback; +} + +const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; + +// ---------- ЯЗЫК (переключатель = ссылки на статические URL) ---------- +function initLangSwitch(){ + const root = document.getElementById('langSwitch'); + if (!root) return; + + root.querySelectorAll('a[data-set-lang]').forEach(link => { + link.addEventListener('click', () => { + const lang = link.getAttribute('data-set-lang'); + if (lang === 'ru' || lang === 'en' || lang === 'ua') { + localStorage.setItem('lang', lang); + } + }); + }); +} + +// ---------- ТЕМА ---------- +function getSystemTheme(){ + return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'; +} + +function resolveTheme(){ + const saved = localStorage.getItem('theme'); + if (saved === 'light' || saved === 'dark') return saved; + return getSystemTheme(); +} + +function applyTheme(theme){ + document.documentElement.setAttribute('data-theme', theme); +} + +function initTheme(){ + const themeToggle = document.getElementById('themeToggle'); + const media = window.matchMedia('(prefers-color-scheme: dark)'); + + applyTheme(resolveTheme()); + + themeToggle.addEventListener('click', () => { + const current = document.documentElement.getAttribute('data-theme'); + const next = current === 'light' ? 'dark' : 'light'; + applyTheme(next); + localStorage.setItem('theme', next); + }); + + const onSystemChange = () => { + if (localStorage.getItem('theme')) return; + applyTheme(getSystemTheme()); + }; + if (typeof media.addEventListener === 'function') { + media.addEventListener('change', onSystemChange); + } else if (typeof media.addListener === 'function') { + media.addListener(onSystemChange); + } +} + +// ---------- HERO LOGO SCROLL ANIMATION ---------- +function initHeroScroll(config){ + const { + section, + stage, + brand, + brandInner, + mobileAnimClass, + scrollDrivenClass, + brandScaleAnimation, + syncFit, + brandGapFromSection = false, + clampMobileScale = null, + clearSectionVars = null, + setMobileScaleVar = false, + subtractRunwayOnMobile = true + } = config; + + const siteHeader = document.querySelector('.site-header'); + const mainNav = document.querySelector('.main-nav'); + + let cachedBaseHeight = 0; + let cachedBrandGap = 32; + let cachedMaxScale = 1.9; + let cachedMaxBrandHeight = 0; + let cachedMinBrandHeight = 0; + let cachedNavHeight = 0; + let heroRunway = 0; + let heroStartY = 0; + let heroResizeTimer = 0; + let heroIsMobile = false; + let heroUseScrollTimeline = false; + let lastHeroScrollStep = -1; + let postHeroLift = null; + + const heroRoot = document.documentElement; + + function clearHeroAnimationVars(){ + heroRoot.style.removeProperty('--hero-scale'); + heroRoot.style.removeProperty('--hero-brand-height'); + heroRoot.style.removeProperty('--hero-stage-height'); + heroRoot.style.removeProperty('--hero-brand-max-h'); + heroRoot.style.removeProperty('--hero-brand-min-h'); + heroRoot.style.removeProperty('--hero-nav-shift'); + heroRoot.style.removeProperty('--hero-nav-shift-max'); + heroRoot.style.removeProperty('--hero-scroll-start'); + heroRoot.style.removeProperty('--hero-scroll-end'); + if (brandInner){ + brandInner.style.removeProperty('animation-range'); + brandInner.style.removeProperty('animation-timeline'); + brandInner.style.removeProperty('animation'); + } + if (mainNav){ + mainNav.style.removeProperty('animation-range'); + mainNav.style.removeProperty('animation-timeline'); + mainNav.style.removeProperty('animation'); + mainNav.style.removeProperty('transform'); + } + if (postHeroLift){ + postHeroLift.style.removeProperty('animation-range'); + postHeroLift.style.removeProperty('animation-timeline'); + postHeroLift.style.removeProperty('animation'); + postHeroLift.style.removeProperty('transform'); + delete postHeroLift.dataset.heroLiftExited; + } + if (clearSectionVars) clearSectionVars(section); + } + + function ensurePostHeroLift(){ + if (postHeroLift?.isConnected) return postHeroLift; + postHeroLift = section?.parentElement?.querySelector(':scope > .post-hero-lift') || null; + return postHeroLift; + } + + function applyHeroScrollAnimations(range){ + brandInner.style.animation = `${brandScaleAnimation} ease-out both`; + brandInner.style.animationTimeline = 'scroll(root block)'; + brandInner.style.animationRange = range; + mainNav.style.animation = 'hero-nav-lift ease-out both'; + mainNav.style.animationTimeline = 'scroll(root block)'; + mainNav.style.animationRange = range; + ensurePostHeroLift(); + if (postHeroLift){ + postHeroLift.style.animation = 'hero-content-lift ease-out both'; + postHeroLift.style.animationTimeline = 'scroll(root block)'; + postHeroLift.style.animationRange = range; + postHeroLift.style.removeProperty('transform'); + delete postHeroLift.dataset.heroLiftExited; + } + } + + function setHeroMobileMode(enabled){ + if (!section) return; + section.classList.toggle(mobileAnimClass, enabled); + section.classList.toggle(scrollDrivenClass, enabled && heroUseScrollTimeline); + if (enabled) ensurePostHeroLift(); + } + + function getHeroScrollRunwayMultiplier(){ + return readCssPx('--hero-scroll-runway-multiplier', 1); + } + + function getHeroEffectiveRunway(){ + return heroRunway * getHeroScrollRunwayMultiplier(); + } + + function getHeroAnimationRange(){ + return `${heroStartY}px ${heroStartY + getHeroEffectiveRunway()}px`; + } + + function easeOutCubic(t){ + return 1 - (1 - t) ** 3; + } + + function getHeroScrollProgress(){ + return Math.min(Math.max(window.scrollY - heroStartY, 0), getHeroEffectiveRunway()); + } + + function updateHeroContentLift(){ + if (!heroIsMobile || prefersReducedMotion || !section){ + if (postHeroLift) postHeroLift.style.removeProperty('transform'); + return; + } + + ensurePostHeroLift(); + if (!postHeroLift) return; + + if (heroUseScrollTimeline){ + const exited = section.getBoundingClientRect().bottom <= 0; + if (exited){ + if (postHeroLift.dataset.heroLiftExited !== '1'){ + postHeroLift.style.animation = 'none'; + postHeroLift.style.transform = 'translate3d(0, 0, 0)'; + postHeroLift.dataset.heroLiftExited = '1'; + } + return; + } + if (postHeroLift.dataset.heroLiftExited === '1'){ + delete postHeroLift.dataset.heroLiftExited; + const range = getHeroAnimationRange(); + postHeroLift.style.animation = 'hero-content-lift ease-out both'; + postHeroLift.style.animationTimeline = 'scroll(root block)'; + postHeroLift.style.animationRange = range; + postHeroLift.style.removeProperty('transform'); + } + return; + } + + if (section.getBoundingClientRect().bottom <= 0){ + postHeroLift.style.transform = 'translate3d(0, 0, 0)'; + return; + } + const navShift = getComputedStyle(heroRoot).getPropertyValue('--hero-nav-shift').trim() || '0px'; + postHeroLift.style.transform = `translate3d(0, ${navShift}, 0)`; + } + + function isHeroMobileViewport(){ + return window.innerWidth < 600; + } + + function getHeroMaxScale(){ + const mobile = window.innerWidth < 600; + const scope = section || document.documentElement; + return readCssPx(mobile ? '--hero-max-scale-mobile' : '--hero-max-scale', mobile ? 1.6 : 2.2, scope); + } + + function syncSiteHeaderHeight(){ + if (!siteHeader) return; + const height = siteHeader.getBoundingClientRect().height; + document.documentElement.style.setProperty('--site-header-height', `${Math.ceil(height)}px`); + } + + function getHeroBrandHeight(scale){ + return cachedBaseHeight * scale + cachedBrandGap; + } + + function getHeroStickyTop(){ + return readCssPx('--site-header-height', 57) + readCssPx('--hero-stage-offset', 80); + } + + function measureHero(){ + syncSiteHeaderHeight(); + heroIsMobile = isHeroMobileViewport(); + lastHeroScrollStep = -1; + + if (!brandInner || !brand || !section || !stage || prefersReducedMotion){ + heroUseScrollTimeline = false; + setHeroMobileMode(false); + clearHeroAnimationVars(); + syncFit(); + return; + } + + const gapScope = brandGapFromSection ? section : document.documentElement; + cachedBrandGap = readCssPx('--hero-brand-gap', 32, gapScope); + cachedMaxScale = getHeroMaxScale(); + clearHeroAnimationVars(); + brandInner.style.removeProperty('transform'); + + syncFit(); + cachedBaseHeight = brandInner.offsetHeight; + if (heroIsMobile){ + if (clampMobileScale){ + cachedMaxScale = clampMobileScale(cachedMaxScale, brand, brandInner, section); + } + cachedMaxBrandHeight = getHeroBrandHeight(cachedMaxScale); + cachedMinBrandHeight = getHeroBrandHeight(1); + } else { + cachedMaxBrandHeight = getHeroBrandHeight(1); + cachedMinBrandHeight = getHeroBrandHeight(1 / cachedMaxScale); + } + cachedNavHeight = mainNav ? mainNav.offsetHeight : 0; + heroRunway = Math.max(cachedMaxBrandHeight - cachedMinBrandHeight, 0); + heroStartY = stage.getBoundingClientRect().top + window.scrollY - getHeroStickyTop(); + + heroUseScrollTimeline = heroIsMobile + && typeof CSS !== 'undefined' + && CSS.supports('animation-timeline', 'scroll()'); + + if (heroIsMobile){ + setHeroMobileMode(true); + if (setMobileScaleVar){ + section.style.setProperty('--hero-max-scale-mobile', cachedMaxScale.toFixed(4)); + } + heroRoot.style.setProperty('--hero-brand-max-h', `${cachedMaxBrandHeight}px`); + heroRoot.style.setProperty('--hero-brand-min-h', `${cachedMinBrandHeight}px`); + heroRoot.style.setProperty('--hero-brand-height', `${cachedMaxBrandHeight}px`); + heroRoot.style.setProperty('--hero-stage-height', `${cachedMaxBrandHeight + cachedNavHeight}px`); + heroRoot.style.setProperty('--hero-nav-shift-max', `${-(cachedMaxBrandHeight - cachedMinBrandHeight)}px`); + if (heroUseScrollTimeline){ + applyHeroScrollAnimations(getHeroAnimationRange()); + } + } else { + setHeroMobileMode(false); + } + + updateHeroBrand(); + updateHeroContentLift(); + } + + function updateHeroBrand(){ + if (!brandInner || !brand || !stage || prefersReducedMotion || cachedBaseHeight <= 0) return; + if (heroUseScrollTimeline) return; + + const scrolled = getHeroScrollProgress(); + const effectiveRunway = getHeroEffectiveRunway(); + const linearProgress = effectiveRunway > 0 ? scrolled / effectiveRunway : 1; + const progress = easeOutCubic(Math.min(linearProgress, 1)); + + if (heroIsMobile){ + const scale = cachedMaxScale - progress * (cachedMaxScale - 1); + const brandHeight = cachedBaseHeight * scale + cachedBrandGap; + const navShift = cachedMaxBrandHeight - brandHeight; + + heroRoot.style.setProperty('--hero-scale', scale.toFixed(4)); + heroRoot.style.setProperty('--hero-nav-shift', `${-navShift}px`); + updateHeroContentLift(); + return; + } + + if (scrolled === lastHeroScrollStep) return; + lastHeroScrollStep = scrolled; + + const brandHeight = cachedMaxBrandHeight - progress * (cachedMaxBrandHeight - cachedMinBrandHeight); + const scale = (brandHeight - cachedBrandGap) / cachedBaseHeight; + + heroRoot.style.setProperty('--hero-scale', scale.toFixed(4)); + heroRoot.style.setProperty('--hero-brand-height', `${brandHeight}px`); + heroRoot.style.setProperty('--hero-stage-height', `${brandHeight + cachedNavHeight}px`); + } + + let heroScrollRaf = 0; + let heroLastScrollY = -1; + + function runHeroScrollFrame(){ + heroScrollRaf = 0; + const scrollY = window.scrollY; + + if (heroIsMobile) updateHeroContentLift(); + if (!heroUseScrollTimeline) updateHeroBrand(); + + if (scrollY !== heroLastScrollY){ + heroLastScrollY = scrollY; + scheduleHeroScrollFrame(); + } + } + + function scheduleHeroScrollFrame(){ + if (heroScrollRaf) return; + heroScrollRaf = requestAnimationFrame(runHeroScrollFrame); + } + + function onHeroScroll(){ + scheduleHeroScrollFrame(); + } + + function initHeroAnimation(){ + measureHero(); + } + + function scheduleHeroMeasure(){ + clearTimeout(heroResizeTimer); + heroResizeTimer = setTimeout(initHeroAnimation, 120); + } + + function getNavScrollOffset(){ + return readCssPx('--site-header-height', 57) + 24; + } + + function getSectionScrollInset(target){ + const paddingTop = parseFloat(getComputedStyle(target).paddingTop); + return Number.isFinite(paddingTop) ? paddingTop : 0; + } + + function scrollToSection(target){ + const offset = getNavScrollOffset(); + let top = target.getBoundingClientRect().top + window.scrollY - offset + getSectionScrollInset(target); + const belowHero = section + && (section.compareDocumentPosition(target) & Node.DOCUMENT_POSITION_FOLLOWING); + const canSubtractRunway = subtractRunwayOnMobile || !heroIsMobile; + if (belowHero && heroRunway > 0 && canSubtractRunway && window.scrollY < heroStartY + heroRunway){ + top -= heroRunway; + } + + window.scrollTo({ + top: Math.max(top, 0), + behavior: prefersReducedMotion ? 'auto' : 'smooth' + }); + } + + window.addEventListener('scroll', onHeroScroll, { passive: true }); + window.addEventListener('resize', scheduleHeroMeasure); + window.addEventListener('load', initHeroAnimation); + + if (brandInner && window.ResizeObserver){ + const heroResizeObserver = new ResizeObserver(scheduleHeroMeasure); + heroResizeObserver.observe(brandInner); + } + + if (siteHeader && window.ResizeObserver){ + const headerResizeObserver = new ResizeObserver(scheduleHeroMeasure); + headerResizeObserver.observe(siteHeader); + } + + initHeroAnimation(); + + document.querySelectorAll('.main-nav a[href^="#"]').forEach(link => { + link.addEventListener('click', e => { + const target = document.querySelector(link.getAttribute('href')); + if (!target) return; + + e.preventDefault(); + scrollToSection(target); + }); + }); +} + +// ---------- REVEAL ON SCROLL ---------- +function initReveal(){ + const observer = new IntersectionObserver((entries) => { + entries.forEach(entry => { + if (entry.isIntersecting){ + entry.target.classList.add('visible'); + observer.unobserve(entry.target); + } + }); + }, { threshold: 0.15 }); + + document.querySelectorAll('.reveal').forEach(el => observer.observe(el)); +} + +// ---------- МОДАЛКА + ФОРМА ---------- +function initContactForm(){ + const modal = document.getElementById('contactModal'); + document.getElementById('openContactForm').addEventListener('click', () => modal.classList.add('open')); + document.getElementById('closeContactForm').addEventListener('click', () => modal.classList.remove('open')); + modal.addEventListener('click', e => { if (e.target === modal) modal.classList.remove('open'); }); + + const form = document.getElementById('contactForm'); + const status = document.getElementById('formStatus'); + + form.addEventListener('submit', async (e) => { + e.preventDefault(); + status.textContent = form.dataset.statusLoading || '...'; + + const data = Object.fromEntries(new FormData(form).entries()); + + try { + const res = await fetch('/api/contact', { // placeholder — заменит программист + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(data) + }); + if (!res.ok) throw new Error(); + status.textContent = form.dataset.statusSuccess || '✓'; + form.reset(); + setTimeout(() => modal.classList.remove('open'), 1200); + } catch (err) { + status.textContent = form.dataset.statusSuccess || '✓'; // без реального сервера считаем успехом + form.reset(); + setTimeout(() => modal.classList.remove('open'), 1200); + } + }); +} diff --git a/en/index.html b/en/index.html new file mode 100644 index 0000000..50ca093 --- /dev/null +++ b/en/index.html @@ -0,0 +1,425 @@ + + + + + +428th // Crypto · Trading · Wealth Management + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+
+

428th

+

Crypto // Trading // Wealth Management

+
+
+
+ + +
+
+ +
+ + +
+
+ About +

428th — part of the SIMPLE CRYPTO team

+

United by the idea of effective capital management. We've been working with crypto assets since 2018. We share our decisions with subscribers who respects. With those who don't — we don't.

+ +
+
+

Artemiy

+
    +
  • Manual and algorithmic trading
  • +
  • Automation
  • +
+
+
+

Ivan

+
    +
  • Fundamental analysis and macroeconomics
  • +
  • Prediction markets (Polymarket)
  • +
  • Value investing
  • +
  • Position trading on traditional markets
  • +
+
+
+

Andrey

+
    +
  • DeFi
  • +
  • Retro
  • +
  • Betting
  • +
+
+
+
+
+ + +
+
+ Premium +

Working together as the team

+

A private chat split into topics where we communicate with our members personally. UKR/RU mostly.

+ +
    +
  1. 01

    Every day — a conference call or technical video market review for Crypto + TradFi. Current situation, expectations, setup hunting, key levels. When possible, live Gold and Silver trading on seconds charts during calls.

  2. +
  3. 02

    24/7 trend setups from proprietary algorithms on 15-min and 6h timeframes. Clear entry, stop, take-profit, and chart.

  4. +
  5. 03

    Q&A, breakdowns of trading systems and tricks.

  6. +
  7. 04

    Fundamental analysis of markets and assets.

  8. +
  9. 05

    Recommendations on Retro, DeFi, and Polymarket.

  10. +
+ +
+ + Ways to join (any of these) + +
    +
  • $500 for the educational course, with 12 months of Premium included. It's just easier for us to work with people who know the basics.
  • +
  • $50/month subscription. Don't want to learn — pay extra for laziness.
  • +
  • Connected BingX copy trading with a $3,000+ deposit. The top option for those who already trust us.
  • +
  • $500k+/month crypto volume on a partner Bybit or BingX account. For whales, all doors are open.
  • +
+
+
+
+ + +
+
+ Education +

Author's trading course

+

Each topic includes a text lecture and video practice. 1–1.5 months at your own pace. Lessons average 20 minutes. Price: $500.

+ +
+
+

What's included

+
    +
  • Lifetime access to the student chat, course updates, conferences, proprietary indicators
  • +
  • All trading styles: intraday, medium-term, portfolio
  • +
  • Support from us and students from past cohorts
  • +
+
+
+

Methods

+
    +
  • Classic TA + PA + VSA + LRA + SM
  • +
  • Proven nuances of common analysis methods
  • +
  • New approaches and strategies as you study and practice
  • +
+
+
+ +
+

Elliott Wave Analysis (EWA) isn't included yet — that's the next level. You can trade just fine without it. If you want, use our wave markings.

+
+
+
+ + +
+
+ Copy Trading on BingX +

Semi-automated trading

+

Artemiy trades alongside bots on two futures master accounts — short-term and medium-term. Easy money button!

+ +
    +
  1. 01

    Two master accounts: short-term and medium-term futures trading.

  2. +
  3. 02

    Available only for BingX referrals. Unlocks free Premium access.

  4. +
  5. 03

    Connect if you're ready to experiment or trust us about as much as yourself — or more.

  6. +
+ +
+

There's little stats so far and it doesn't mean much — the tech solution was just launched. Connect consciously.

+
+
+
+ + +
+
+ Auto Trading // Terminal +

Automation via TradingView indicators

+

Got a working indicator that looks awesome but trading it manually is madness? Connect signals and watch it trade.

+ +
    +
  1. 01

    Sign up, connect your BingX, ByBit, or MEXC account via API. You need to be our referral or pay up.

  2. +
  3. 02

    Modify your script for our webhooks. It's not scary.

  4. +
  5. 03

    Set up alerts, enjoy. The bot won't break if you trade alongside it and manually adjust its positions.

  6. +
  7. 04

    Not much of a programmer? We'll help rewrite the script and get you connected — for free.

  8. +
+ +
+

+ More about 428th Terminal — + on this page. +

+
+
+
+ + +
+
+ +

Multi-family office

+

For those who want to ride the crypto trend and earn from capital — without managing the market themselves.

+ +
+
+

To manage on your own you need

+
    +
  • Time for constant market monitoring
  • +
  • A foundation for systematic analysis
  • +
  • Experience working safely with blockchains
  • +
+
+
+

Alternatively — trust us with everything

+
    +
  • Capital planning and allocation
  • +
  • Position management
  • +
  • Reporting and payouts
  • +
+
+
+ +
+

If you work the market on your own — that's the best approach, and we support it fully.

+

If not — we provide access to crypto returns without diving into every action.

+
+
+
+ + +
+
+ Crypto Admin Streams +

admins.stream service

+

Admins come together to host a conference for subscribers and exchange traffic. Sponsors welcome.

+ +
    +
  1. 01

    We assemble a group of admins, set talk topics, stream date, announcement posts schedule and prizes.

  2. +
  3. 02

    Admins publish announcement posts, people register in a TG bot. They need to subscribe to each admin.

  4. +
  5. 03

    All viewers are tracked — who came from where and all that. Anyone who floods with bots — gets banned. But we're prepared: captchas in the bot, captchas on stream.

  6. +
  7. 04

    We run the conference — admins together on a call, and viewers watch the stream and chat in the broadcast interface.

  8. +
  9. 05

    Among those who attended the conference (everyone gets a unique link), selected prizes are raffled off.

  10. +
  11. 06

    Admins are happy with engaged live traffic, subscribers are happy with top-notch content and rewards.

  12. +
+ +
+

Interested? Reach out, let's talk.

+
+
+
+ + +
+
+ Contact +

For all questions — DMs only. Sales aren't automated, and we never planned them to be.

+

Write to us — we'll figure out your situation and find a solution. Like bros.

+ + + Telegram @artemium → + + + +
+
+ + + + +
+ +
+ + + + + + + + + + diff --git a/en/terminal/index.html b/en/terminal/index.html new file mode 100644 index 0000000..35c29d8 --- /dev/null +++ b/en/terminal/index.html @@ -0,0 +1,303 @@ + + + + + +428th Terminal — auto trading via TradingView signals + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+

428thTerminal

+
+
+ + +
+
+ +
+ + +
+
+ Features +

Link a TradingView indicator with an exchange

+

Basically, that's the main reason we built the terminal. Say you or someone else has a great indicator:

+ +
+
+

Trade signals manually

+
    +
  • You need to sit at your computer or phone 24/7
  • +
  • Easy to miss a signal
  • +
  • You might not get in on time
  • +
+
+
+

Connect to the terminal

+
    +
  • Position opens automatically
  • +
  • Stop and take-profit set right away
  • +
  • If needed, do whatever you want with it manually
  • +
+
+
+ +
+

The point is to automate trading with an indicator you like.

+
+ +
    +
  1. 01

    Sign up, connect your BingX, ByBit, or MEXC account via API. You need to be our referral or pay up.

  2. +
  3. 02

    Modify your script for our webhooks. It's not scary.

  4. +
  5. 03

    Set up alerts, enjoy. The bot won't break even if you trade alongside it and manually adjust its positions.

  6. +
  7. 04

    Not much of a programmer? We'll help rewrite the script and get you connected — for free.

  8. +
+ +

We originally built the terminal for auto trading with our own indicators. So it does exactly what we need:

+ +
    +
  • Accepts webhooks from TradingView.
  • +
  • Opens positions on BingX, ByBit, or MEXC accordingly.
  • +
  • Accepts manual edits: you can close positions, reduce their sizes, or move SL/TPs on the exchange.
  • +
  • Shows trading statistics.
  • +
+ +
+

Now we're coming up with and adding new features. Want something? DM us.

+
+
+
+ + +
+
+ Pricing +

This is actually the fun part

+

Work for free if your account is our referral. If not — it'll be expensive :(

+ +
    +
  • We couldn't come up with a payment option more convenient than the exchange partner system.
  • +
  • If it's really important for you to trade without our referral, you probably don't care how much you pay anyway.
  • +
  • Direct service payment — $500/month per API key.
  • +
  • Reminder: no payment needed for trading on a referral account. Your commission bonuses are enough for us.
  • +
  • If you're an influencer and a partner of your chosen exchange — DM us, we'll work something out.
  • +
+ +
+

Being our referral is cool either way.

+
+ +
    +
  1. 01

    With $500k+/month in crypto volume, you get free Premium group access. More info — here.

  2. +
  3. 02

    Your trading fees drop by 30-50%, and if you're a whale, we'll arrange cashbacks.

  4. +
  5. 03

    Exchange questions or issues can be solved through us quickly. Especially on BingX — they're true bros for real.

  6. +
  7. 04

    Downsides? None. Registration links are at the bottom of the page.

  8. +
+
+
+ + +
+
+ Contact +

For all questions — DMs only. Sales aren't automated, and we never planned them to be.

+

Write to us — we'll figure out your situation and find a solution. Like bros.

+ + + Telegram @artemium → + + + +
+
+ + + + +
+ +
+ + + + + + + + + + diff --git a/fonts/Inter-Italic-VariableFont_opsz,wght.woff2 b/fonts/Inter-Italic-VariableFont_opsz,wght.woff2 new file mode 100644 index 0000000..a9783a3 Binary files /dev/null and b/fonts/Inter-Italic-VariableFont_opsz,wght.woff2 differ diff --git a/fonts/Inter-VariableFont_opsz,wght.woff2 b/fonts/Inter-VariableFont_opsz,wght.woff2 new file mode 100644 index 0000000..d97bc11 Binary files /dev/null and b/fonts/Inter-VariableFont_opsz,wght.woff2 differ diff --git a/fonts/inter.css b/fonts/inter.css new file mode 100644 index 0000000..daf2b37 --- /dev/null +++ b/fonts/inter.css @@ -0,0 +1,15 @@ +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url('Inter-VariableFont_opsz,wght.woff2') format('woff2'); +} + +@font-face { + font-family: 'Inter'; + font-style: italic; + font-weight: 100 900; + font-display: swap; + src: url('Inter-Italic-VariableFont_opsz,wght.woff2') format('woff2'); +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..4f4fa97 --- /dev/null +++ b/index.html @@ -0,0 +1,425 @@ + + + + + +428th // Crypto · Trading · Wealth Management + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ + +
+
+ Кто мы +

428th — часть команды SIMPLE CRYPTO

+

Объединены идеей эффективного управления капиталом. С 2018 года работаем с крипто-активами. Своими решениями делимся с уважаемыми подписчиками. С неуважаемыми — не делимся.

+ +
+
+

Артемий

+
    +
  • Ручной и алгоритмический трейдинг
  • +
  • Автоматизация
  • +
+
+
+

Иван

+
    +
  • Фундаментальный анализ и макроэкономика
  • +
  • Рынок предсказаний (Polymarket)
  • +
  • Инвестиции в ценность
  • +
  • Позиционная торговля классических рынков
  • +
+
+
+

Андрей

+
    +
  • DeFi
  • +
  • Retro
  • +
  • Betting
  • +
+
+
+
+
+ + +
+
+ Premium +

Работа в команде

+

Закрытый чат, разделённый на темы, в котором мы общаемся с вами лично.

+ +
    +
  1. 01

    Каждый день — конференция или технический видео-обзор рынка Crypto + TradFi. Текущая ситуация, ожидания, поиск сетапов, расстановка ориентиров. По возможности торговля Золотом и Серебром на секундных графиках онлайн на созвонах.

  2. +
  3. 02

    24/7 трендовые сетапы от авторских алгоритмов по таймфреймам 15 мин и 6ч. Чёткий вход, стоп, тейк и график.

  4. +
  5. 03

    Ответы на вопросы, разборы торговых систем и фишек.

  6. +
  7. 04

    Фундаментальный разбор рынков и активов.

  8. +
  9. 05

    Рекомендации по направлениям Retro, DeFi, Polymarket.

  10. +
+ +
+ + Варианты входа (любой из них) + +
    +
  • 500$ за обучение, в подарок 12 месяцев подписки на Premium. Нам просто лучше работать с теми, кто знает базу.
  • +
  • Подписка 50$/мес. Не хотите учиться — доплата за лень.
  • +
  • Подключённый копитрейдинг BingX на депозит $3 000+. Топовый вариант для тех, кто уже доверяет.
  • +
  • Оборот криптой на партнёрском аккаунте Bybit или BingX на $500k+/мес. Для китов все двери открыты.
  • +
+
+
+
+ + +
+
+ Обучение +

Авторский курс по трейдингу

+

По каждой теме — текстовая лекция и видео-практика. 1-1.5 месяца в свободном режиме. Уроки по 20 минут в среднем. Цена 500$.

+ +
+
+

Что входит

+
    +
  • Бессрочный доступ в чат учеников, обновления курса, конференции, авторские индикаторы
  • +
  • Все стили торговли: интрадей, среднесрок, портфель
  • +
  • Поддержка от нас и учеников прошлых потоков
  • +
+
+
+

Методы

+
    +
  • Классический ТА + PA + VSA + LRA + SM
  • +
  • Проверенные тонкости распространённых методов анализа
  • +
  • Новые подходы и стратегии по мере изучения и отработки
  • +
+
+
+ +
+

Волнового анализа (EWA) сейчас нет — это следующий уровень. Торговать нормально и без него. По желанию — опирайтесь на наши разметки.

+
+
+
+ + +
+
+ Копитрейдинг на BingX +

Полуавтоматическая торговля

+

Артемий вместе с ботами торгует на двух фьючерсных мастер-аккаунтах — краткосрок и среднесрок. Кнопка бабло!

+ +
    +
  1. 01

    Два мастер-аккаунта: краткосрочная и среднесрочная торговля на фьючерсах.

  2. +
  3. 02

    Доступно только для рефералов BingX. Открывает возможность бесплатного входа в Premium.

  4. +
  5. 03

    Подключайтесь, если готовы к эксперименту или доверяете нам примерно как себе — или сильнее.

  6. +
+ +
+

Статистики пока мало и она ничего не даёт — техническое решение только запущено. Подключайтесь осознанно.

+
+
+
+ + +
+
+ Автотрейдинг // Terminal +

Автоматизация по индикаторам TradingView

+

Есть рабочий индикатор, на вид офигенный, но работать руками — дичь? Подключайте сигналы и наблюдайте за торговлей.

+ +
    +
  1. 01

    Регистрируетесь, подключаете по API аккаунт на BingX, ByBit или MEXC. Нужно быть нашим рефералом или дать денег.

  2. +
  3. 02

    Модифицируете скрипт под наши webhook. Это не страшно.

  4. +
  5. 03

    Настраиваете алерты, кайфуете. Бот не сломается, даже если вы будете торговать вместе с ним и менять его позиции руками.

  6. +
  7. 04

    Вы не особо программист? Мы поможем переписать скрипт и подключиться — бесплатно.

  8. +
+ +
+

+ Подробнее про 428th Terminal — + на этой странице. +

+
+
+
+ + +
+
+ +

Multi-family office

+

Для тех, кто хочет быть в крипто-тренде и получать доход от капитала — без самостоятельной работы с рынком.

+ +
+
+

Для самостоятельного управления нужно

+
    +
  • Время на постоянное наблюдение за рынком
  • +
  • База для системного анализа
  • +
  • Опыт безопасной работы с блокчейнами
  • +
+
+
+

Как вариант — доверить всё нам

+
    +
  • Планирование и распределение капитала
  • +
  • Управление позициями
  • +
  • Отчётность и выплаты
  • +
+
+
+ +
+

Если работаете с рынком своей головой и руками — это лучший подход, мы его поддерживаем максимально.

+

Если нет — мы предоставляем доступ к крипто-доходности без погружения в каждое действие.

+
+
+
+ + +
+
+ Стримы крипто-админов +

Сервис admins.stream

+

Админы собираются вместе, чтобы провести конференцию для подписчиков и обменяться трафиком. Можно подключить спонсоров.

+ +
    +
  1. 01

    Собираем группу админов, фиксируем темы выступлений, дату стрима, расписание постов-анонсов, призы.

  2. +
  3. 02

    Админы выпускают посты-анонсы, люди регистрируются в тг-боте. Им нужно подписаться на каждого админа.

  4. +
  5. 03

    Все зрители фиксируются в базе, кто откуда пришёл и всё такое. Кто нальёт ботов — прибью. Но мы подготовились: капчи в боте, капчи на стриме.

  6. +
  7. 04

    Проводим конференцию — админы на созвоне, а зрители смотрят стрим и могут пообщаться в чате трансляции.

  8. +
  9. 05

    Среди тех, кто пришёл на конференцию (у всех индивидуальная ссылка), разыгрываются выбранные призы.

  10. +
  11. 06

    Админы довольны живым заинтересованным трафиком, подписчики радуются качественному контенту и наградам.

  12. +
+ +
+

Интересно? Обращайтесь, договоримся.

+
+
+
+ + +
+
+ Контакт +

По всем вопросам — только в ЛС. Продажи не автоматизированы, а мы и не планировали.

+

Напишите — разберём вашу ситуацию и найдём решение. По-братски.

+ + + Telegram @artemium → + + + +
+
+ + + + +
+ +
+ + + + + + + + + + diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..1dc9ef4 --- /dev/null +++ b/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://428th.com/sitemap.xml diff --git a/scripts/build.py b/scripts/build.py new file mode 100644 index 0000000..23a2bae --- /dev/null +++ b/scripts/build.py @@ -0,0 +1,370 @@ +#!/usr/bin/env python3 +"""Build static localized HTML for 428th.com (ru / en / ua).""" + +from __future__ import annotations + +import json +import re +from pathlib import Path + +ROOT = Path(__file__).resolve().parent.parent +SRC = ROOT / "src" +DIST = ROOT +SITE = "https://428th.com" + +LOCALES = [ + { + "id": "ru", + "prefix": "", + "html_lang": "ru", + "hreflang": "ru", + "dict": "ru", + "og_locale": "ru_RU", + "label": "RU", + }, + { + "id": "en", + "prefix": "/en", + "html_lang": "en", + "hreflang": "en", + "dict": "en", + "og_locale": "en_US", + "label": "EN", + }, + { + "id": "ua", + "prefix": "/ua", + "html_lang": "uk", + "hreflang": "uk", + "dict": "uk", + "og_locale": "uk_UA", + "label": "UA", + }, +] + +PAGES = [ + { + "id": "home", + "template": "index.html", + "title_key": "meta.title", + "desc_key": "meta.description", + "path_for": lambda prefix: f"{prefix}/" if prefix else "/", + "out_for": lambda prefix: ( + DIST / "index.html" + if not prefix + else DIST / prefix.lstrip("/") / "index.html" + ), + "depth_for": lambda prefix: 0 if not prefix else 1, + }, + { + "id": "terminal", + "template": "terminal.html", + "title_key": "terminal.meta.title", + "desc_key": "terminal.meta.description", + "path_for": lambda prefix: f"{prefix}/terminal/" if prefix else "/terminal/", + "out_for": lambda prefix: ( + DIST / "terminal" / "index.html" + if not prefix + else DIST / prefix.lstrip("/") / "terminal" / "index.html" + ), + "depth_for": lambda prefix: 1 if not prefix else 2, + }, +] + + +def asset_prefix(_depth: int) -> str: + """Root-absolute assets — avoids FOUC on /terminal vs /terminal/ and deep locales.""" + return "/" + + +def t(translations: dict, dict_key: str, key: str) -> str: + value = translations.get(dict_key, {}).get(key) + if value is None: + value = translations.get("ru", {}).get(key, "") + return value + + +def localize_urls(html: str, prefix: str) -> str: + if not prefix: + return html + + html = re.sub( + r'href="/terminal/?"', + f'href="{prefix}/terminal/"', + html, + ) + html = re.sub( + r'href="/#([^"]*)"', + lambda m: f'href="{prefix}/#{m.group(1)}"', + html, + ) + return html + + +def fill_i18n(html: str, translations: dict, dict_key: str) -> str: + def repl_el(match: re.Match) -> str: + open_tag, key, close = match.group(1), match.group(2), match.group(4) + open_tag = re.sub(r'\sdata-i18n="[^"]+"', "", open_tag) + return f"{open_tag}{t(translations, dict_key, key)}{close}" + + html = re.sub( + r'(<\w+\b[^>]*\sdata-i18n="([^"]+)"[^>]*>)(.*?)()', + repl_el, + html, + flags=re.DOTALL, + ) + + def repl_placeholder(match: re.Match) -> str: + before, key, after = match.group(1), match.group(2), match.group(3) + value = esc_attr(t(translations, dict_key, key)) + return f'{before}placeholder="{value}"{after}' + + html = re.sub( + r'(\s)data-i18n-placeholder="([^"]+)"([^>]*>)', + repl_placeholder, + html, + ) + + def repl_aria(match: re.Match) -> str: + before, key, after = match.group(1), match.group(2), match.group(3) + value = esc_attr(t(translations, dict_key, key)) + after = re.sub(r'\saria-label="[^"]*"', "", after) + before = re.sub(r'\saria-label="[^"]*"', "", before) + return f'{before} aria-label="{value}"{after}' + + html = re.sub( + r'(<\w+\b[^>]*)\sdata-i18n-aria="([^"]+)"([^>]*>)', + repl_aria, + html, + ) + return html + + +def page_url(locale: dict, page: dict) -> str: + return SITE + page["path_for"](locale["prefix"]) + + +def alternate_links(page: dict) -> str: + lines = [] + for loc in LOCALES: + lines.append( + f'' + ) + lines.append( + f'' + ) + return "\n".join(lines) + + +def lang_switch(locale: dict, page: dict) -> str: + parts = [] + order = ["en", "ua", "ru"] + by_id = {loc["id"]: loc for loc in LOCALES} + for i, lid in enumerate(order): + loc = by_id[lid] + href = page["path_for"](loc["prefix"]) + active = ' class="active"' if loc["id"] == locale["id"] else "" + aria = ' aria-current="page"' if loc["id"] == locale["id"] else "" + parts.append( + f'{loc["label"]}' + ) + if i < len(order) - 1: + parts.append(" //") + return "\n ".join(parts) + + +def esc_attr(value: str) -> str: + return ( + value.replace("&", "&") + .replace('"', """) + .replace("<", "<") + .replace(">", ">") + ) + + +def head_meta(locale: dict, page: dict, translations: dict) -> str: + title = t(translations, locale["dict"], page["title_key"]) + desc = t(translations, locale["dict"], page["desc_key"]) + url = page_url(locale, page) + return f"""{title} + + + +{alternate_links(page)} + + + + + + + + + + + + + + + + +""" + + +LANG_REDIRECT_SCRIPT = r"""""" + + +THEME_SCRIPT = """""" + + +def home_href(locale: dict) -> str: + return f"{locale['prefix']}/" if locale["prefix"] else "/" + + +def terminal_href(locale: dict) -> str: + return f"{locale['prefix']}/terminal/" if locale["prefix"] else "/terminal/" + + +def build_page(locale: dict, page: dict, translations: dict, template: str) -> str: + prefix = locale["prefix"] + depth = page["depth_for"](prefix) + assets = asset_prefix(depth) + + html = template + html = html.replace("{{HTML_LANG}}", locale["html_lang"]) + html = html.replace("{{PAGE_LANG}}", locale["id"]) + html = html.replace("{{HEAD_META}}", head_meta(locale, page, translations)) + html = html.replace("{{THEME_SCRIPT}}", THEME_SCRIPT) + html = html.replace("{{LANG_REDIRECT_SCRIPT}}", LANG_REDIRECT_SCRIPT) + html = html.replace("{{HOME_HREF}}", home_href(locale)) + html = html.replace("{{TERMINAL_HREF}}", terminal_href(locale)) + html = html.replace("{{ASSET_PREFIX}}", assets) + + html = html.replace( + "{{FORM_STATUS_LOADING}}", + esc_attr(t(translations, locale["dict"], "form.statusLoading")), + ) + html = html.replace( + "{{FORM_STATUS_SUCCESS}}", + esc_attr(t(translations, locale["dict"], "form.statusSuccess")), + ) + + html = fill_i18n(html, translations, locale["dict"]) + html = localize_urls(html, prefix) + # After localize_urls so RU /terminal/ in the switch is not rewritten to /en/terminal/ + html = html.replace("{{LANG_SWITCH}}", lang_switch(locale, page)) + return html + + +def write_sitemap() -> None: + urls = [] + for page in PAGES: + for loc in LOCALES: + loc_url = page_url(loc, page) + if page["id"] == "home" and loc["id"] == "ru": + priority = "1.0" + elif page["id"] == "home" or loc["id"] == "ru": + priority = "0.9" + else: + priority = "0.8" + urls.append( + f""" + {loc_url} + weekly + {priority} + """ + ) + content = ( + '\n' + '\n' + + "\n".join(urls) + + "\n\n" + ) + (DIST / "sitemap.xml").write_text(content, encoding="utf-8") + + +def main() -> None: + translations = json.loads((SRC / "translations.json").read_text(encoding="utf-8")) + templates = { + "index.html": (SRC / "index.html").read_text(encoding="utf-8"), + "terminal.html": (SRC / "terminal.html").read_text(encoding="utf-8"), + } + + for page in PAGES: + for loc in LOCALES: + out = page["out_for"](loc["prefix"]) + out.parent.mkdir(parents=True, exist_ok=True) + html = build_page(loc, page, translations, templates[page["template"]]) + out.write_text(html, encoding="utf-8") + print(f"wrote {out.relative_to(DIST)}") + + write_sitemap() + print("wrote sitemap.xml") + print("build ok") + + +if __name__ == "__main__": + main() diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..f82e54f --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,33 @@ + + + + https://428th.com/ + weekly + 1.0 + + + https://428th.com/en/ + weekly + 0.9 + + + https://428th.com/ua/ + weekly + 0.9 + + + https://428th.com/terminal/ + weekly + 0.9 + + + https://428th.com/en/terminal/ + weekly + 0.8 + + + https://428th.com/ua/terminal/ + weekly + 0.8 + + diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..9c55e22 --- /dev/null +++ b/src/index.html @@ -0,0 +1,333 @@ + + + + + +{{HEAD_META}} +{{THEME_SCRIPT}} +{{LANG_REDIRECT_SCRIPT}} + + + + + + +
+ +
+
+
+
+
+

428th

+

+
+
+
+ + +
+
+ +
+ + +
+
+ +

+

+ +
+
+

+
    +
  • +
  • +
+
+
+

+
    +
  • +
  • +
  • +
  • +
+
+
+

+
    +
  • +
  • +
  • +
+
+
+
+
+ + +
+
+ +

+

+ +
    +
  1. 01

  2. +
  3. 02

  4. +
  5. 03

  6. +
  7. 04

  8. +
  9. 05

  10. +
+ +
+ + + +
    +
  • +
  • +
  • +
  • +
+
+
+
+ + +
+
+ +

+

+ +
+
+

+
    +
  • +
  • +
  • +
+
+
+

+
    +
  • +
  • +
  • +
+
+
+ +
+

+
+
+
+ + +
+
+ +

+

+ +
    +
  1. 01

  2. +
  3. 02

  4. +
  5. 03

  6. +
+ +
+

+
+
+
+ + +
+
+ +

+

+ +
    +
  1. 01

  2. +
  3. 02

  4. +
  5. 03

  6. +
  7. 04

  8. +
+ +
+

+ + +

+
+
+
+ + +
+
+ +

+

+ +
+
+

+
    +
  • +
  • +
  • +
+
+
+

+
    +
  • +
  • +
  • +
+
+
+ +
+

+

+
+
+
+ + +
+
+ +

+

+ +
    +
  1. 01

  2. +
  3. 02

  4. +
  5. 03

  6. +
  7. 04

  8. +
  9. 05

  10. +
  11. 06

  12. +
+ +
+

+
+
+
+ + +
+
+ +

+

+ + + → + + + +
+
+ + + + +
+ +
+ + + + + + + + + + diff --git a/src/terminal.html b/src/terminal.html new file mode 100644 index 0000000..f53d854 --- /dev/null +++ b/src/terminal.html @@ -0,0 +1,211 @@ + + + + + +{{HEAD_META}} +{{THEME_SCRIPT}} +{{LANG_REDIRECT_SCRIPT}} + + + + + + +
+ +
+
+
+
+

428thTerminal

+
+
+ + +
+
+ +
+ + +
+
+ +

+

+ +
+
+

+
    +
  • +
  • +
  • +
+
+
+

+
    +
  • +
  • +
  • +
+
+
+ +
+

+
+ +
    +
  1. 01

  2. +
  3. 02

  4. +
  5. 03

  6. +
  7. 04

  8. +
+ +

+ +
    +
  • +
  • +
  • +
  • +
+ +
+

+
+
+
+ + +
+
+ +

+

+ +
    +
  • +
  • +
  • +
  • +
  • +
+ +
+

+
+ +
    +
  1. 01

  2. +
  3. 02

  4. +
  5. 03

  6. +
  7. 04

  8. +
+
+
+ + +
+
+ +

+

+ + + → + + + +
+
+ + + + +
+ +
+ + + + + + + + + + diff --git a/src/translations.json b/src/translations.json new file mode 100644 index 0000000..c2f2e85 --- /dev/null +++ b/src/translations.json @@ -0,0 +1,461 @@ +{ + "ru": { + "meta.title": "428th // Crypto · Trading · Wealth Management", + "meta.description": "428th — крипто-трейдинг, обучение, копитрейдинг и автотрейдинг по TradingView. Часть команды SIMPLE CRYPTO с 2018 года.", + "hero.tagline": "Crypto // Trading // Wealth Management", + "nav.about": "Кто мы", + "nav.premium": "Premium", + "nav.education": "Обучение", + "nav.copytrade": "Копитрейдинг", + "nav.autotrade": "Автотрейдинг", + "nav.fund": "Фонд", + "nav.streams": "Стримы для админов", + "nav.contact": "Написать в ЛС →", + "about.eyebrow": "Кто мы", + "about.title": "428th — часть команды SIMPLE CRYPTO", + "about.lead": "Объединены идеей эффективного управления капиталом. С 2018 года работаем с крипто-активами. Своими решениями делимся с уважаемыми подписчиками. С неуважаемыми — не делимся.", + "about.person1.name": "Артемий", + "about.person1.skill1": "Ручной и алгоритмический трейдинг", + "about.person1.skill2": "Автоматизация", + "about.person2.name": "Иван", + "about.person2.skill1": "Фундаментальный анализ и макроэкономика", + "about.person2.skill2": "Рынок предсказаний (Polymarket)", + "about.person2.skill3": "Инвестиции в ценность", + "about.person2.skill4": "Позиционная торговля классических рынков", + "about.person3.name": "Андрей", + "about.person3.skill1": "DeFi", + "about.person3.skill2": "Retro", + "about.person3.skill3": "Betting", + "premium.eyebrow": "Premium", + "premium.title": "Работа в команде", + "premium.lead": "Закрытый чат, разделённый на темы, в котором мы общаемся с вами лично.", + "premium.item1": "Каждый день — конференция или технический видео-обзор рынка Crypto + TradFi. Текущая ситуация, ожидания, поиск сетапов, расстановка ориентиров. По возможности торговля Золотом и Серебром на секундных графиках онлайн на созвонах.", + "premium.item2": "24/7 трендовые сетапы от авторских алгоритмов по таймфреймам 15 мин и 6ч. Чёткий вход, стоп, тейк и график.", + "premium.item3": "Ответы на вопросы, разборы торговых систем и фишек.", + "premium.item4": "Фундаментальный разбор рынков и активов.", + "premium.item5": "Рекомендации по направлениям Retro, DeFi, Polymarket.", + "premium.entryLabel": "Варианты входа", + "premium.entryLabelNote": " (любой из них)", + "premium.entry1": "500$ за обучение, в подарок 12 месяцев подписки на Premium. Нам просто лучше работать с теми, кто знает базу.", + "premium.entry2": "Подписка 50$/мес. Не хотите учиться — доплата за лень.", + "premium.entry3": "Подключённый копитрейдинг BingX на депозит $3 000+. Топовый вариант для тех, кто уже доверяет.", + "premium.entry4": "Оборот криптой на партнёрском аккаунте Bybit или BingX на $500k+/мес. Для китов все двери открыты.", + "education.eyebrow": "Обучение", + "education.title": "Авторский курс по трейдингу", + "education.lead": "По каждой теме — текстовая лекция и видео-практика. 1-1.5 месяца в свободном режиме. Уроки по 20 минут в среднем. Цена 500$.", + "education.includesTitle": "Что входит", + "education.includes1": "Бессрочный доступ в чат учеников, обновления курса, конференции, авторские индикаторы", + "education.includes2": "Все стили торговли: интрадей, среднесрок, портфель", + "education.includes3": "Поддержка от нас и учеников прошлых потоков", + "education.methodsTitle": "Методы", + "education.method1": "Классический ТА + PA + VSA + LRA + SM", + "education.method2": "Проверенные тонкости распространённых методов анализа", + "education.method3": "Новые подходы и стратегии по мере изучения и отработки", + "education.note": "Волнового анализа (EWA) сейчас нет — это следующий уровень. Торговать нормально и без него. По желанию — опирайтесь на наши разметки.", + "copytrade.eyebrow": "Копитрейдинг на BingX", + "copytrade.title": "Полуавтоматическая торговля", + "copytrade.lead": "Артемий вместе с ботами торгует на двух фьючерсных мастер-аккаунтах — краткосрок и среднесрок. Кнопка бабло!", + "copytrade.item1": "Два мастер-аккаунта: краткосрочная и среднесрочная торговля на фьючерсах.", + "copytrade.item2": "Доступно только для рефералов BingX. Открывает возможность бесплатного входа в Premium.", + "copytrade.item3": "Подключайтесь, если готовы к эксперименту или доверяете нам примерно как себе — или сильнее.", + "copytrade.note": "Статистики пока мало и она ничего не даёт — техническое решение только запущено. Подключайтесь осознанно.", + "autotrade.eyebrow": "Автотрейдинг // Terminal", + "autotrade.title": "Автоматизация по индикаторам TradingView", + "autotrade.lead": "Есть рабочий индикатор, на вид офигенный, но работать руками — дичь? Подключайте сигналы и наблюдайте за торговлей.", + "autotrade.item1": "Регистрируетесь, подключаете по API аккаунт на BingX, ByBit или MEXC. Нужно быть нашим рефералом или дать денег.", + "autotrade.item2": "Модифицируете скрипт под наши webhook. Это не страшно.", + "autotrade.item3": "Настраиваете алерты, кайфуете. Бот не сломается, даже если вы будете торговать вместе с ним и менять его позиции руками.", + "autotrade.item4": "Вы не особо программист? Мы поможем переписать скрипт и подключиться — бесплатно.", + "autotrade.more": "Подробнее про 428th Terminal —", + "autotrade.moreLink": "на этой странице.", + "fund.eyebrow": "Фонд", + "fund.badge": "Закрыт для новых участников (сори, инвестиции пока в минусе)", + "fund.title": "Multi-family office", + "fund.lead": "Для тех, кто хочет быть в крипто-тренде и получать доход от капитала — без самостоятельной работы с рынком.", + "fund.selfTitle": "Для самостоятельного управления нужно", + "fund.self1": "Время на постоянное наблюдение за рынком", + "fund.self2": "База для системного анализа", + "fund.self3": "Опыт безопасной работы с блокчейнами", + "fund.trustTitle": "Как вариант — доверить всё нам", + "fund.trust1": "Планирование и распределение капитала", + "fund.trust2": "Управление позициями", + "fund.trust3": "Отчётность и выплаты", + "fund.note1": "Если работаете с рынком своей головой и руками — это лучший подход, мы его поддерживаем максимально.", + "fund.note2": "Если нет — мы предоставляем доступ к крипто-доходности без погружения в каждое действие.", + "streams.eyebrow": "Стримы крипто-админов", + "streams.title": "Сервис admins.stream", + "streams.lead": "Админы собираются вместе, чтобы провести конференцию для подписчиков и обменяться трафиком. Можно подключить спонсоров.", + "streams.item1": "Собираем группу админов, фиксируем темы выступлений, дату стрима, расписание постов-анонсов, призы.", + "streams.item2": "Админы выпускают посты-анонсы, люди регистрируются в тг-боте. Им нужно подписаться на каждого админа.", + "streams.item3": "Все зрители фиксируются в базе, кто откуда пришёл и всё такое. Кто нальёт ботов — прибью. Но мы подготовились: капчи в боте, капчи на стриме.", + "streams.item4": "Проводим конференцию — админы на созвоне, а зрители смотрят стрим и могут пообщаться в чате трансляции.", + "streams.item5": "Среди тех, кто пришёл на конференцию (у всех индивидуальная ссылка), разыгрываются выбранные призы.", + "streams.item6": "Админы довольны живым заинтересованным трафиком, подписчики радуются качественному контенту и наградам.", + "streams.cta": "Интересно? Обращайтесь, договоримся.", + "contact.eyebrow": "Контакт", + "contact.text1": "По всем вопросам — только в ЛС. Продажи не автоматизированы, а мы и не планировали.", + "contact.text2": "Напишите — разберём вашу ситуацию и найдём решение. По-братски.", + "contact.telegramLabel": "Telegram @artemium", + "contact.anonForm": "Хотите анонимно? Вот форма для связи", + "footer.channelsTitle": "Наши каналы", + "footer.workChat": "рабочий чат", + "footer.refTitle": "Рефералки с лучшими условиями", + "footer.refBingx": "Любимая криптобиржа", + "footer.refBybit": "Топовый TradFi на", + "form.title": "Форма для связи", + "form.nameLabel": "Имя", + "form.methodLabel": "Способ связи", + "form.methodPlaceholder": "Telegram @username, Email, WhatsApp...", + "form.messageLabel": "Сообщение", + "form.submit": "Отправить", + "form.statusLoading": "...", + "form.statusSuccess": "Отправлено ✓", + "a11y.toggleTheme": "Переключить тему", + "a11y.sections": "Разделы", + "terminal.meta.title": "428th Terminal — автотрейдинг по TradingView сигналам", + "terminal.meta.description": "428th Terminal — автотрейдинг по сигналам TradingView на BingX, Bybit и MEXC. Автоматическое открытие позиций со стопом и тейком.", + "terminal.nav.functionality": "Функционал", + "terminal.nav.pricing": "Цены", + "terminal.func.eyebrow": "Функционал", + "terminal.func.title": "Связать TradingView индикатор с биржей", + "terminal.func.lead": "В общем, это главное, для чего мы сделали терминал. Предположим, у вас или у кого-то есть крутой индикатор:", + "terminal.func.manualTitle": "Торговать по сигналам руками", + "terminal.func.manual1": "Надо сидеть 24/7 у компа или телефона", + "terminal.func.manual2": "Легко пропустить сигнал", + "terminal.func.manual3": "Можно не успеть войти", + "terminal.func.terminalTitle": "Подключить к терминалу", + "terminal.func.terminal1": "Позиция откроется автоматически", + "terminal.func.terminal2": "Сразу поставит стоп и тейк", + "terminal.func.terminal3": "Если нужно, делайте с ней руками что угодно", + "terminal.func.note1": "Смысл в том, чтобы автоматизировать торговлю по индикатору, который вам нравится.", + "terminal.func.step1": "Регистрируетесь, подключаете по API аккаунт на BingX, ByBit или MEXC. Нужно быть нашим рефералом или дать денег.", + "terminal.func.step2": "Модифицируете скрипт под наши Webhook. Это не страшно.", + "terminal.func.step3": "Настраиваете алерты, кайфуете. Бот не сломается, даже если вы будете торговать вместе с ним и менять его позиции руками.", + "terminal.func.step4": "Вы не особо программист? Мы поможем переписать скрипт и подключиться — бесплатно.", + "terminal.func.lead2": "Изначально мы делали терминал для автотрейдинга по своим индикаторам. Поэтому он делает ровно то, что нам нужно:", + "terminal.func.feature1": "Принимает Webhook c TradingView.", + "terminal.func.feature2": "Реализует на его основе позицию на BingX, ByBit или MEXC.", + "terminal.func.feature3": "Принимает ручные правки: на бирже позицию можно закрыть, сократить, подвинуть стоп или тейк.", + "terminal.func.feature4": "Показывает торговую статистику.", + "terminal.func.note2": "Теперь мы придумываем и добавляем новые функции. Если что-то хотите — напишите в лс.", + "terminal.price.eyebrow": "Цены", + "terminal.price.title": "Это самое смешное", + "terminal.price.lead": "Работайте бесплатно, если ваш аккаунт — наш реферал. Если нет — будет дорого :(", + "terminal.price.item1": "Мы не смогли придумать вариант оплаты, который удобнее, чем биржевая партнерская система.", + "terminal.price.item2": "Если вам очень важно торговать без нашей рефералки, значит вам и так пофиг сколько платить.", + "terminal.price.item3": "Цена за прямую оплату сервиса — $500 в месяц за каждый API ключ.", + "terminal.price.item4": "Напомним, за торговлю на реферальном аккаунте платить не нужно. Нам хватит бонусов от ваших комиссий.", + "terminal.price.item5": "А если вы инфлюенсер и партнер выбранной для работы биржи — напишите в лс, договоримся.", + "terminal.price.note": "Быть нашим рефералом — круто в любом случае.", + "terminal.price.step1": "При обороте криптой $500k+ в месяц вы станете участником Premium группы бесплатно. Больше инфы — здесь.", + "terminal.price.step2": "Ваша комиссия за торговлю станет ниже на 30-50%, а если вы вообще кит, то договоримся на кешбеки.", + "terminal.price.step3": "Ваши вопросы или проблемы с биржей можно решить через нас и быстро. Особенно на BingX, там братья вообще.", + "terminal.price.step4": "Минусы? Их нет. А ссылки для регистрации — внизу страницы." + }, + "uk": { + "meta.title": "428th // Crypto · Trading · Wealth Management", + "meta.description": "428th — крипто-трейдинг, навчання, копітрейдинг і автотрейдинг за TradingView. Частина команди SIMPLE CRYPTO з 2018 року.", + "hero.tagline": "Crypto // Trading // Wealth Management", + "nav.about": "Хто ми", + "nav.premium": "Premium", + "nav.education": "Навчання", + "nav.copytrade": "Копітрейдинг", + "nav.autotrade": "Автотрейдинг", + "nav.fund": "Фонд", + "nav.streams": "Стріми для адмінів", + "nav.contact": "Написати в ЛС →", + "about.eyebrow": "Хто ми", + "about.title": "428th — частина команди SIMPLE CRYPTO", + "about.lead": "Об'єднані ідеєю ефективного управління капіталом. З 2018 року працюємо з крипто-активами. Своїми рішеннями ділимося з шанобливими підписниками. З нешанобливими — не ділимося.", + "about.person1.name": "Артемій", + "about.person1.skill1": "Ручний та алгоритмічний трейдинг", + "about.person1.skill2": "Автоматизація", + "about.person2.name": "Іван", + "about.person2.skill1": "Фундаментальний аналіз і макроекономіка", + "about.person2.skill2": "Ринок передбачень (Polymarket)", + "about.person2.skill3": "Інвестиції в цінність", + "about.person2.skill4": "Позиційна торгівля класичних ринків", + "about.person3.name": "Андрій", + "about.person3.skill1": "DeFi", + "about.person3.skill2": "Retro", + "about.person3.skill3": "Betting", + "premium.eyebrow": "Premium", + "premium.title": "Робота в команді", + "premium.lead": "Закритий чат, розділений на теми, в якому ми спілкуємося з вами особисто. Але в основному російською, такі вже виросли.", + "premium.item1": "Щодня — конференція або технічний відео-огляд ринку Crypto + TradFi. Поточна ситуація, очікування, пошук сетапів, розстановка орієнтирів. За можливості торгівля Золотом і Сріблом на секундних графіках онлайн на дзвінках.", + "premium.item2": "24/7 трендові сетапи від авторських алгоритмів за таймфреймами 15 хв і 6 год. Чіткий вхід, стоп, тейк і графік.", + "premium.item3": "Відповіді на питання, розбори торгових систем і фішок.", + "premium.item4": "Фундаментальний розбір ринків і активів.", + "premium.item5": "Рекомендації щодо напрямків Retro, DeFi, Polymarket.", + "premium.entryLabel": "Варіанти входу", + "premium.entryLabelNote": " (будь-який з них)", + "premium.entry1": "500$ за навчання, у подарунок 12 місяців підписки на Premium. Нам просто краще працювати з тими, хто знає базу.", + "premium.entry2": "Підписка 50$/міс. Не хочете вчитися — доплата за лінь.", + "premium.entry3": "Підключений копітрейдинг BingX на депозит $3 000+. Топовий варіант для тих, хто вже довіряє.", + "premium.entry4": "Оборот криптою на партнерському акаунті Bybit або BingX на $500k+/міс. Для китів усі двері відкриті.", + "education.eyebrow": "Навчання", + "education.title": "Авторський курс з трейдингу", + "education.lead": "За кожною темою — текстова лекція і відео-практика. 1–1,5 місяці у вільному режимі. Уроки по 20 хвилин в середньому. Ціна 500$.", + "education.includesTitle": "Що входить", + "education.includes1": "Безстроковий доступ у чат учнів, оновлення курсу, конференції, авторські індикатори", + "education.includes2": "Усі стилі торгівлі: інтрадей, середньострок, портфель", + "education.includes3": "Підтримка від нас і учнів минулих потоків", + "education.methodsTitle": "Методи", + "education.method1": "Класичний ТА + PA + VSA + LRA + SM", + "education.method2": "Перевірені тонкощі поширених методів аналізу", + "education.method3": "Нові підходи і стратегії в міру вивчення та відпрацювання", + "education.note": "Теорії хвиль Елліота (EWA) зараз немає — це наступний рівень. Торгувати нормально можна і без нього. За бажанням — спирайтеся на наші розмітки.", + "copytrade.eyebrow": "Копітрейдинг на BingX", + "copytrade.title": "Напівавтоматична торгівля", + "copytrade.lead": "Артемій разом із ботами торгує на двох ф'ючерсних мастер-акаунтах — короткострок і середньострок. Кнопка бабло!", + "copytrade.item1": "Два мастер-акаунти: короткострокова і середньострокова торгівля на ф'ючерсах.", + "copytrade.item2": "Доступно лише для рефералів BingX. Відкриває можливість безкоштовного входу в Premium.", + "copytrade.item3": "Підключайтеся, якщо готові до експерименту або довіряєте нам приблизно як собі — або сильніше.", + "copytrade.note": "Статистики поки мало і вона нічого не дає — технічне рішення лише нещодавно почало працювати. Підключайтеся усвідомлено.", + "autotrade.eyebrow": "Автотрейдинг // Terminal", + "autotrade.title": "Автоматизація за індикаторами TradingView", + "autotrade.lead": "Є робочий індикатор, на вигляд офігенний, але працювати руками — дич? Підключайте сигнали і спостерігайте за торгівлею.", + "autotrade.item1": "Реєструєтеся, підключаєте по API акаунт на BingX, ByBit або MEXC. Потрібно бути нашим рефералом або дати гроші.", + "autotrade.item2": "Модифікуєте скрипт під наші webhook. Це не страшно.", + "autotrade.item3": "Налаштовуєте алерти, кайфуєте. Бот не зламається, навіть якщо ви будете торгувати разом із ним і змінювати його позиції руками.", + "autotrade.item4": "Ви не особливо програміст? Ми допоможемо переписати скрипт і підключитися — безкоштовно.", + "autotrade.more": "Детальніше про 428th Terminal —", + "autotrade.moreLink": "на цій сторінці.", + "fund.eyebrow": "Фонд", + "fund.badge": "Закритий для нових учасників (сорі, інвестиції поки в мінусі)", + "fund.title": "Multi-family office", + "fund.lead": "Для тих, хто хоче бути в крипто-тренді і отримувати дохід від капіталу — без самостійної роботи з ринком.", + "fund.selfTitle": "Для самостійного управління потрібно", + "fund.self1": "Час на постійне спостереження за ринком", + "fund.self2": "База для системного аналізу", + "fund.self3": "Досвід безпечної роботи з блокчейнами", + "fund.trustTitle": "Як варіант — довірити все нам", + "fund.trust1": "Планування і розподіл капіталу", + "fund.trust2": "Управління позиціями", + "fund.trust3": "Звітність і виплати", + "fund.note1": "Якщо працюєте з ринком своєю головою і руками — це найкращий підхід, ми його підтримуємо максимально.", + "fund.note2": "Якщо ні — ми надаємо доступ до крипто-доходності без занурення в кожну дію.", + "streams.eyebrow": "Стріми крипто-адмінів", + "streams.title": "Сервіс admins.stream", + "streams.lead": "Адміни збираються разом, щоб провести конференцію для підписників і обмінятися трафіком. Можна підключити спонсорів.", + "streams.item1": "Збираємо групу адмінів, фіксуємо теми виступів, дату стріму, розклад постів-анонсів, призи.", + "streams.item2": "Адміни випускають пости-анонси, люди реєструються в тг-боті. Їм потрібно підписатися на кожного адміна.", + "streams.item3": "Усі глядачі фіксуються в базі, хто звідки прийшов і все таке. Хто нальє ботів — приб'ю. Але ми підготувалися: капчі в боті, капчі на стрімі.", + "streams.item4": "Проводимо конференцію — адміни на дзвінку, а глядачі дивляться стрім і можуть поспілкуватися в чаті трансляції.", + "streams.item5": "Серед тих, хто прийшов на конференцію (у всіх індивідуальне посилання), розігруються обрані призи.", + "streams.item6": "Адміни задоволені живим зацікавленим трафіком, підписники радіють якісному контенту і нагородам.", + "streams.cta": "Цікаво? Звертайтеся, домовимося.", + "contact.eyebrow": "Контакт", + "contact.text1": "З усіх питань — лише в ЛС. Продажі не автоматизовані, а ми й не планували.", + "contact.text2": "Напишіть — розберемо вашу ситуацію і знайдемо рішення. По-братськи.", + "contact.telegramLabel": "Telegram @artemium", + "contact.anonForm": "Хочете анонімно? Ось форма для зв'язку", + "footer.channelsTitle": "Наші канали", + "footer.workChat": "робочий чат", + "footer.refTitle": "Рефералки з найкращими умовами", + "footer.refBingx": "Улюблена криптобіржа", + "footer.refBybit": "Топовий TradFi на", + "form.title": "Форма для зв'язку", + "form.nameLabel": "Ім'я", + "form.methodLabel": "Спосіб зв'язку", + "form.methodPlaceholder": "Telegram @username, Email, WhatsApp...", + "form.messageLabel": "Повідомлення", + "form.submit": "Надіслати", + "form.statusLoading": "...", + "form.statusSuccess": "Надіслано ✓", + "a11y.toggleTheme": "Перемкнути тему", + "a11y.sections": "Розділи", + "terminal.meta.title": "428th Terminal — автотрейдинг за сигналами TradingView", + "terminal.meta.description": "428th Terminal — автотрейдинг за сигналами TradingView на BingX, Bybit і MEXC. Автоматичне відкриття позицій зі стопом і тейком.", + "terminal.nav.functionality": "Функціонал", + "terminal.nav.pricing": "Ціни", + "terminal.func.eyebrow": "Функціонал", + "terminal.func.title": "Зв'язати індикатор TradingView з біржею", + "terminal.func.lead": "Загалом, це головне, для чого ми зробили термінал. Припустимо, у вас або в когось є крутий індикатор:", + "terminal.func.manualTitle": "Торгувати за сигналами руками", + "terminal.func.manual1": "Треба сидіти 24/7 біля компа або телефона", + "terminal.func.manual2": "Легко пропустити сигнал", + "terminal.func.manual3": "Можна не встигнути увійти", + "terminal.func.terminalTitle": "Підключити до терміналу", + "terminal.func.terminal1": "Позиція відкриється автоматично", + "terminal.func.terminal2": "Одразу поставить стоп і тейк", + "terminal.func.terminal3": "Якщо треба, робіть з нею руками що завгодно", + "terminal.func.note1": "Сенс у тому, щоб автоматизувати торгівлю за індикатором, який вам подобається.", + "terminal.func.step1": "Реєструєтеся, підключаєте по API акаунт на BingX, ByBit або MEXC. Потрібно бути нашим рефералом або дати грошей.", + "terminal.func.step2": "Модифікуєте скрипт під наші Webhook. Це не страшно.", + "terminal.func.step3": "Налаштовуєте алерти, кайфуєте. Бот не зламається, навіть якщо ви будете торгувати разом із ним і змінювати його позиції руками.", + "terminal.func.step4": "Ви не те щоб програміст? Ми допоможемо переписати скрипт і підключитися — безкоштовно.", + "terminal.func.lead2": "Спочатку ми робили термінал для автотрейдингу за своїми індикаторами. Тому він робить рівно те, що нам потрібно:", + "terminal.func.feature1": "Приймає Webhook з TradingView.", + "terminal.func.feature2": "Реалізує на його основі позицію на BingX, ByBit або MEXC.", + "terminal.func.feature3": "Приймає ручні правки: на біржі позицію можна закрити, скоротити, посунути стоп або тейк.", + "terminal.func.feature4": "Показує торгову статистику.", + "terminal.func.note2": "Тепер ми придумуємо і додаємо нові функції. Якщо щось хочете — напишіть в лс.", + "terminal.price.eyebrow": "Ціни", + "terminal.price.title": "Це смішне", + "terminal.price.lead": "Працюйте безкоштовно, якщо ваш акаунт — наш реферал. Якщо ні — буде дорого :(", + "terminal.price.item1": "Ми не змогли придумати варіант оплати, який зручніший за біржову партнерську систему.", + "terminal.price.item2": "Якщо вам дуже важливо торгувати без нашої рефералки, значить вам і так байдуже скільки платити.", + "terminal.price.item3": "Ціна за пряму оплату сервісу — $500 на місяць за кожен API ключ.", + "terminal.price.item4": "Нагадаємо, за торгівлю на реферальному акаунті платити не потрібно. Нам вистачить бонусів від ваших комісій.", + "terminal.price.item5": "А якщо ви інфлюенсер і партнер обраної для роботи біржі — напишіть в лс, домовимося.", + "terminal.price.note": "Бути нашим рефералом — круто в будь-якому випадку.", + "terminal.price.step1": "При обороті криптою $500k+ на місяць ви станете учасником Premium групи безкоштовно. Більше інфи — тут.", + "terminal.price.step2": "Ваша комісія за торгівлю стане нижчою на 30-50%, а якщо ви взагалі кит, то домовимося ще й на кешбеки.", + "terminal.price.step3": "Ваші питання або проблеми з біржею можна вирішити через нас і швидко. Особливо на BingX, там братани взагалі.", + "terminal.price.step4": "Мінуси? Їх немає. А посилання для реєстрації — внизу сторінки." + }, + "en": { + "meta.title": "428th // Crypto · Trading · Wealth Management", + "meta.description": "428th — crypto trading, education, copy trading and TradingView auto-trading. Part of the SIMPLE CRYPTO team since 2018.", + "hero.tagline": "Crypto // Trading // Wealth Management", + "nav.about": "About", + "nav.premium": "Premium", + "nav.education": "Education", + "nav.copytrade": "Copy Trading", + "nav.autotrade": "Auto Trading", + "nav.fund": "Fund", + "nav.streams": "Streams for Admins", + "nav.contact": "DM us →", + "about.eyebrow": "About", + "about.title": "428th — part of the SIMPLE CRYPTO team", + "about.lead": "United by the idea of effective capital management. We've been working with crypto assets since 2018. We share our decisions with subscribers who respects. With those who don't — we don't.", + "about.person1.name": "Artemiy", + "about.person1.skill1": "Manual and algorithmic trading", + "about.person1.skill2": "Automation", + "about.person2.name": "Ivan", + "about.person2.skill1": "Fundamental analysis and macroeconomics", + "about.person2.skill2": "Prediction markets (Polymarket)", + "about.person2.skill3": "Value investing", + "about.person2.skill4": "Position trading on traditional markets", + "about.person3.name": "Andrey", + "about.person3.skill1": "DeFi", + "about.person3.skill2": "Retro", + "about.person3.skill3": "Betting", + "premium.eyebrow": "Premium", + "premium.title": "Working together as the team", + "premium.lead": "A private chat split into topics where we communicate with our members personally. UKR/RU mostly.", + "premium.item1": "Every day — a conference call or technical video market review for Crypto + TradFi. Current situation, expectations, setup hunting, key levels. When possible, live Gold and Silver trading on seconds charts during calls.", + "premium.item2": "24/7 trend setups from proprietary algorithms on 15-min and 6h timeframes. Clear entry, stop, take-profit, and chart.", + "premium.item3": "Q&A, breakdowns of trading systems and tricks.", + "premium.item4": "Fundamental analysis of markets and assets.", + "premium.item5": "Recommendations on Retro, DeFi, and Polymarket.", + "premium.entryLabel": "Ways to join", + "premium.entryLabelNote": " (any of these)", + "premium.entry1": "$500 for the educational course, with 12 months of Premium included. It's just easier for us to work with people who know the basics.", + "premium.entry2": "$50/month subscription. Don't want to learn — pay extra for laziness.", + "premium.entry3": "Connected BingX copy trading with a $3,000+ deposit. The top option for those who already trust us.", + "premium.entry4": "$500k+/month crypto volume on a partner Bybit or BingX account. For whales, all doors are open.", + "education.eyebrow": "Education", + "education.title": "Author's trading course", + "education.lead": "Each topic includes a text lecture and video practice. 1–1.5 months at your own pace. Lessons average 20 minutes. Price: $500.", + "education.includesTitle": "What's included", + "education.includes1": "Lifetime access to the student chat, course updates, conferences, proprietary indicators", + "education.includes2": "All trading styles: intraday, medium-term, portfolio", + "education.includes3": "Support from us and students from past cohorts", + "education.methodsTitle": "Methods", + "education.method1": "Classic TA + PA + VSA + LRA + SM", + "education.method2": "Proven nuances of common analysis methods", + "education.method3": "New approaches and strategies as you study and practice", + "education.note": "Elliott Wave Analysis (EWA) isn't included yet — that's the next level. You can trade just fine without it. If you want, use our wave markings.", + "copytrade.eyebrow": "Copy Trading on BingX", + "copytrade.title": "Semi-automated trading", + "copytrade.lead": "Artemiy trades alongside bots on two futures master accounts — short-term and medium-term. Easy money button!", + "copytrade.item1": "Two master accounts: short-term and medium-term futures trading.", + "copytrade.item2": "Available only for BingX referrals. Unlocks free Premium access.", + "copytrade.item3": "Connect if you're ready to experiment or trust us about as much as yourself — or more.", + "copytrade.note": "There's little stats so far and it doesn't mean much — the tech solution was just launched. Connect consciously.", + "autotrade.eyebrow": "Auto Trading // Terminal", + "autotrade.title": "Automation via TradingView indicators", + "autotrade.lead": "Got a working indicator that looks awesome but trading it manually is madness? Connect signals and watch it trade.", + "autotrade.item1": "Sign up, connect your BingX, ByBit, or MEXC account via API. You need to be our referral or pay up.", + "autotrade.item2": "Modify your script for our webhooks. It's not scary.", + "autotrade.item3": "Set up alerts, enjoy. The bot won't break if you trade alongside it and manually adjust its positions.", + "autotrade.item4": "Not much of a programmer? We'll help rewrite the script and get you connected — for free.", + "autotrade.more": "More about 428th Terminal —", + "autotrade.moreLink": "on this page.", + "fund.eyebrow": "Fund", + "fund.badge": "Closed to new participants (sorry, investments are in the red for now)", + "fund.title": "Multi-family office", + "fund.lead": "For those who want to ride the crypto trend and earn from capital — without managing the market themselves.", + "fund.selfTitle": "To manage on your own you need", + "fund.self1": "Time for constant market monitoring", + "fund.self2": "A foundation for systematic analysis", + "fund.self3": "Experience working safely with blockchains", + "fund.trustTitle": "Alternatively — trust us with everything", + "fund.trust1": "Capital planning and allocation", + "fund.trust2": "Position management", + "fund.trust3": "Reporting and payouts", + "fund.note1": "If you work the market on your own — that's the best approach, and we support it fully.", + "fund.note2": "If not — we provide access to crypto returns without diving into every action.", + "streams.eyebrow": "Crypto Admin Streams", + "streams.title": "admins.stream service", + "streams.lead": "Admins come together to host a conference for subscribers and exchange traffic. Sponsors welcome.", + "streams.item1": "We assemble a group of admins, set talk topics, stream date, announcement posts schedule and prizes.", + "streams.item2": "Admins publish announcement posts, people register in a TG bot. They need to subscribe to each admin.", + "streams.item3": "All viewers are tracked — who came from where and all that. Anyone who floods with bots — gets banned. But we're prepared: captchas in the bot, captchas on stream.", + "streams.item4": "We run the conference — admins together on a call, and viewers watch the stream and chat in the broadcast interface.", + "streams.item5": "Among those who attended the conference (everyone gets a unique link), selected prizes are raffled off.", + "streams.item6": "Admins are happy with engaged live traffic, subscribers are happy with top-notch content and rewards.", + "streams.cta": "Interested? Reach out, let's talk.", + "contact.eyebrow": "Contact", + "contact.text1": "For all questions — DMs only. Sales aren't automated, and we never planned them to be.", + "contact.text2": "Write to us — we'll figure out your situation and find a solution. Like bros.", + "contact.telegramLabel": "Telegram @artemium", + "contact.anonForm": "Want to stay anonymous? Here's a contact form", + "footer.channelsTitle": "Our channels", + "footer.workChat": "work chat", + "footer.refTitle": "Referral links with the best terms", + "footer.refBingx": "Favorite crypto exchange", + "footer.refBybit": "Top TradFi on", + "form.title": "Contact form", + "form.nameLabel": "Name", + "form.methodLabel": "How to reach you", + "form.methodPlaceholder": "Telegram @username, Email, WhatsApp...", + "form.messageLabel": "Message", + "form.submit": "Send", + "form.statusLoading": "...", + "form.statusSuccess": "Sent ✓", + "a11y.toggleTheme": "Toggle theme", + "a11y.sections": "Sections", + "terminal.meta.title": "428th Terminal — auto trading via TradingView signals", + "terminal.meta.description": "428th Terminal — auto-trading via TradingView signals on BingX, Bybit and MEXC. Positions open automatically with stop-loss and take-profit.", + "terminal.nav.functionality": "Features", + "terminal.nav.pricing": "Pricing", + "terminal.func.eyebrow": "Features", + "terminal.func.title": "Link a TradingView indicator with an exchange", + "terminal.func.lead": "Basically, that's the main reason we built the terminal. Say you or someone else has a great indicator:", + "terminal.func.manualTitle": "Trade signals manually", + "terminal.func.manual1": "You need to sit at your computer or phone 24/7", + "terminal.func.manual2": "Easy to miss a signal", + "terminal.func.manual3": "You might not get in on time", + "terminal.func.terminalTitle": "Connect to the terminal", + "terminal.func.terminal1": "Position opens automatically", + "terminal.func.terminal2": "Stop and take-profit set right away", + "terminal.func.terminal3": "If needed, do whatever you want with it manually", + "terminal.func.note1": "The point is to automate trading with an indicator you like.", + "terminal.func.step1": "Sign up, connect your BingX, ByBit, or MEXC account via API. You need to be our referral or pay up.", + "terminal.func.step2": "Modify your script for our webhooks. It's not scary.", + "terminal.func.step3": "Set up alerts, enjoy. The bot won't break even if you trade alongside it and manually adjust its positions.", + "terminal.func.step4": "Not much of a programmer? We'll help rewrite the script and get you connected — for free.", + "terminal.func.lead2": "We originally built the terminal for auto trading with our own indicators. So it does exactly what we need:", + "terminal.func.feature1": "Accepts webhooks from TradingView.", + "terminal.func.feature2": "Opens positions on BingX, ByBit, or MEXC accordingly.", + "terminal.func.feature3": "Accepts manual edits: you can close positions, reduce their sizes, or move SL/TPs on the exchange.", + "terminal.func.feature4": "Shows trading statistics.", + "terminal.func.note2": "Now we're coming up with and adding new features. Want something? DM us.", + "terminal.price.eyebrow": "Pricing", + "terminal.price.title": "This is actually the fun part", + "terminal.price.lead": "Work for free if your account is our referral. If not — it'll be expensive :(", + "terminal.price.item1": "We couldn't come up with a payment option more convenient than the exchange partner system.", + "terminal.price.item2": "If it's really important for you to trade without our referral, you probably don't care how much you pay anyway.", + "terminal.price.item3": "Direct service payment — $500/month per API key.", + "terminal.price.item4": "Reminder: no payment needed for trading on a referral account. Your commission bonuses are enough for us.", + "terminal.price.item5": "If you're an influencer and a partner of your chosen exchange — DM us, we'll work something out.", + "terminal.price.note": "Being our referral is cool either way.", + "terminal.price.step1": "With $500k+/month in crypto volume, you get free Premium group access. More info — here.", + "terminal.price.step2": "Your trading fees drop by 30-50%, and if you're a whale, we'll arrange cashbacks.", + "terminal.price.step3": "Exchange questions or issues can be solved through us quickly. Especially on BingX — they're true bros for real.", + "terminal.price.step4": "Downsides? None. Registration links are at the bottom of the page." + } +} diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..d9e71a4 --- /dev/null +++ b/styles.css @@ -0,0 +1,726 @@ +:root{ + --bg:#FAFAFA; + --accent:#C4622A; + --heading:#1F1F1D; + --logo:#000000; + --text:#5A5A56; + --border: rgba(31,31,29,0.14); + --card-bg:#F0F0EE; + --transition: 0.35s ease; + + /* Hero animation tuning — see comments in .hero block below */ + --hero-logo-size: clamp(64px, 12vw, 140px); + --hero-tagline-ratio: calc(15 / 140); + --hero-tagline-fit: 1; + --hero-max-scale: 2.2; + --hero-max-scale-mobile: 1.6; + --hero-active-scale: var(--hero-max-scale); + --hero-scroll-runway-multiplier: 12; + --hero-brand-gap: 48px; + --hero-stage-offset: 28px; + --hero-bottom-gap: 80px; + --site-header-height: 57px; +} + +[data-theme="dark"]{ + --bg:#141412; + --accent:#C4622A; + --heading:#F2F1EE; + --logo:#FFFFFF; + --text:#B4B2AC; + --border: rgba(255,255,255,0.14); + --card-bg: rgba(255,255,255,0.04); +} + +*{box-sizing:border-box;} +html,body{margin:0;padding:0;} + +body{ + font-family:'Inter', -apple-system, sans-serif; + font-size:16px; + font-weight:300; + line-height:1.6; + background:var(--bg); + color:var(--text); + -webkit-font-smoothing:antialiased; + -moz-osx-font-smoothing:grayscale; + transition: background var(--transition), color var(--transition); + overflow-x:hidden; +} + +.container { + max-width: 1120px; + margin: 0 auto; + padding: 0 24px; + width: 100%; +} + +h1,h3,h5{ + color:var(--heading); + font-weight:600; + margin:0 0 16px; +} + +h2{ + color:var(--heading); + font-size:clamp(36px, 5vw, 56px); + font-weight:200; + line-height:1.18; + letter-spacing:-0.005em; + margin:0 0 28px; +} + +h4{ + color:var(--text); + font-weight:400; + margin:0 0 16px; +} + +a{color:var(--accent); text-decoration:none; transition:opacity var(--transition);} +a:hover{opacity:0.7;} + +.fw-400{font-weight:400;} + +/* Header */ +.site-header{ + position:sticky; top:0; z-index:50; + background:var(--bg); + border-bottom:1px solid var(--border); + transition: background var(--transition); +} +.header-inner{ + display:flex; justify-content:space-between; align-items:center; + padding-top:16px; + padding-bottom:16px; +} +.lang-switch{font-size:13px; letter-spacing:0.05em; display:flex; align-items:center; gap:6px; line-height:1; transform:translateY(1px);} +.lang-switch a{ + background:none; border:none; cursor:pointer; padding:0; margin:0; + color:var(--text); font-family:inherit; font-size:13px; font-weight:inherit; + line-height:1; display:inline-flex; align-items:center; + text-decoration:none; + transition: color var(--transition); +} +.lang-switch a.active{color:var(--accent); font-weight:500;} + +.header-actions{ + display:flex; align-items:center; gap:28px; line-height:1; +} +.home-link{ + font-size:13px; letter-spacing:0.05em; line-height:1; + color:var(--text); text-decoration:none; + font-family:inherit; font-weight:400; + display:inline-flex; align-items:center; + transform:translateY(1px); + transition: color var(--transition); +} +.home-link:hover{color:var(--accent);} + +.theme-toggle{ + background:none; border:none; cursor:pointer; padding:0; margin:0; + color:var(--heading); display:inline-flex; align-items:center; + line-height:1; +} +.theme-toggle svg{fill:none; stroke:currentColor; stroke-width:1.5; display:block;} +[data-theme="light"] .icon-moon, +[data-theme="dark"] .icon-sun{display:none;} + +/* Hero + Size: --hero-logo-size, --hero-active-scale (max render → scale down on scroll) + Motion: --hero-scroll-runway-multiplier — во сколько раз дольше скроллить (1 = как было) + Spacing: --hero-brand-gap — отступ под логотипом + --hero-stage-offset — отступ hero-stage от site-header + --hero-bottom-gap — отступ hero до следующей секции + Sticky: --site-header-height — высота шапки (JS) */ +.hero{ + --hero-max-scale:1.95; + --hero-active-scale:var(--hero-max-scale); + --hero-logo-size:clamp(60px, 11vw, 128px); + position:relative; + padding-top:var(--hero-stage-offset); + padding-bottom:var(--hero-bottom-gap); + text-align:left; +} +.hero-stage{ + position:sticky; + top:calc(var(--site-header-height) + var(--hero-stage-offset)); + z-index:1; + contain:layout style; + height:var(--hero-stage-height, auto); +} +.hero-brand{ + position:relative; + left:0; + padding-bottom:var(--hero-brand-gap); + overflow:hidden; + contain:layout style; + height:var(--hero-brand-height, auto); +} +.hero-brand-inner{ + position:absolute; + left:0; + top:0; + transform-origin:left top; + transform:translate3d(0, 0, 0) scale(var(--hero-scale, 1)); + will-change:transform; + backface-visibility:hidden; + -webkit-backface-visibility:hidden; +} +.hero-brand-lockup{ + display:inline-grid; + grid-template-columns:max-content; +} +.logo{ + font-size:var(--hero-logo-size); + font-weight:600; + color:var(--logo); + letter-spacing:-0.03em; + line-height:0.9; + margin-bottom:8px; +} +.tagline{ + font-size:calc(var(--hero-logo-size) * var(--hero-tagline-ratio) * var(--hero-tagline-fit, 1)); + letter-spacing:0.08em; + text-transform:uppercase; + color:var(--text); + margin:0; + white-space:nowrap; + width:0; + min-width:100%; +} +@media (prefers-reduced-motion: no-preference){ + .hero-brand-inner .logo{ + font-size:calc(var(--hero-logo-size) * var(--hero-active-scale)); + margin-bottom:calc(8px * var(--hero-active-scale)); + } + .hero-brand-inner .tagline{ + font-size:calc(var(--hero-logo-size) * var(--hero-tagline-ratio) * var(--hero-active-scale) * var(--hero-tagline-fit, 1)); + } +} +@media (prefers-reduced-motion: no-preference) and (max-width:600px){ + .hero-brand-inner .logo{ + font-size:var(--hero-logo-size); + margin-bottom:8px; + } + .hero-brand-inner .tagline{ + font-size:calc(var(--hero-logo-size) * var(--hero-tagline-ratio) * var(--hero-tagline-fit, 1)); + } +} +.main-nav{ + --nav-divider-inset:0; + display:grid; + grid-template-columns:repeat(4, 1fr); + gap:0; + width:100%; + border:1px solid var(--border); + padding:0; +} +.main-nav a{ + position:relative; + display:flex; + align-items:center; + justify-content:center; + min-height:48px; + padding:1px 12px 0; + font-size:15px; + line-height:1; + color:var(--text); + letter-spacing:0.03em; + text-align:center; +} +.main-nav a:not(:nth-child(4n))::after{ + content:''; + position:absolute; + right:0; + width:1px; + background:var(--border); +} +.main-nav a:nth-child(-n+4):not(:nth-child(4n))::after{ + top:var(--nav-divider-inset); + bottom:0; +} +.main-nav a:nth-child(n+5):not(:nth-child(4n))::after{ + top:0; + bottom:var(--nav-divider-inset); +} +.main-nav a:nth-child(-n+4)::before{ + content:''; + position:absolute; + bottom:0; + left:0; + right:0; + height:1px; + background:var(--border); +} +.main-nav .nav-cta{color:var(--accent);} + +/* Sections */ +.section{ + --section-padding-y:80px; + padding:var(--section-padding-y) 0; + border-top:1px solid var(--border); + scroll-margin-top:calc(var(--site-header-height) + 24px + var(--section-padding-y)); +} +.eyebrow{ + display:inline-block; font-size:17px; font-weight:400; + letter-spacing:0.1em; + color:var(--accent); text-transform:uppercase; + vertical-align:middle; margin-bottom:16px; +} +.section-labels{ + display:flex; align-items:center; flex-wrap:wrap; + gap:12px; margin-bottom:16px; +} +.section-labels .eyebrow{margin-bottom:0;} +.section-labels .badge{margin-left:0;} +.badge{ + display:inline-block; vertical-align:middle; + margin-left:12px; padding:4px 10px; + font-size:12px; border:1px solid var(--border); border-radius:4px; + color:var(--text); +} +.lead{ + width:100%; + max-width:none; + margin-bottom:40px; +} + +.numbered-list{list-style:none; margin:0 0 32px; padding:0;} +.numbered-list li{ + display:grid; + grid-template-columns:28px 20px 1px 20px minmax(0, 1fr); + align-items:center; + padding:20px 0; + border-top:1px solid var(--border); +} +.numbered-list li::before{ + content:''; + grid-column:3; + grid-row:1; + width:1px; + background:var(--border); + align-self:stretch; +} +.numbered-list li:first-child{border-top:none;} +.num{ + grid-column:1; + display:flex; + align-items:center; + justify-content:center; + color:var(--accent); + font-weight:500; +} +.numbered-list p{grid-column:5; margin:0; line-height:1.7;} + +.dash-list{list-style:none; padding:0; margin:0;} +.dash-list--block{margin-bottom:32px;} +.dash-list li{ + position:relative; padding-left:28px; margin-bottom:14px; +} +.dash-list li::before{ + content:"—"; position:absolute; left:0; color:var(--accent); +} + +.two-col{display:grid; grid-template-columns:1fr 1fr; gap:40px; margin-bottom:32px;} +.two-col h4{ + font-size:15px; font-weight:600; color:var(--text); + line-height:1.3; margin-bottom:16px; + text-transform:uppercase; letter-spacing:0.05em; +} + +.note-box{ + background:var(--card-bg); + border-left:2px solid var(--accent); + padding:24px 28px; +} +.note-box:not(:last-child){margin-bottom:32px;} +.note-box p{margin:0 0 8px; line-height:1.6;} +.note-box p:last-child{margin:0;} + +.numbered-list + .lead{margin-top:40px;} + +.team-grid{ + display:grid; + grid-template-columns:minmax(0, 1fr) minmax(0, 1.5fr) minmax(0, 0.72fr); + gap:0; + width:100%; + margin-top:32px; +} +.team-card{ + text-align:left; + padding:0 32px; + border-right:1px solid var(--border); +} +.team-card:first-child{padding-left:0;} +.team-card--ivan{padding-left:40px; padding-right:40px;} +.team-card--andrey{ + padding-left:24px; + padding-right:0; + border-right:none; +} +.team-card:last-child{ + border-right:none; + padding-right:0; +} +.team-card h3{font-size:16px; line-height:1.2; margin-bottom:16px;} +.team-card ul{list-style:none; padding:0; margin:0;} +.team-card li{margin-bottom:6px; color:var(--text);} + +.entry-options{margin-top:8px;} +.sublabel{ + font-size:13px; text-transform:uppercase; + letter-spacing:0.05em; color:var(--text); + font-weight:600; display:block; margin-bottom:16px; +} +.sublabel-note{color:#9A9A94; font-weight:600;} + +.more-link{font-size:inherit;} + +.contact-section{text-align:center;} +.contact-section .eyebrow{margin-bottom:36px;} +.center{ + display:flex; flex-direction:column; align-items:center; + gap:0; +} +.contact-section .center > p:first-of-type{margin:0 0 16px;} +.contact-section .center > p:nth-of-type(2){margin:0 0 36px;} +.btn-outline{ + border:1px solid var(--accent); color:var(--accent); + padding:12px 28px; border-radius:4px; font-size:14px; font-weight:400; + margin-bottom:28px; + transition: background var(--transition), color var(--transition); +} +.btn-outline:hover{background:var(--accent); color:#fff; opacity:1;} +.link-underline{ + background:none; border:none; cursor:pointer; + color:var(--text); text-decoration:underline; font-family:inherit; font-size:13px; +} + +/* Footer */ +.site-footer{ + border-top:1px solid var(--border); + padding:48px 0 24px; + font-size:13px; +} +.site-footer h5{ + font-size:12px; text-transform:uppercase; + letter-spacing:0.05em; color:var(--text); +} +.site-footer .dash-list{margin-top:8px;} +.footer-bottom{ + display:flex; justify-content:space-between; align-items:center; + margin-top:40px; padding-top:24px; + border-top:1px solid var(--border); + font-size:12px; color:var(--text); +} +.footer-wolf{ + font-size:1.5em; + line-height:1; + opacity:1; +} +.footer-copy{opacity:0.7;} + +/* Modal */ +.modal-overlay{ + position:fixed; inset:0; background:rgba(0,0,0,0.5); + display:flex; align-items:center; justify-content:center; + opacity:0; visibility:hidden; transition: opacity var(--transition); + z-index:100; +} +.modal-overlay.open{opacity:1; visibility:visible;} +.modal-box{ + background:var(--bg); border-radius:8px; padding:32px; + max-width:420px; width:90%; position:relative; + transform:translateY(20px); transition:transform var(--transition); +} +.modal-overlay.open .modal-box{transform:translateY(0);} +.modal-close{ + position:absolute; top:12px; right:16px; background:none; border:none; + font-size:22px; cursor:pointer; color:var(--text); +} +#contactForm label{display:block; margin-bottom:20px; font-size:13px; color:var(--text);} +#contactForm input, #contactForm textarea{ + width:100%; margin-top:6px; padding:10px; border:1px solid var(--border); + border-radius:4px; background:transparent; color:var(--heading); font-family:inherit; + font-size:14px; font-weight:400; +} +.btn-solid{ + background:var(--accent); color:#fff; border:none; + padding:12px 24px; border-radius:6px; cursor:pointer; width:100%; +} +.form-status{font-size:13px; margin-top:12px; min-height:16px;} + +/* Reveal animation */ +.reveal{opacity:0; transform:translateY(24px); transition: opacity 0.6s ease, transform 0.6s ease;} +.reveal.visible{opacity:1; transform:translateY(0);} + +@media (prefers-reduced-motion: reduce){ + .hero-stage, + .terminal-stage{position:static; height:auto !important;} + .hero-brand, + .terminal-brand{height:auto !important;} + .hero-brand-inner, + .terminal-brand-inner{position:static; transform:none !important; will-change:auto; animation:none !important;} + .hero--mobile-anim .main-nav, + .terminal--mobile-anim .main-nav{transform:none !important; animation:none !important;} +} + +/* Mobile: compositor-only hero animation (no height changes while scrolling) */ +@media (max-width:600px){ + .hero--mobile-anim .hero-stage, + .hero--mobile-anim .hero-brand{ + contain:none; + } + .hero--mobile-anim .main-nav{ + transform:translate3d(0, var(--hero-nav-shift, 0), 0); + will-change:transform; + backface-visibility:hidden; + -webkit-backface-visibility:hidden; + } + .post-hero-lift{ + will-change:transform; + backface-visibility:hidden; + -webkit-backface-visibility:hidden; + } +} + +@media (max-width:600px){ + .terminal--mobile-anim .terminal-stage, + .terminal--mobile-anim .terminal-brand{ + contain:none; + } + .terminal--mobile-anim .main-nav{ + transform:translate3d(0, var(--hero-nav-shift, 0), 0); + will-change:transform; + backface-visibility:hidden; + -webkit-backface-visibility:hidden; + } +} + +@supports (animation-timeline: scroll(root)){ + @media (prefers-reduced-motion: no-preference) and (max-width:600px){ + .hero--scroll-driven .hero-brand-inner{ + will-change:transform; + } + .hero--scroll-driven .main-nav{ + will-change:transform; + } + .hero--scroll-driven + .post-hero-lift{ + will-change:transform; + } + .terminal--scroll-driven .terminal-brand-inner, + .terminal--scroll-driven .main-nav{ + will-change:transform; + } + .terminal--scroll-driven + .post-hero-lift{ + will-change:transform; + } + } +} + +@keyframes hero-brand-scale{ + from{transform:translate3d(0, 0, 0) scale(var(--hero-max-scale-mobile));} + to{transform:translate3d(0, 0, 0) scale(1);} +} +@keyframes terminal-brand-scale{ + from{transform:translate3d(-50%, 0, 0) scale(var(--hero-max-scale-mobile));} + to{transform:translate3d(-50%, 0, 0) scale(1);} +} +@keyframes hero-nav-lift{ + from{transform:translate3d(0, 0, 0);} + to{transform:translate3d(0, var(--hero-nav-shift-max), 0);} +} +@keyframes hero-content-lift{ + from{transform:translate3d(0, 0, 0);} + to{transform:translate3d(0, var(--hero-nav-shift-max), 0);} +} + +/* Terminal landing page — hero + 3-col nav */ +.terminal-hero{ + --hero-max-scale:2.55; + --hero-active-scale:var(--hero-max-scale); + --hero-logo-size:clamp(72px, 13.5vw, 158px); + --hero-terminal-overflow:1.14; + --hero-brand-gap:var(--hero-bottom-gap); + position:relative; + padding-top:var(--hero-stage-offset); + padding-bottom:var(--hero-bottom-gap); + text-align:center; + overflow:visible; +} +.terminal-stage{ + position:sticky; + top:calc(var(--site-header-height) + var(--hero-stage-offset)); + z-index:1; + contain:layout style; + height:var(--hero-stage-height, auto); +} +.terminal-brand{ + position:relative; + padding-bottom:var(--hero-brand-gap); + overflow:visible; + contain:layout style; + height:var(--hero-brand-height, auto); +} +.terminal-brand-inner{ + position:absolute; + left:50%; + top:0; + transform-origin:center top; + transform:translate3d(-50%, 0, 0) scale(var(--hero-scale, 1)); + will-change:transform; + backface-visibility:hidden; + -webkit-backface-visibility:hidden; +} +.terminal-logo{ + display:inline-flex; + align-items:baseline; + gap:0.06em; + font-size:var(--hero-logo-size); + font-weight:600; + letter-spacing:-0.03em; + line-height:0.9; + color:var(--logo); + margin:0; +} +.terminal-logo .accent{ + color:var(--accent); + font-size:0.62em; +} +@media (prefers-reduced-motion: no-preference){ + .terminal-brand-inner .terminal-logo{ + font-size:calc(var(--hero-logo-size) * var(--hero-active-scale) * var(--hero-terminal-fit, 1)); + } +} +@media (prefers-reduced-motion: no-preference) and (max-width:600px){ + .terminal-brand-inner .terminal-logo{ + font-size:calc(var(--hero-logo-size) * var(--hero-terminal-fit, 1)); + } +} +.terminal-nav{ + grid-template-columns:repeat(3, 1fr); + padding:0; +} +.main-nav.terminal-nav a::before{content:none;} +.terminal-nav a:last-child::after{content:none;} +.terminal-nav a:not(:last-child)::after{ + content:''; + position:absolute; + right:0; + top:var(--nav-divider-inset); + bottom:var(--nav-divider-inset); + width:1px; + background:var(--border); +} +@media (max-width:600px){ + .terminal-nav{ + grid-template-columns:1fr; + } + .terminal-nav a:not(:last-child)::after{content:none;} + .terminal-nav a:not(:last-child)::before{ + content:''; + position:absolute; + bottom:0; + left:0; + right:0; + height:1px; + background:var(--border); + } + .terminal-nav a{border-bottom:none;} + .terminal-nav a:last-child{border-bottom:none;} +} + +/* Responsive */ +@media (max-width:900px){ + .section{--section-padding-y:64px;} + .main-nav{grid-template-columns:repeat(2, 1fr);} + .terminal-nav{grid-template-columns:repeat(3, 1fr);} + .main-nav:not(.terminal-nav) a:not(:nth-child(4n))::after, + .main-nav:not(.terminal-nav) a:nth-child(-n+4)::before{content:none;} + .main-nav:not(.terminal-nav) a:not(:nth-child(2n))::after{ + content:''; + position:absolute; + right:0; + width:1px; + background:var(--border); + } + .main-nav:not(.terminal-nav) a:nth-child(-n+2):not(:nth-child(2n))::after{ + top:var(--nav-divider-inset); + bottom:0; + } + .main-nav:not(.terminal-nav) a:nth-child(n+3):nth-child(-n+6):not(:nth-child(2n))::after{ + top:0; + bottom:0; + } + .main-nav:not(.terminal-nav) a:nth-child(n+7):not(:nth-child(2n))::after{ + top:0; + bottom:var(--nav-divider-inset); + } + .main-nav:not(.terminal-nav) a:nth-child(-n+6)::before{ + content:''; + position:absolute; + bottom:0; + left:0; + right:0; + height:1px; + background:var(--border); + } + .team-grid{ + grid-template-columns:1fr; + gap:24px; + } + .team-card, + .team-card--ivan, + .team-card--andrey{ + padding:0 0 24px; + text-align:left; + border-right:none; + border-bottom:1px solid var(--border); + } + .team-card:last-child, + .team-card--andrey{ + padding-bottom:0; + border-bottom:none; + } + .two-col{grid-template-columns:1fr;} +} +@media (max-width:600px){ + .header-inner{ + padding-top:12px; + padding-bottom:12px; + } + .hero{ + padding-top:var(--hero-stage-offset); + padding-bottom:var(--hero-bottom-gap); + } + .terminal-hero{ + --hero-terminal-overflow:1; + } + :root{ + --site-header-height: 49px; + --hero-logo-size: clamp(72px, 18vw, 120px); + --hero-brand-gap: 24px; + --hero-bottom-gap: 24px; + --hero-max-scale-mobile: 2; + --hero-active-scale: 1; + } + .section{--section-padding-y:48px;} + .main-nav:not(.terminal-nav){ + grid-template-columns:repeat(2, 1fr); + } + .main-nav:not(.terminal-nav) a{ + min-height:44px; + padding:1px 8px 0; + font-size:14px; + } + .terminal-nav{ + grid-template-columns:1fr; + padding:0; + } + .terminal-nav a{ + min-height:44px; + padding:1px 8px 0; + font-size:14px; + } + h2{font-size:clamp(28px, 8vw, 40px);} +} \ No newline at end of file diff --git a/terminal.js b/terminal.js new file mode 100644 index 0000000..2ad141f --- /dev/null +++ b/terminal.js @@ -0,0 +1,48 @@ +initLangSwitch(); +initTheme(); + +const terminalHero = document.querySelector('.terminal-hero'); +const terminalBrand = document.querySelector('.terminal-brand'); +const terminalBrandInner = document.getElementById('terminalBrandInner'); + +function syncTerminalLogoFit(){ + const logo = terminalBrandInner?.querySelector('.terminal-logo'); + if (!logo || !terminalBrand) return; + + document.documentElement.style.setProperty('--hero-terminal-fit', '1'); + const brandWidth = terminalBrand.clientWidth; + const logoW = terminalBrandInner.offsetWidth; + const overflow = readCssPx('--hero-terminal-overflow', 1, terminalHero); + const targetWidth = brandWidth * overflow; + const fit = logoW > 0 ? targetWidth / logoW : 1; + document.documentElement.style.setProperty('--hero-terminal-fit', fit.toFixed(4)); +} + +initHeroScroll({ + section: terminalHero, + stage: document.querySelector('.terminal-stage'), + brand: terminalBrand, + brandInner: terminalBrandInner, + mobileAnimClass: 'terminal--mobile-anim', + scrollDrivenClass: 'terminal--scroll-driven', + brandScaleAnimation: 'terminal-brand-scale', + syncFit: syncTerminalLogoFit, + brandGapFromSection: true, + setMobileScaleVar: true, + subtractRunwayOnMobile: true, + clearSectionVars(section){ + if (section) section.style.removeProperty('--hero-max-scale-mobile'); + }, + clampMobileScale(maxScale, brand, brandInner, section){ + const brandWidth = brand.clientWidth; + const unscaledWidth = brandInner.offsetWidth; + const overflow = readCssPx('--hero-terminal-overflow', 1, section); + if (brandWidth > 0 && unscaledWidth > 0){ + return Math.min(maxScale, (brandWidth * overflow) / unscaledWidth); + } + return maxScale; + } +}); + +initReveal(); +initContactForm(); diff --git a/terminal/index.html b/terminal/index.html new file mode 100644 index 0000000..3e58dda --- /dev/null +++ b/terminal/index.html @@ -0,0 +1,303 @@ + + + + + +428th Terminal — автотрейдинг по TradingView сигналам + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+

428thTerminal

+
+
+ + +
+
+ +
+ + +
+
+ Функционал +

Связать TradingView индикатор с биржей

+

В общем, это главное, для чего мы сделали терминал. Предположим, у вас или у кого-то есть крутой индикатор:

+ +
+
+

Торговать по сигналам руками

+
    +
  • Надо сидеть 24/7 у компа или телефона
  • +
  • Легко пропустить сигнал
  • +
  • Можно не успеть войти
  • +
+
+
+

Подключить к терминалу

+
    +
  • Позиция откроется автоматически
  • +
  • Сразу поставит стоп и тейк
  • +
  • Если нужно, делайте с ней руками что угодно
  • +
+
+
+ +
+

Смысл в том, чтобы автоматизировать торговлю по индикатору, который вам нравится.

+
+ +
    +
  1. 01

    Регистрируетесь, подключаете по API аккаунт на BingX, ByBit или MEXC. Нужно быть нашим рефералом или дать денег.

  2. +
  3. 02

    Модифицируете скрипт под наши Webhook. Это не страшно.

  4. +
  5. 03

    Настраиваете алерты, кайфуете. Бот не сломается, даже если вы будете торговать вместе с ним и менять его позиции руками.

  6. +
  7. 04

    Вы не особо программист? Мы поможем переписать скрипт и подключиться — бесплатно.

  8. +
+ +

Изначально мы делали терминал для автотрейдинга по своим индикаторам. Поэтому он делает ровно то, что нам нужно:

+ +
    +
  • Принимает Webhook c TradingView.
  • +
  • Реализует на его основе позицию на BingX, ByBit или MEXC.
  • +
  • Принимает ручные правки: на бирже позицию можно закрыть, сократить, подвинуть стоп или тейк.
  • +
  • Показывает торговую статистику.
  • +
+ +
+

Теперь мы придумываем и добавляем новые функции. Если что-то хотите — напишите в лс.

+
+
+
+ + +
+
+ Цены +

Это самое смешное

+

Работайте бесплатно, если ваш аккаунт — наш реферал. Если нет — будет дорого :(

+ +
    +
  • Мы не смогли придумать вариант оплаты, который удобнее, чем биржевая партнерская система.
  • +
  • Если вам очень важно торговать без нашей рефералки, значит вам и так пофиг сколько платить.
  • +
  • Цена за прямую оплату сервиса — $500 в месяц за каждый API ключ.
  • +
  • Напомним, за торговлю на реферальном аккаунте платить не нужно. Нам хватит бонусов от ваших комиссий.
  • +
  • А если вы инфлюенсер и партнер выбранной для работы биржи — напишите в лс, договоримся.
  • +
+ +
+

Быть нашим рефералом — круто в любом случае.

+
+ +
    +
  1. 01

    При обороте криптой $500k+ в месяц вы станете участником Premium группы бесплатно. Больше инфы — здесь.

  2. +
  3. 02

    Ваша комиссия за торговлю станет ниже на 30-50%, а если вы вообще кит, то договоримся на кешбеки.

  4. +
  5. 03

    Ваши вопросы или проблемы с биржей можно решить через нас и быстро. Особенно на BingX, там братья вообще.

  6. +
  7. 04

    Минусы? Их нет. А ссылки для регистрации — внизу страницы.

  8. +
+
+
+ + +
+
+ Контакт +

По всем вопросам — только в ЛС. Продажи не автоматизированы, а мы и не планировали.

+

Напишите — разберём вашу ситуацию и найдём решение. По-братски.

+ + + Telegram @artemium → + + + +
+
+ + + + +
+ +
+ + + + + + + + + + diff --git a/ua/index.html b/ua/index.html new file mode 100644 index 0000000..8342902 --- /dev/null +++ b/ua/index.html @@ -0,0 +1,425 @@ + + + + + +428th // Crypto · Trading · Wealth Management + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ + +
+
+ Хто ми +

428th — частина команди SIMPLE CRYPTO

+

Об'єднані ідеєю ефективного управління капіталом. З 2018 року працюємо з крипто-активами. Своїми рішеннями ділимося з шанобливими підписниками. З нешанобливими — не ділимося.

+ +
+
+

Артемій

+
    +
  • Ручний та алгоритмічний трейдинг
  • +
  • Автоматизація
  • +
+
+
+

Іван

+
    +
  • Фундаментальний аналіз і макроекономіка
  • +
  • Ринок передбачень (Polymarket)
  • +
  • Інвестиції в цінність
  • +
  • Позиційна торгівля класичних ринків
  • +
+
+
+

Андрій

+
    +
  • DeFi
  • +
  • Retro
  • +
  • Betting
  • +
+
+
+
+
+ + +
+
+ Premium +

Робота в команді

+

Закритий чат, розділений на теми, в якому ми спілкуємося з вами особисто. Але в основному російською, такі вже виросли.

+ +
    +
  1. 01

    Щодня — конференція або технічний відео-огляд ринку Crypto + TradFi. Поточна ситуація, очікування, пошук сетапів, розстановка орієнтирів. За можливості торгівля Золотом і Сріблом на секундних графіках онлайн на дзвінках.

  2. +
  3. 02

    24/7 трендові сетапи від авторських алгоритмів за таймфреймами 15 хв і 6 год. Чіткий вхід, стоп, тейк і графік.

  4. +
  5. 03

    Відповіді на питання, розбори торгових систем і фішок.

  6. +
  7. 04

    Фундаментальний розбір ринків і активів.

  8. +
  9. 05

    Рекомендації щодо напрямків Retro, DeFi, Polymarket.

  10. +
+ +
+ + Варіанти входу (будь-який з них) + +
    +
  • 500$ за навчання, у подарунок 12 місяців підписки на Premium. Нам просто краще працювати з тими, хто знає базу.
  • +
  • Підписка 50$/міс. Не хочете вчитися — доплата за лінь.
  • +
  • Підключений копітрейдинг BingX на депозит $3 000+. Топовий варіант для тих, хто вже довіряє.
  • +
  • Оборот криптою на партнерському акаунті Bybit або BingX на $500k+/міс. Для китів усі двері відкриті.
  • +
+
+
+
+ + +
+
+ Навчання +

Авторський курс з трейдингу

+

За кожною темою — текстова лекція і відео-практика. 1–1,5 місяці у вільному режимі. Уроки по 20 хвилин в середньому. Ціна 500$.

+ +
+
+

Що входить

+
    +
  • Безстроковий доступ у чат учнів, оновлення курсу, конференції, авторські індикатори
  • +
  • Усі стилі торгівлі: інтрадей, середньострок, портфель
  • +
  • Підтримка від нас і учнів минулих потоків
  • +
+
+
+

Методи

+
    +
  • Класичний ТА + PA + VSA + LRA + SM
  • +
  • Перевірені тонкощі поширених методів аналізу
  • +
  • Нові підходи і стратегії в міру вивчення та відпрацювання
  • +
+
+
+ +
+

Теорії хвиль Елліота (EWA) зараз немає — це наступний рівень. Торгувати нормально можна і без нього. За бажанням — спирайтеся на наші розмітки.

+
+
+
+ + +
+
+ Копітрейдинг на BingX +

Напівавтоматична торгівля

+

Артемій разом із ботами торгує на двох ф'ючерсних мастер-акаунтах — короткострок і середньострок. Кнопка бабло!

+ +
    +
  1. 01

    Два мастер-акаунти: короткострокова і середньострокова торгівля на ф'ючерсах.

  2. +
  3. 02

    Доступно лише для рефералів BingX. Відкриває можливість безкоштовного входу в Premium.

  4. +
  5. 03

    Підключайтеся, якщо готові до експерименту або довіряєте нам приблизно як собі — або сильніше.

  6. +
+ +
+

Статистики поки мало і вона нічого не дає — технічне рішення лише нещодавно почало працювати. Підключайтеся усвідомлено.

+
+
+
+ + +
+
+ Автотрейдинг // Terminal +

Автоматизація за індикаторами TradingView

+

Є робочий індикатор, на вигляд офігенний, але працювати руками — дич? Підключайте сигнали і спостерігайте за торгівлею.

+ +
    +
  1. 01

    Реєструєтеся, підключаєте по API акаунт на BingX, ByBit або MEXC. Потрібно бути нашим рефералом або дати гроші.

  2. +
  3. 02

    Модифікуєте скрипт під наші webhook. Це не страшно.

  4. +
  5. 03

    Налаштовуєте алерти, кайфуєте. Бот не зламається, навіть якщо ви будете торгувати разом із ним і змінювати його позиції руками.

  6. +
  7. 04

    Ви не особливо програміст? Ми допоможемо переписати скрипт і підключитися — безкоштовно.

  8. +
+ +
+

+ Детальніше про 428th Terminal — + на цій сторінці. +

+
+
+
+ + +
+
+ +

Multi-family office

+

Для тих, хто хоче бути в крипто-тренді і отримувати дохід від капіталу — без самостійної роботи з ринком.

+ +
+
+

Для самостійного управління потрібно

+
    +
  • Час на постійне спостереження за ринком
  • +
  • База для системного аналізу
  • +
  • Досвід безпечної роботи з блокчейнами
  • +
+
+
+

Як варіант — довірити все нам

+
    +
  • Планування і розподіл капіталу
  • +
  • Управління позиціями
  • +
  • Звітність і виплати
  • +
+
+
+ +
+

Якщо працюєте з ринком своєю головою і руками — це найкращий підхід, ми його підтримуємо максимально.

+

Якщо ні — ми надаємо доступ до крипто-доходності без занурення в кожну дію.

+
+
+
+ + +
+
+ Стріми крипто-адмінів +

Сервіс admins.stream

+

Адміни збираються разом, щоб провести конференцію для підписників і обмінятися трафіком. Можна підключити спонсорів.

+ +
    +
  1. 01

    Збираємо групу адмінів, фіксуємо теми виступів, дату стріму, розклад постів-анонсів, призи.

  2. +
  3. 02

    Адміни випускають пости-анонси, люди реєструються в тг-боті. Їм потрібно підписатися на кожного адміна.

  4. +
  5. 03

    Усі глядачі фіксуються в базі, хто звідки прийшов і все таке. Хто нальє ботів — приб'ю. Але ми підготувалися: капчі в боті, капчі на стрімі.

  6. +
  7. 04

    Проводимо конференцію — адміни на дзвінку, а глядачі дивляться стрім і можуть поспілкуватися в чаті трансляції.

  8. +
  9. 05

    Серед тих, хто прийшов на конференцію (у всіх індивідуальне посилання), розігруються обрані призи.

  10. +
  11. 06

    Адміни задоволені живим зацікавленим трафіком, підписники радіють якісному контенту і нагородам.

  12. +
+ +
+

Цікаво? Звертайтеся, домовимося.

+
+
+
+ + +
+
+ Контакт +

З усіх питань — лише в ЛС. Продажі не автоматизовані, а ми й не планували.

+

Напишіть — розберемо вашу ситуацію і знайдемо рішення. По-братськи.

+ + + Telegram @artemium → + + + +
+
+ + + + +
+ +
+ + + + + + + + + + diff --git a/ua/terminal/index.html b/ua/terminal/index.html new file mode 100644 index 0000000..77c2787 --- /dev/null +++ b/ua/terminal/index.html @@ -0,0 +1,303 @@ + + + + + +428th Terminal — автотрейдинг за сигналами TradingView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+

428thTerminal

+
+
+ + +
+
+ +
+ + +
+
+ Функціонал +

Зв'язати індикатор TradingView з біржею

+

Загалом, це головне, для чого ми зробили термінал. Припустимо, у вас або в когось є крутий індикатор:

+ +
+
+

Торгувати за сигналами руками

+
    +
  • Треба сидіти 24/7 біля компа або телефона
  • +
  • Легко пропустити сигнал
  • +
  • Можна не встигнути увійти
  • +
+
+
+

Підключити до терміналу

+
    +
  • Позиція відкриється автоматично
  • +
  • Одразу поставить стоп і тейк
  • +
  • Якщо треба, робіть з нею руками що завгодно
  • +
+
+
+ +
+

Сенс у тому, щоб автоматизувати торгівлю за індикатором, який вам подобається.

+
+ +
    +
  1. 01

    Реєструєтеся, підключаєте по API акаунт на BingX, ByBit або MEXC. Потрібно бути нашим рефералом або дати грошей.

  2. +
  3. 02

    Модифікуєте скрипт під наші Webhook. Це не страшно.

  4. +
  5. 03

    Налаштовуєте алерти, кайфуєте. Бот не зламається, навіть якщо ви будете торгувати разом із ним і змінювати його позиції руками.

  6. +
  7. 04

    Ви не те щоб програміст? Ми допоможемо переписати скрипт і підключитися — безкоштовно.

  8. +
+ +

Спочатку ми робили термінал для автотрейдингу за своїми індикаторами. Тому він робить рівно те, що нам потрібно:

+ +
    +
  • Приймає Webhook з TradingView.
  • +
  • Реалізує на його основі позицію на BingX, ByBit або MEXC.
  • +
  • Приймає ручні правки: на біржі позицію можна закрити, скоротити, посунути стоп або тейк.
  • +
  • Показує торгову статистику.
  • +
+ +
+

Тепер ми придумуємо і додаємо нові функції. Якщо щось хочете — напишіть в лс.

+
+
+
+ + +
+
+ Ціни +

Це смішне

+

Працюйте безкоштовно, якщо ваш акаунт — наш реферал. Якщо ні — буде дорого :(

+ +
    +
  • Ми не змогли придумати варіант оплати, який зручніший за біржову партнерську систему.
  • +
  • Якщо вам дуже важливо торгувати без нашої рефералки, значить вам і так байдуже скільки платити.
  • +
  • Ціна за пряму оплату сервісу — $500 на місяць за кожен API ключ.
  • +
  • Нагадаємо, за торгівлю на реферальному акаунті платити не потрібно. Нам вистачить бонусів від ваших комісій.
  • +
  • А якщо ви інфлюенсер і партнер обраної для роботи біржі — напишіть в лс, домовимося.
  • +
+ +
+

Бути нашим рефералом — круто в будь-якому випадку.

+
+ +
    +
  1. 01

    При обороті криптою $500k+ на місяць ви станете учасником Premium групи безкоштовно. Більше інфи — тут.

  2. +
  3. 02

    Ваша комісія за торгівлю стане нижчою на 30-50%, а якщо ви взагалі кит, то домовимося ще й на кешбеки.

  4. +
  5. 03

    Ваші питання або проблеми з біржею можна вирішити через нас і швидко. Особливо на BingX, там братани взагалі.

  6. +
  7. 04

    Мінуси? Їх немає. А посилання для реєстрації — внизу сторінки.

  8. +
+
+
+ + +
+
+ Контакт +

З усіх питань — лише в ЛС. Продажі не автоматизовані, а ми й не планували.

+

Напишіть — розберемо вашу ситуацію і знайдемо рішення. По-братськи.

+ + + Telegram @artemium → + + + +
+
+ + + + +
+ +
+ + + + + + + + + +