{"id":1975,"date":"2026-06-04T13:02:28","date_gmt":"2026-06-04T17:02:28","guid":{"rendered":"https:\/\/hftforexcopier.com\/?page_id=1975"},"modified":"2026-06-04T16:48:59","modified_gmt":"2026-06-04T20:48:59","slug":"trade-copier-simulator","status":"publish","type":"page","link":"https:\/\/hftforexcopier.com\/de\/trade-copier-simulator\/","title":{"rendered":"Interaktiver Trade-Copier-Simulator"},"content":{"rendered":"\n<style data-wp-block-html=\"css\">\n=\n* { box-sizing: border-box; }\nbody {\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n  font-size: 17px;\n  line-height: 1.7;\n  color: #0f172a;\n  background: #ffffff;\n  -webkit-font-smoothing: antialiased;\n}\n\n.container { max-width: 1100px; margin: 0 auto; padding: 0 24px; }\n\n.lede {\n  font-size: 20px;\n  color: #475569;\n  margin: 16px 0 24px;\n  max-width: 800px;\n}\n\n.meta {\n  display: flex;\n  gap: 24px;\n  font-size: 14px;\n  color: #94a3b8;\n  border-top: 1px solid #e2e8f0;\n  border-bottom: 1px solid #e2e8f0;\n  padding: 14px 0;\n  margin: 16px 0 32px;\n}\n.meta span strong { color: #475569; font-weight: 600; }\n\nh2 {\n  font-size: 28px;\n  line-height: 1.25;\n  font-weight: 800;\n  letter-spacing: -0.4px;\n  margin: 48px 0 16px;\n}\nh3 { font-size: 20px; font-weight: 700; margin: 24px 0 8px; color: #0f172a; }\n\np { margin: 0 0 16px; }\na { color: #2563eb; text-decoration: underline; text-underline-offset: 2px; }\na:hover { color: #1d4ed8; }\n\nul, ol { padding-left: 24px; margin: 0 0 16px; }\nli { margin-bottom: 6px; }\n\n\/* Simulator wrapper *\/\n.sim-wrap {\n  background: #ffffff;\n  border: 1px solid #e2e8f0;\n  border-radius: 18px;\n  padding: 28px;\n  box-shadow: 0 1px 3px rgba(15,23,42,.06), 0 8px 24px rgba(15,23,42,.06);\n  margin: 24px 0 32px;\n}\n\n\/* Setup panel \u2014 two columns *\/\n.sim-setup {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 20px;\n  margin-bottom: 24px;\n}\n.sim-block {\n  background: #f8fafc;\n  border: 1px solid #e2e8f0;\n  border-radius: 12px;\n  padding: 18px 20px;\n}\n.sim-block h3 {\n  margin: 0 0 14px;\n  font-size: 13px;\n  letter-spacing: 1.2px;\n  text-transform: uppercase;\n  color: #475569;\n  font-weight: 700;\n}\n.sim-row {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 10px;\n  margin-bottom: 10px;\n}\n.sim-field { display: flex; flex-direction: column; gap: 4px; }\n.sim-field label {\n  font-size: 11px;\n  letter-spacing: .5px;\n  color: #475569;\n  font-weight: 600;\n  text-transform: uppercase;\n}\n.sim-field select, .sim-field input {\n  font-family: inherit;\n  font-size: 15px;\n  font-weight: 600;\n  color: #0f172a;\n  background: #ffffff;\n  border: 1px solid #cbd5e1;\n  border-radius: 8px;\n  padding: 8px 10px;\n  height: 38px;\n  outline: none;\n  transition: border-color .15s;\n}\n.sim-field input:focus, .sim-field select:focus {\n  border-color: #2563eb;\n  box-shadow: 0 0 0 3px rgba(37,99,235,.12);\n}\n.sim-check {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n  margin-top: 10px;\n  font-size: 14px;\n  color: #0f172a;\n  font-weight: 600;\n  cursor: pointer;\n  user-select: none;\n}\n.sim-check input { width: 18px; height: 18px; cursor: pointer; }\n.sim-help {\n  font-size: 12px;\n  color: #94a3b8;\n  margin-top: 4px;\n  font-weight: 400;\n}\n\n\/* Mode toggle + execute *\/\n.sim-controls {\n  display: flex;\n  align-items: center;\n  gap: 16px;\n  margin: 24px 0;\n  flex-wrap: wrap;\n}\n.sim-mode {\n  display: inline-flex;\n  background: #f1f5f9;\n  border-radius: 10px;\n  padding: 4px;\n}\n.sim-mode button {\n  border: 0;\n  background: transparent;\n  font-family: inherit;\n  font-size: 14px;\n  font-weight: 700;\n  letter-spacing: .3px;\n  color: #475569;\n  padding: 10px 18px;\n  border-radius: 8px;\n  cursor: pointer;\n  transition: background .15s, color .15s;\n}\n.sim-mode button.active.local { background: #2563eb; color: #ffffff; }\n.sim-mode button.active.cloud { background: #d97706; color: #ffffff; }\n\n.sim-execute {\n  flex: 1;\n  min-width: 160px;\n  background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%);\n  color: #ffffff;\n  border: 0;\n  border-radius: 10px;\n  font-family: inherit;\n  font-size: 16px;\n  font-weight: 800;\n  letter-spacing: .5px;\n  padding: 14px 24px;\n  cursor: pointer;\n  transition: transform .12s, box-shadow .12s;\n  box-shadow: 0 4px 12px rgba(37,99,235,.25);\n}\n.sim-execute:hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(37,99,235,.32); }\n.sim-execute:disabled { opacity: .5; cursor: not-allowed; transform: none; }\n\n.sim-reset {\n  background: #ffffff;\n  color: #475569;\n  border: 1px solid #cbd5e1;\n  border-radius: 10px;\n  font-family: inherit;\n  font-size: 14px;\n  font-weight: 700;\n  padding: 14px 18px;\n  cursor: pointer;\n  transition: border-color .15s, color .15s;\n}\n.sim-reset:hover { border-color: #2563eb; color: #2563eb; }\n\n\/* Stage \u2014 3 panels *\/\n.sim-stage {\n  display: grid;\n  grid-template-columns: 1fr 200px 1fr;\n  gap: 18px;\n  align-items: stretch;\n  margin: 24px 0;\n}\n.terminal {\n  background: #0f172a;\n  border-radius: 14px;\n  padding: 20px;\n  color: #e2e8f0;\n  min-height: 260px;\n  display: flex;\n  flex-direction: column;\n  position: relative;\n  overflow: hidden;\n}\n.terminal::before {\n  content: \"\";\n  position: absolute;\n  top: 0; left: 0; right: 0;\n  height: 4px;\n  background: #475569;\n  transition: background .25s;\n}\n.terminal.master::before { background: #2563eb; }\n.terminal.sub::before { background: #16a34a; }\n.terminal.active::before { background: linear-gradient(90deg, #2563eb, #60a5fa, #2563eb); animation: pulseBar 1s linear infinite; }\n\n@keyframes pulseBar { 0%,100% { opacity: .6; } 50% { opacity: 1; } }\n\n.terminal-header {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  font-size: 11px;\n  letter-spacing: 1.5px;\n  text-transform: uppercase;\n  color: #94a3b8;\n  font-weight: 700;\n  margin-bottom: 14px;\n  padding-bottom: 12px;\n  border-bottom: 1px solid #1e293b;\n}\n.terminal-header .platform { color: #cbd5e1; }\n.terminal-status {\n  display: inline-flex;\n  align-items: center;\n  gap: 6px;\n  font-size: 10px;\n}\n.dot {\n  display: inline-block;\n  width: 8px; height: 8px;\n  border-radius: 50%;\n  background: #475569;\n  transition: background .2s;\n}\n.dot.online { background: #16a34a; }\n.dot.busy { background: #f59e0b; animation: pulseDot .8s ease-in-out infinite; }\n@keyframes pulseDot { 0%,100% { opacity: 1; } 50% { opacity: .4; } }\n\n.terminal-body { flex: 1; font-family: \"SF Mono\", Monaco, Consolas, monospace; font-size: 14px; }\n.terminal-line { display: flex; justify-content: space-between; padding: 4px 0; color: #cbd5e1; }\n.terminal-line .label { color: #94a3b8; font-size: 12px; text-transform: uppercase; letter-spacing: .5px; }\n.terminal-line.head { color: #ffffff; font-size: 18px; font-weight: 700; padding: 6px 0 12px; border-bottom: 1px solid #1e293b; margin-bottom: 8px; letter-spacing: -.3px; }\n.terminal-line.head .side-buy { color: #4ade80; }\n.terminal-line.head .side-sell { color: #f87171; }\n.terminal-line .v { color: #f1f5f9; font-weight: 600; }\n.terminal-line.sl .v { color: #f87171; }\n.terminal-line.tp .v { color: #4ade80; }\n.terminal-line.hidden-mark .v::after { content: \" \u00b7 hidden\"; color: #94a3b8; font-size: 11px; font-weight: 400; }\n\n.terminal-empty {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  height: 100%;\n  color: #475569;\n  font-size: 13px;\n  text-align: center;\n  padding: 20px;\n}\n\n\/* Copier flow column *\/\n.copier-flow {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  position: relative;\n  min-height: 260px;\n}\n.copier-card {\n  background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%);\n  color: #ffffff;\n  border-radius: 14px;\n  padding: 16px 18px;\n  text-align: center;\n  width: 100%;\n  box-shadow: 0 8px 20px rgba(37,99,235,.30);\n  position: relative;\n  z-index: 2;\n  transition: transform .2s;\n}\n.copier-card.cloud-mode { background: linear-gradient(135deg, #d97706 0%, #b45309 100%); box-shadow: 0 8px 20px rgba(217,119,6,.30); }\n.copier-card.active { transform: scale(1.04); }\n.copier-card .name {\n  font-size: 11px;\n  letter-spacing: 1.5px;\n  text-transform: uppercase;\n  font-weight: 700;\n  color: rgba(255,255,255,.85);\n  margin-bottom: 4px;\n}\n.copier-card .role { font-size: 16px; font-weight: 800; }\n.copier-card .latency {\n  font-size: 12px;\n  color: rgba(255,255,255,.85);\n  margin-top: 4px;\n  font-family: \"SF Mono\", Monaco, Consolas, monospace;\n}\n\n.flow-arrow {\n  position: absolute;\n  top: 50%;\n  height: 3px;\n  background: #e2e8f0;\n  transition: background .3s;\n  z-index: 1;\n}\n.flow-arrow.left { left: -8px; right: 50%; margin-right: 30px; }\n.flow-arrow.right { right: -8px; left: 50%; margin-left: 30px; }\n.flow-arrow.active.left { background: linear-gradient(90deg, #2563eb 0%, #2563eb 100%); }\n.flow-arrow.active.right { background: linear-gradient(90deg, #2563eb 0%, #16a34a 100%); }\n.flow-arrow.cloud-mode.active.right { background: linear-gradient(90deg, #d97706 0%, #16a34a 100%); }\n\n.flow-arrow .pulse {\n  position: absolute;\n  top: -3px;\n  width: 12px;\n  height: 9px;\n  background: #ffffff;\n  border-radius: 4px;\n  opacity: 0;\n}\n.flow-arrow.active .pulse { animation: pulseFlow 1.6s linear; }\n@keyframes pulseFlow {\n  0% { left: 0; opacity: 0; }\n  10% { opacity: 1; }\n  90% { opacity: 1; }\n  100% { left: calc(100% - 12px); opacity: 0; }\n}\n\n\/* Timer *\/\n.sim-timer {\n  background: #0f172a;\n  color: #ffffff;\n  border-radius: 14px;\n  padding: 22px 28px;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  flex-wrap: wrap;\n  gap: 16px;\n  margin: 24px 0;\n}\n.sim-timer .time-block {\n  display: flex;\n  flex-direction: column;\n}\n.sim-timer .time-label {\n  font-size: 11px;\n  letter-spacing: 1.5px;\n  text-transform: uppercase;\n  color: #94a3b8;\n  font-weight: 700;\n}\n.sim-timer .time-value {\n  font-size: 38px;\n  font-weight: 800;\n  font-family: \"SF Mono\", Monaco, Consolas, monospace;\n  color: #ffffff;\n  letter-spacing: -1px;\n}\n.sim-timer .time-value .unit { font-size: 18px; color: #94a3b8; font-weight: 600; margin-left: 6px; }\n.sim-timer.cloud .time-value { color: #fbbf24; }\n.sim-timer.local .time-value { color: #60a5fa; }\n\n\/* Result panel *\/\n.sim-result {\n  background: #f0fdf4;\n  border: 1px solid #bbf7d0;\n  border-radius: 14px;\n  padding: 22px 28px;\n  margin: 24px 0;\n  opacity: 0;\n  max-height: 0;\n  overflow: hidden;\n  transition: opacity .4s, max-height .4s, margin .4s, padding .4s;\n}\n.sim-result.show {\n  opacity: 1;\n  max-height: 800px;\n  padding: 22px 28px;\n}\n.sim-result.cloud-mode { background: #fffbeb; border-color: #fde68a; }\n.sim-result h3 { margin: 0 0 8px; color: #0f172a; font-size: 18px; }\n.sim-result p { margin: 0 0 8px; font-size: 15px; color: #334155; }\n.sim-result .key-num { font-weight: 800; font-family: \"SF Mono\", Monaco, Consolas, monospace; color: #0f172a; }\n.sim-result .stats-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n  gap: 16px;\n  margin-top: 14px;\n}\n.sim-result .stat {\n  background: #ffffff;\n  border: 1px solid #e2e8f0;\n  border-radius: 10px;\n  padding: 12px 14px;\n}\n.sim-result .stat .stat-label {\n  font-size: 11px;\n  letter-spacing: 1px;\n  text-transform: uppercase;\n  color: #475569;\n  font-weight: 700;\n}\n.sim-result .stat .stat-value {\n  font-size: 22px;\n  font-weight: 800;\n  color: #0f172a;\n  font-family: \"SF Mono\", Monaco, Consolas, monospace;\n  letter-spacing: -.5px;\n}\n\n\/* Presets *\/\n.sim-presets {\n  display: flex;\n  gap: 10px;\n  flex-wrap: wrap;\n  align-items: center;\n  margin-top: 16px;\n  padding-top: 18px;\n  border-top: 1px solid #e2e8f0;\n}\n.sim-presets-label {\n  font-size: 12px;\n  letter-spacing: 1px;\n  text-transform: uppercase;\n  color: #94a3b8;\n  font-weight: 700;\n  margin-right: 4px;\n}\n.sim-preset {\n  background: #ffffff;\n  border: 1px solid #cbd5e1;\n  color: #0f172a;\n  font-family: inherit;\n  font-size: 13px;\n  font-weight: 600;\n  padding: 8px 14px;\n  border-radius: 8px;\n  cursor: pointer;\n  transition: border-color .15s, color .15s, background .15s;\n}\n.sim-preset:hover { border-color: #2563eb; color: #2563eb; background: #eff6ff; }\n\n\/* Disclaimer *\/\n.sim-disclaimer {\n  font-size: 12px;\n  color: #94a3b8;\n  text-align: center;\n  margin-top: 12px;\n  font-style: italic;\n}\n\n\/* Callouts and CTA *\/\n.callout {\n  background: #eff6ff;\n  border-left: 4px solid #2563eb;\n  border-radius: 8px;\n  padding: 18px 24px;\n  margin: 24px 0;\n}\n.callout strong { color: #2563eb; }\n\n.cta {\n  background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%);\n  color: #ffffff;\n  border-radius: 16px;\n  padding: 32px;\n  margin: 40px 0;\n  text-align: center;\n}\n.cta h3 { color: #ffffff; font-size: 22px; margin: 0 0 8px; }\n.cta p { color: #dbeafe; margin: 0 0 18px; }\n.cta-button {\n  display: inline-block;\n  background: #ffffff;\n  color: #2563eb;\n  padding: 13px 30px;\n  border-radius: 10px;\n  font-weight: 700;\n  text-decoration: none;\n}\n.cta-button:hover { color: #1d4ed8; }\n\n.related {\n  background: #f8fafc;\n  border: 1px solid #e2e8f0;\n  border-radius: 12px;\n  padding: 24px;\n  margin: 40px 0 32px;\n}\n.related h3 { margin: 0 0 14px; font-size: 14px; letter-spacing: 1px; text-transform: uppercase; color: #475569; }\n.related-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }\n.related-card { background: #ffffff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 14px 16px; text-decoration: none; color: #0f172a; font-weight: 600; font-size: 15px; }\n.related-card:hover { border-color: #2563eb; color: #2563eb; }\n\n\/* Mobile *\/\n@media (max-width: 820px) {\n  .sim-stage { grid-template-columns: 1fr; gap: 14px; }\n  .copier-flow { min-height: auto; padding: 10px 0; }\n  .flow-arrow { display: none; }\n  .terminal { min-height: 180px; }\n}\n@media (max-width: 640px) {\n  .container { padding: 0 18px; }\n  h2 { font-size: 22px; }\n  .meta { flex-direction: column; gap: 4px; }\n  .sim-setup { grid-template-columns: 1fr; }\n  .sim-row { grid-template-columns: 1fr; }\n  .sim-timer { padding: 18px 20px; }\n  .sim-timer .time-value { font-size: 30px; }\n  .sim-wrap { padding: 18px; }\n}\n<\/style>\n\n<script data-wp-block-html=\"js\">\ndocument.addEventListener('DOMContentLoaded', function () {\n(function(){\n  var SYMBOLS = {\n    EURUSD: {price: 1.08750, digits: 5, pip: 0.0001, pipValPerLot: 10},\n    GBPUSD: {price: 1.26500, digits: 5, pip: 0.0001, pipValPerLot: 10},\n    USDJPY: {price: 149.500, digits: 3, pip: 0.01,   pipValPerLot: 6.69},\n    XAUUSD: {price: 2330.50, digits: 2, pip: 0.01,   pipValPerLot: 1},\n    BTCUSD: {price: 67500,   digits: 0, pip: 1,      pipValPerLot: 1}\n  };\n\n  var mode = 'local';\n  var running = false;\n  var rafId = null;\n\n  function $(id){ return document.getElementById(id); }\n  function fmt(n, d){ return Number(n).toFixed(d); }\n  function pad(n){ return n < 10 ? '0' + n : '' + n; }\n  function clear(el){ while (el.firstChild) el.removeChild(el.firstChild); }\n\n  function setMode(m){\n    mode = m;\n    var btns = document.querySelectorAll('#modeToggle button');\n    btns.forEach(function(b){\n      b.classList.remove('active','local','cloud');\n      if (b.dataset.mode === m) { b.classList.add('active', m); }\n    });\n    var copier = $('copierCard');\n    var arrL = $('arrowL'); var arrR = $('arrowR');\n    if (m === 'cloud') {\n      copier.classList.add('cloud-mode');\n      arrR.classList.add('cloud-mode');\n      $('copierName').textContent = 'CLOUD COPIER';\n      $('copierRole').textContent = 'Vendor routed';\n      $('copierLat').textContent = '~200 ms';\n      $('timeMode').textContent = 'CLOUD';\n      $('timer').classList.remove('local'); $('timer').classList.add('cloud');\n    } else {\n      copier.classList.remove('cloud-mode');\n      arrR.classList.remove('cloud-mode');\n      $('copierName').textContent = 'HFT FOREX COPIER';\n      $('copierRole').textContent = 'Local';\n      $('copierLat').textContent = '<1 ms';\n      $('timeMode').textContent = 'LOCAL';\n      $('timer').classList.remove('cloud'); $('timer').classList.add('local');\n    }\n  }\n\n  function updateLotHelp(){\n    var m = $('lotMode').value;\n    var p = parseFloat($('lotParam').value) || 0;\n    var help = $('lotHelp'); var label = $('lotParamLabel');\n    if (m === 'multiplier') { label.textContent = 'Ratio'; help.textContent = 'sub lot = master \u00d7 ' + p; }\n    else if (m === 'fixed') { label.textContent = 'Fixed lot'; help.textContent = 'sub lot = ' + p + ' regardless of master'; }\n    else if (m === 'risk')  { label.textContent = 'Risk %'; help.textContent = p + ' % of $10 000 sub balance per trade (SL required)'; }\n  }\n\n  function defaultEntryFor(sym){\n    var s = SYMBOLS[sym]; return fmt(s.price, s.digits);\n  }\n  function defaultSLTP(sym, side){\n    var s = SYMBOLS[sym];\n    var p = s.price; var pip = s.pip;\n    if (side === 'BUY' || side === 'BUYLIMIT') {\n      return { sl: fmt(p - 100 * pip, s.digits), tp: fmt(p + 200 * pip, s.digits) };\n    } else {\n      return { sl: fmt(p + 100 * pip, s.digits), tp: fmt(p - 200 * pip, s.digits) };\n    }\n  }\n\n  function fillDefaults(){\n    var sym = $('sym').value;\n    $('entry').value = defaultEntryFor(sym);\n    var d = defaultSLTP(sym, $('side').value);\n    $('sl').value = d.sl;\n    $('tp').value = d.tp;\n    $('entry').step = SYMBOLS[sym].pip;\n    $('sl').step = SYMBOLS[sym].pip;\n    $('tp').step = SYMBOLS[sym].pip;\n  }\n\n  function computeSubLot(masterLot, mode, param, entry, sl, sym){\n    var s = SYMBOLS[sym];\n    if (mode === 'multiplier') return masterLot * param;\n    if (mode === 'fixed') return param;\n    if (mode === 'risk') {\n      var slDist = Math.abs(entry - sl) \/ s.pip;\n      if (slDist === 0) return masterLot;\n      var subBalance = 10000;\n      var risk = subBalance * param \/ 100;\n      return Math.max(0.01, risk \/ (slDist * s.pipValPerLot));\n    }\n    return masterLot;\n  }\n\n  function applyReverseSide(side){\n    if (side === 'BUY') return 'SELL';\n    if (side === 'SELL') return 'BUY';\n    if (side === 'BUYLIMIT') return 'SELLLIMIT';\n    if (side === 'SELLLIMIT') return 'BUYLIMIT';\n    return side;\n  }\n\n  function reverseSLTP(entry, sl, tp){\n    var slDist = sl - entry;\n    var tpDist = tp - entry;\n    return { sl: entry - slDist, tp: entry - tpDist };\n  }\n\n  function renderTerminal(termBodyId, order, opts){\n    var body = $(termBodyId);\n    clear(body);\n    if (!order) {\n      var e = document.createElement('div');\n      e.className = 'terminal-empty';\n      e.innerHTML = 'Waiting...';\n      body.appendChild(e);\n      return;\n    }\n    var s = SYMBOLS[order.sym];\n    var sideClass = order.side.indexOf('BUY') === 0 ? 'side-buy' : 'side-sell';\n    var headHTML = '<span class=\"' + sideClass + '\">' + order.side + '<\/span> ' + fmt(order.lot, 2) + ' ' + order.sym;\n\n    var rows = [\n      { cls: 'head', html: headHTML, label: '' },\n      { cls: '', label: 'Entry', v: fmt(order.entry, s.digits) },\n      { cls: 'sl' + (opts.hidden ? ' hidden-mark' : ''), label: 'Stop loss', v: order.sl > 0 ? fmt(order.sl, s.digits) : '\u2014' },\n      { cls: 'tp' + (opts.hidden ? ' hidden-mark' : ''), label: 'Take profit', v: order.tp > 0 ? fmt(order.tp, s.digits) : '\u2014' },\n      { cls: '', label: 'Account', v: opts.account || '\u2014' },\n      { cls: '', label: 'Fill time', v: opts.fillTime + ' ms' }\n    ];\n\n    rows.forEach(function(r){\n      var div = document.createElement('div');\n      div.className = 'terminal-line ' + r.cls;\n      if (r.cls === 'head') {\n        div.innerHTML = r.html;\n      } else {\n        div.innerHTML = '<span class=\"label\">' + r.label + '<\/span><span class=\"v\">' + r.v + '<\/span>';\n      }\n      body.appendChild(div);\n    });\n  }\n\n  function setStatus(termSide, dotClass, statusText){\n    var dot = $(termSide + 'Dot');\n    var stat = $(termSide + 'Stat');\n    dot.className = 'dot ' + dotClass;\n    stat.textContent = statusText;\n    var term = $(termSide + 'Term');\n    if (dotClass === 'busy') term.classList.add('active'); else term.classList.remove('active');\n  }\n\n  function animateCounter(from, to, durationMs, onUpdate, onDone){\n    var start = performance.now();\n    function step(now){\n      var t = Math.min(1, (now - start) \/ durationMs);\n      var v = from + (to - from) * t;\n      onUpdate(v);\n      if (t < 1) rafId = requestAnimationFrame(step);\n      else if (onDone) onDone();\n    }\n    rafId = requestAnimationFrame(step);\n  }\n\n  function execute(){\n    if (running) return;\n    running = true;\n    $('executeBtn').disabled = true;\n\n    var sym = $('sym').value;\n    var side = $('side').value;\n    var lots = parseFloat($('lots').value) || 0.01;\n    var entry = parseFloat($('entry').value);\n    var sl = parseFloat($('sl').value);\n    var tp = parseFloat($('tp').value);\n    var lotMode = $('lotMode').value;\n    var param = parseFloat($('lotParam').value) || 1;\n    var isReverse = $('reverse').checked;\n    var isHidden = $('hidden').checked;\n    var isDivision = $('division').checked;\n\n    var masterOrder = { sym: sym, side: side, lot: lots, entry: entry, sl: sl, tp: tp };\n    var subSide = isReverse ? applyReverseSide(side) : side;\n    var subSL = sl; var subTP = tp;\n    if (isReverse) {\n      var rev = reverseSLTP(entry, sl, tp);\n      subSL = rev.sl; subTP = rev.tp;\n    }\n    var subLot = computeSubLot(lots, lotMode, param, entry, sl, sym);\nif (isDivision) {\n    if (subLot > 0.5) {\n        subLot = Math.min(subLot, 0.5);\n    }\n}\n\n    var subOrder = { sym: sym, side: subSide, lot: subLot, entry: entry, sl: subSL, tp: subTP };\n\n    var totalMs = (mode === 'local') ? 22 : 230;\n    var copierMs = (mode === 'local') ? 0.4 : 5;\n    var animDuration = (mode === 'local') ? 2000 : 4500;\n    var masterFillAt = (mode === 'local') ? 12 : 12;\n    var subFillAt = totalMs;\n\n    var elapsedEl = $('timeElapsed');\n    elapsedEl.innerHTML = '0<span class=\"unit\">ms<\/span>';\n    $('timeStatus').textContent = 'RUNNING';\n    $('resultBox').classList.remove('show');\n    setStatus('master', 'busy', 'sending');\n    setStatus('sub', '', 'waiting');\n    renderTerminal('masterBody', null, {});\n    renderTerminal('subBody', null, {});\n\n    $('arrowL').classList.add('active');\n\n    var copierCard = $('copierCard');\n    setTimeout(function(){ copierCard.classList.add('active'); }, animDuration * (masterFillAt \/ totalMs));\n    setTimeout(function(){\n      renderTerminal('masterBody', masterOrder, { hidden: false, account: 'MT5 Master', fillTime: masterFillAt });\n      setStatus('master', 'online', 'filled');\n      $('arrowR').classList.add('active');\n    }, animDuration * (masterFillAt \/ totalMs));\n\n    setTimeout(function(){ copierCard.classList.remove('active'); }, animDuration * 0.9);\n\n    setTimeout(function(){\n      setStatus('sub', 'busy', 'filling');\n    }, animDuration * 0.85);\n\n    setTimeout(function(){\n      renderTerminal('subBody', subOrder, { hidden: isHidden, account: 'MT4 Sub \u00b7 prop firm', fillTime: subFillAt });\n      setStatus('sub', 'online', 'filled');\n      $('arrowL').classList.remove('active');\n      $('arrowR').classList.remove('active');\n    }, animDuration * 0.98);\n\n    animateCounter(0, totalMs, animDuration, function(v){\n      elapsedEl.innerHTML = Math.round(v) + '<span class=\"unit\">ms<\/span>';\n    }, function(){\n      $('timeStatus').textContent = 'DONE';\n      showResult(masterOrder, subOrder, totalMs, copierMs, isHidden);\n      running = false;\n      $('executeBtn').disabled = false;\n    });\n  }\n\n  function showResult(master, sub, totalMs, copierMs, hidden){\n    var box = $('resultBox');\n    box.classList.add('show');\n    if (mode === 'cloud') box.classList.add('cloud-mode'); else box.classList.remove('cloud-mode');\n\n    $('statTotal').textContent = totalMs + ' ms';\n    $('statCopier').textContent = copierMs + ' ms';\n    $('statLot').textContent = fmt(sub.lot, 2);\n    var slippagePts = (mode === 'local') ? (Math.round(Math.random() * 2)) : (Math.round(10 + Math.random() * 25));\n    $('statSlip').textContent = slippagePts + ' pts';\n\n    var title, text;\n    if (mode === 'local') {\n      title = 'Order replicated \u00b7 local pipeline';\n      text = 'Master fill at 12 ms, copier picked it up under a millisecond, subaccount mirrored at ' + totalMs + ' ms total. This is the latency you get with master and sub running on the same VPS.';\n    } else {\n      title = 'Order replicated \u00b7 cloud pipeline';\n      text = 'Master fill at 12 ms \u2014 then the event traveled through the vendor cloud (200 ms of network) before arriving at the subaccount broker. Total ' + totalMs + ' ms. Same trade, same brokers, but ~10\u00d7 more slippage.';\n    }\n    $('resultTitle').textContent = title;\n    $('resultText').textContent = text;\n  }\n\n  function reset(){\n    if (rafId) cancelAnimationFrame(rafId);\n    running = false;\n    $('executeBtn').disabled = false;\n    $('timeElapsed').innerHTML = '0<span class=\"unit\">ms<\/span>';\n    $('timeStatus').textContent = 'READY';\n    renderTerminal('masterBody', null, {});\n    renderTerminal('subBody', null, {});\n    var emptyMaster = document.createElement('div');\n    emptyMaster.className = 'terminal-empty';\n    emptyMaster.innerHTML = 'Press <strong>Execute order<\/strong> to place a master order.';\n    $('masterBody').appendChild(emptyMaster);\n    var emptySub = document.createElement('div');\n    emptySub.className = 'terminal-empty';\n    emptySub.innerHTML = 'Waiting for copy from master.';\n    $('subBody').appendChild(emptySub);\n    setStatus('master', 'online', 'idle');\n    setStatus('sub', 'online', 'idle');\n    $('arrowL').classList.remove('active');\n    $('arrowR').classList.remove('active');\n    $('copierCard').classList.remove('active');\n    $('resultBox').classList.remove('show');\n  }\n\n  function applyPreset(name){\n    var presets = {\n      scalper: { sym: 'EURUSD', side: 'BUY', lots: '0.50', entry: '1.08750', sl: '1.08720', tp: '1.08810', lotMode: 'multiplier', lotParam: '1', reverse: false, hidden: false, division: false },\n      prop:    { sym: 'EURUSD', side: 'BUY', lots: '2.00', entry: '1.08750', sl: '1.08600', tp: '1.09050', lotMode: 'risk', lotParam: '1', reverse: false, hidden: false, division: false },\n      reverse: { sym: 'GBPUSD', side: 'SELL', lots: '1.00', entry: '1.26500', sl: '1.26600', tp: '1.26300', lotMode: 'multiplier', lotParam: '1', reverse: true, hidden: false, division: false },\n      hidden:  { sym: 'EURUSD', side: 'BUY', lots: '1.00', entry: '1.08750', sl: '1.08720', tp: '1.08810', lotMode: 'multiplier', lotParam: '1', reverse: false, hidden: true, division: false },\n      gold:    { sym: 'XAUUSD', side: 'BUY', lots: '0.10', entry: '2330.50', sl: '2328.00', tp: '2336.00', lotMode: 'multiplier', lotParam: '2', reverse: false, hidden: false, division: false }\n    };\n    var p = presets[name]; if (!p) return;\n    $('sym').value = p.sym;\n    $('side').value = p.side;\n    $('lots').value = p.lots;\n    $('entry').value = p.entry;\n    $('sl').value = p.sl;\n    $('tp').value = p.tp;\n    $('lotMode').value = p.lotMode;\n    $('lotParam').value = p.lotParam;\n    $('reverse').checked = p.reverse;\n    $('hidden').checked = p.hidden;\n    $('division').checked = p.division;\n    updateLotHelp();\n    reset();\n  }\n\n  document.querySelectorAll('#modeToggle button').forEach(function(b){\n    b.addEventListener('click', function(){ setMode(this.dataset.mode); reset(); });\n  });\n  $('executeBtn').addEventListener('click', execute);\n  $('resetBtn').addEventListener('click', reset);\n  $('sym').addEventListener('change', fillDefaults);\n  $('side').addEventListener('change', function(){\n    var d = defaultSLTP($('sym').value, this.value);\n    $('sl').value = d.sl;\n    $('tp').value = d.tp;\n  });\n  $('lotMode').addEventListener('change', function(){\n    var v = this.value;\n    if (v === 'multiplier') $('lotParam').value = '0.5';\n    else if (v === 'fixed') $('lotParam').value = '0.25';\n    else if (v === 'risk') $('lotParam').value = '1';\n    updateLotHelp();\n  });\n  $('lotParam').addEventListener('input', updateLotHelp);\n  document.querySelectorAll('.sim-preset').forEach(function(btn){\n    btn.addEventListener('click', function(){ applyPreset(this.dataset.preset); });\n  });\n\n  fillDefaults();\n  updateLotHelp();\n  setMode('local');\n})();\n});\n<\/script>\n\n<script type=\"text\/javascript\" async=\"async\" src=\"\/\/web.webformscr.com\/apps\/fc3\/build\/default-handler.js?1776266672751\"><\/script>\n\n\n<div class=\"container\">\n\n  <p class=\"lede\">Configure a master order, choose how it should be copied, and hit Execute. Watch the trade replicate in real time \u2014 and toggle between a local copier and a cloud copier to see the latency gap with your own eyes.<\/p>\n\n  <div class=\"meta\">\n    <span><strong>No signup<\/strong> \u00b7 open in browser<\/span>\n    <span><strong>~3 min<\/strong> to try<\/span>\n    <span><strong>For<\/strong> retail, prop, signal sellers, money managers<\/span>\n  <\/div>\n\n  <h2>The simulator<\/h2>\n\n  <div class=\"sim-wrap\">\n\n    <div class=\"sim-setup\">\n\n      <div class=\"sim-block\">\n        <h3>1. Master order<\/h3>\n\n        <div class=\"sim-row\">\n          <div class=\"sim-field\">\n            <label for=\"sym\">Symbol<\/label>\n            <select id=\"sym\">\n              <option value=\"EURUSD\">EURUSD<\/option>\n              <option value=\"GBPUSD\">GBPUSD<\/option>\n              <option value=\"USDJPY\">USDJPY<\/option>\n              <option value=\"XAUUSD\">XAUUSD (Gold)<\/option>\n              <option value=\"BTCUSD\">BTCUSD<\/option>\n            <\/select>\n          <\/div>\n          <div class=\"sim-field\">\n            <label for=\"side\">Order type<\/label>\n            <select id=\"side\">\n              <option value=\"BUY\">BUY<\/option>\n              <option value=\"SELL\">SELL<\/option>\n              <option value=\"BUYLIMIT\">BUY LIMIT<\/option>\n              <option value=\"SELLLIMIT\">SELL LIMIT<\/option>\n            <\/select>\n          <\/div>\n        <\/div>\n\n        <div class=\"sim-row\">\n          <div class=\"sim-field\">\n            <label for=\"lots\">Lot size<\/label>\n            <input type=\"number\" id=\"lots\" value=\"1.00\" step=\"0.01\" min=\"0.01\" max=\"100\">\n          <\/div>\n          <div class=\"sim-field\">\n            <label for=\"entry\">Entry price<\/label>\n            <input type=\"number\" id=\"entry\" value=\"1.08750\" step=\"0.00001\">\n          <\/div>\n        <\/div>\n\n        <div class=\"sim-row\">\n          <div class=\"sim-field\">\n            <label for=\"sl\">Stop loss<\/label>\n            <input type=\"number\" id=\"sl\" value=\"1.08650\" step=\"0.00001\">\n          <\/div>\n          <div class=\"sim-field\">\n            <label for=\"tp\">Take profit<\/label>\n            <input type=\"number\" id=\"tp\" value=\"1.08950\" step=\"0.00001\">\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"sim-block\">\n        <h3>2. Copy parameters<\/h3>\n\n        <div class=\"sim-row\">\n          <div class=\"sim-field\">\n            <label for=\"lotMode\">Lot mode<\/label>\n            <select id=\"lotMode\">\n              <option value=\"multiplier\">Multiplier (\u00d7 ratio)<\/option>\n              <option value=\"fixed\">Fixed<\/option>\n              <option value=\"risk\">Risk % (uses SL)<\/option>\n            <\/select>\n          <\/div>\n          <div class=\"sim-field\">\n            <label for=\"lotParam\" id=\"lotParamLabel\">Ratio<\/label>\n            <input type=\"number\" id=\"lotParam\" value=\"0.5\" step=\"0.01\" min=\"0.01\">\n            <span class=\"sim-help\" id=\"lotHelp\">sub lot = master \u00d7 0.5<\/span>\n          <\/div>\n        <\/div>\n\n        <label class=\"sim-check\">\n          <input type=\"checkbox\" id=\"reverse\"> Reverse copy \u2014 BUY \u2194 SELL\n        <\/label>\n\n        <label class=\"sim-check\">\n          <input type=\"checkbox\" id=\"hidden\"> Hide SL\/TP from broker (copier-side execution)\n        <\/label>\n\n        <label class=\"sim-check\">\n          <input type=\"checkbox\" id=\"division\"> Division orders \u2014 split into 0.5-lot chunks\n        <\/label>\n      <\/div>\n\n    <\/div>\n\n    <div class=\"sim-controls\">\n      <div class=\"sim-mode\" id=\"modeToggle\">\n        <button class=\"active local\" data-mode=\"local\">LOCAL \u00b7 HFT Copier<\/button>\n        <button data-mode=\"cloud\">CLOUD \u00b7 Vendor routed<\/button>\n      <\/div>\n      <button class=\"sim-execute\" id=\"executeBtn\">Execute order<\/button>\n      <button class=\"sim-reset\" id=\"resetBtn\">Reset<\/button>\n    <\/div>\n\n    <div class=\"sim-stage\">\n\n      <div class=\"terminal master\" id=\"masterTerm\">\n        <div class=\"terminal-header\">\n          <span class=\"platform\">MT5 MASTER \u00b7 YOUR ACCOUNT<\/span>\n          <span class=\"terminal-status\"><span class=\"dot online\" id=\"masterDot\"><\/span> <span id=\"masterStat\">idle<\/span><\/span>\n        <\/div>\n        <div class=\"terminal-body\" id=\"masterBody\">\n          <div class=\"terminal-empty\">Press <strong>Execute order<\/strong> to place a master order.<\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"copier-flow\">\n        <div class=\"flow-arrow left\" id=\"arrowL\"><span class=\"pulse\"><\/span><\/div>\n        <div class=\"copier-card\" id=\"copierCard\">\n          <div class=\"name\" id=\"copierName\">HFT FOREX COPIER<\/div>\n          <div class=\"role\" id=\"copierRole\">Local<\/div>\n          <div class=\"latency\" id=\"copierLat\">&lt;1 ms<\/div>\n        <\/div>\n        <div class=\"flow-arrow right\" id=\"arrowR\"><span class=\"pulse\"><\/span><\/div>\n      <\/div>\n\n      <div class=\"terminal sub\" id=\"subTerm\">\n        <div class=\"terminal-header\">\n          <span class=\"platform\">MT4 SUB \u00b7 PROP-FIRM ACCOUNT<\/span>\n          <span class=\"terminal-status\"><span class=\"dot online\" id=\"subDot\"><\/span> <span id=\"subStat\">idle<\/span><\/span>\n        <\/div>\n        <div class=\"terminal-body\" id=\"subBody\">\n          <div class=\"terminal-empty\">Waiting for copy from master.<\/div>\n        <\/div>\n      <\/div>\n\n    <\/div>\n\n    <div class=\"sim-timer local\" id=\"timer\">\n      <div class=\"time-block\">\n        <span class=\"time-label\">Elapsed<\/span>\n        <span class=\"time-value\" id=\"timeElapsed\">0<span class=\"unit\">ms<\/span><\/span>\n      <\/div>\n      <div class=\"time-block\">\n        <span class=\"time-label\">Mode<\/span>\n        <span class=\"time-value\" id=\"timeMode\" style=\"font-size: 22px;\">LOCAL<\/span>\n      <\/div>\n      <div class=\"time-block\">\n        <span class=\"time-label\">Status<\/span>\n        <span class=\"time-value\" id=\"timeStatus\" style=\"font-size: 22px;\">READY<\/span>\n      <\/div>\n    <\/div>\n\n    <div class=\"sim-result\" id=\"resultBox\">\n      <h3 id=\"resultTitle\">Order replicated<\/h3>\n      <p id=\"resultText\">Master order opened, copier picked it up, subaccount mirrored. Here is the breakdown.<\/p>\n      <div class=\"stats-grid\">\n        <div class=\"stat\"><span class=\"stat-label\">Total round-trip<\/span><span class=\"stat-value\" id=\"statTotal\">22 ms<\/span><\/div>\n        <div class=\"stat\"><span class=\"stat-label\">Copier internal<\/span><span class=\"stat-value\" id=\"statCopier\">0.4 ms<\/span><\/div>\n        <div class=\"stat\"><span class=\"stat-label\">Sub lot size<\/span><span class=\"stat-value\" id=\"statLot\">0.50<\/span><\/div>\n        <div class=\"stat\"><span class=\"stat-label\">Price slippage<\/span><span class=\"stat-value\" id=\"statSlip\">0 pts<\/span><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"sim-presets\">\n      <span class=\"sim-presets-label\">Try a preset<\/span>\n      <button class=\"sim-preset\" data-preset=\"scalper\">Scalper \u00b7 0.5 lot quick BUY<\/button>\n      <button class=\"sim-preset\" data-preset=\"prop\">Prop trader \u00b7 risk-% sizing<\/button>\n      <button class=\"sim-preset\" data-preset=\"reverse\">Reverse copy strategy<\/button>\n      <button class=\"sim-preset\" data-preset=\"hidden\">Hidden SL\/TP scalper<\/button>\n      <button class=\"sim-preset\" data-preset=\"gold\">Gold scalp \u00b7 2\u00d7 multiplier<\/button>\n    <\/div>\n\n    <p class=\"sim-disclaimer\">Simulation slowed for visibility \u00b7 timings shown reflect realistic real-world milliseconds for each architecture.<\/p>\n\n  <\/div>\n\n  <h2>What you just saw<\/h2>\n\n  <p>The simulator walks through the same pipeline a real trade copier does. With the <strong>Local<\/strong> mode selected, the master terminal sends an order, the copier reads it from the local API in well under a millisecond, and the subaccount receives the mirrored order \u2014 total round-trip under 25 ms. Switch to <strong>Cloud<\/strong> mode and the master event has to travel through a vendor data centre before it reaches the subaccount broker \u2014 adding roughly 200 ms of pure network latency that the local path never pays.<\/p>\n\n  <p>The copy parameters mirror the real product. Choose <strong>Multiplier<\/strong> to scale the subaccount lot by a fixed ratio, <strong>Fixed<\/strong> to send a constant size regardless of master lot, or <strong>Risk %<\/strong> to compute the subaccount size from its own balance and the master&#8217;s stop-loss distance (the math is in the <a href=\"\/forex-trade-copier-guide\/\">Pillar guide<\/a>). <strong>Reverse<\/strong> flips BUY into SELL and rearranges SL\/TP. <strong>Hidden SL\/TP<\/strong> keeps the stop and target on the copier side rather than at the broker \u2014 the subaccount looks SL\/TP-free to the broker, and the copier closes the position when price reaches the saved level.<\/p>\n\n  <div class=\"callout\">\n    <p><strong>What this is and isn&#8217;t.<\/strong> The simulator demonstrates the workflow, the parameters, and the realistic latency gap. It does not route live orders to a real broker \u2014 for that, install the actual software and connect MT4\/MT5\/cTrader accounts. The 10-day free trial gives you the full thing.<\/p>\n  <\/div>\n\n  <h2>FAQ<\/h2>\n\n  <h3>Is the latency realistic?<\/h3>\n  <p>Yes \u2014 within the typical observed ranges for each architecture. A local copier with master and subaccount terminals on the same Windows machine adds well under a millisecond of internal processing. A cloud copier routes through the vendor&#8217;s data centre, adding 100\u2013500 ms depending on geography and broker proximity. The simulator uses the middle of those ranges.<\/p>\n\n  <h3>What is &#8220;hidden SL\/TP&#8221; actually doing?<\/h3>\n  <p>The copier remembers the stop-loss and take-profit levels for the subaccount order, but does not send them to the broker. When the subaccount price reaches the saved level, the copier closes the position with a market order. To the broker, the subaccount looks like it has no SL\/TP at all \u2014 useful when traders suspect stop-hunting or when prop firms restrict broker-side SL placement.<\/p>\n\n  <h3>How does the Risk-% lot mode work?<\/h3>\n  <p>The subaccount lot is computed as <em>(subaccount balance \u00d7 risk%) \/ (stop-loss distance \u00d7 pip value)<\/em>. A 1 % risk on a 10 000 USD subaccount with a 50-pip SL works out to a roughly 0.20-lot position. The mode requires the master order to have a stop-loss \u2014 without SL, the formula has no risk denominator.<\/p>\n\n  <h3>Can I configure more than one subaccount in the real product?<\/h3>\n  <p>Yes \u2014 unlimited subaccounts in the licensed product. Each one can have its own platform (MT4, MT5, cTrader, FIX, DXtrade, MatchTrader, NinjaTrader), its own lot mode, magic-number filter, symbol mapping, and reverse setting. The simulator shows one master and one subaccount for clarity.<\/p>\n\n  <h3>Why is Reverse mode useful?<\/h3>\n  <p>Two common cases. One: you have a signal that loses consistently \u2014 reversing every trade turns the master into a profitable contra-signal. Two: hedging \u2014 running the reversed strategy on a second account locks in profit on whichever side wins. Reverse also rearranges SL\/TP to preserve the same risk distance from the new direction.<\/p>\n\n  <div class=\"cta\">\n    <h3>Run this on real accounts<\/h3>\n    <p>The simulator above is the workflow. The 10-day free trial is the real software, full features, no card required.<\/p>\n    <a href=\"\/\" class=\"cta-button\">Start free trial<\/a>\n  <\/div>\n\n  <h2>Continue exploring<\/h2>\n\n  <div class=\"related\">\n    <h3>Related pages<\/h3>\n    <div class=\"related-grid\">\n      <a class=\"related-card\" href=\"\/forex-trade-copier-guide\/\">Trade Copier Guide<\/a>\n      <a class=\"related-card\" href=\"\/forex-trade-copier-glossary\/\">Glossary<\/a>\n      <a class=\"related-card\" href=\"\/cloud-vs-local-trade-copier-latency-benchmark\/\">Cloud vs Local Benchmark<\/a>\n      <a class=\"related-card\" href=\"\/why-millisecond-latency-matters-trade-copier\/\">Why Latency Matters<\/a>\n      <a class=\"related-card\" href=\"\/prop-firm-rules-database\/\">Prop Firm Database<\/a>\n      <a class=\"related-card\" href=\"\/hft-forex-copier-vs-duplikium\/\">vs Duplikium<\/a>\n      <a class=\"related-card\" href=\"\/copy-signals-prop-firm-account-mt4-mt5\/\">Prop-Firm Copy<\/a>\n      <a class=\"related-card\" href=\"\/hft-forex-copier-usage\/\">Full Usage Manual<\/a>\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<style>.sp-force-hide { display: none;}.sp-form[sp-id=\"253732\"] { display: block; background: #ffffff; padding: 15px; width: 450px; max-width: 100%; border-radius: 8px; border-color: #dddddd; border-style: solid; border-width: 1px; font-family: Arial, \"Helvetica Neue\", sans-serif; background-repeat: no-repeat; background-position: center; background-size: auto;}.sp-form[sp-id=\"253732\"] input[type=\"checkbox\"] { display: inline-block; opacity: 1; visibility: visible;}.sp-form[sp-id=\"253732\"] .sp-form-fields-wrapper { margin: 0 auto; width: 420px;}.sp-form[sp-id=\"253732\"] .sp-form-control { background: #ffffff; border-color: #cccccc; border-style: solid; border-width: 1px; font-size: 15px; padding-left: 8.75px; padding-right: 8.75px; border-radius: 4px; height: 35px; width: 100%;}.sp-form[sp-id=\"253732\"] .sp-field label { color: #444444; font-size: 13px; font-style: normal; font-weight: bold;}.sp-form[sp-id=\"253732\"] .sp-button-messengers { border-radius: 4px;}.sp-form[sp-id=\"253732\"] .sp-button { border-radius: 4px; background-color: #0089bf; color: #ffffff; width: auto; font-weight: bold;}.sp-form[sp-id=\"253732\"] .sp-button-container { text-align: left;}<\/style>\n<div class=\"sp-form-outer sp-force-hide\"><div id=\"sp-form-253732\" sp-id=\"253732\" sp-hash=\"482fedd8bc25982ff099ac8d3190c8734d313ce7cd41e80dd1a1937e3434d6e4\" sp-lang=\"en\" class=\"sp-form sp-form-regular sp-form-embed\" sp-show-options=\"%7B%22satellite%22%3Afalse%2C%22maDomain%22%3A%22login.sendpulse.com%22%2C%22formsDomain%22%3A%22forms.sendpulse.com%22%2C%22condition%22%3A%22onEnter%22%2C%22scrollTo%22%3A25%2C%22delay%22%3A10%2C%22repeat%22%3A3%2C%22background%22%3A%22rgba(0%2C%200%2C%200%2C%200.5)%22%2C%22position%22%3A%22bottom-right%22%2C%22animation%22%3A%22%22%2C%22hideOnMobile%22%3Afalse%2C%22submitRedirectUrl%22%3A%22%22%2C%22urlFilter%22%3Afalse%2C%22urlFilterConditions%22%3A%5B%7B%22force%22%3A%22hide%22%2C%22clause%22%3A%22contains%22%2C%22token%22%3A%22%22%7D%5D%2C%22analytics%22%3A%7B%22ga%22%3A%7B%22eventLabel%22%3Anull%2C%22send%22%3Afalse%7D%7D%2C%22utmEnable%22%3Afalse%7D\"><div class=\"sp-form-fields-wrapper\"><div class=\"sp-message\"><div><\/div><\/div><form novalidate=\"\" class=\"sp-element-container \"><div class=\"sp-field sp-field-full-width\" sp-id=\"sp-d9acec2f-bd80-4f4d-b5d0-aac83dbe0757\"><div style=\"font-family: inherit; line-height: 1.2;\"><p><strong>Get HFT &amp; Copy Trading Insights \u2014 Straight to Your Inbox.<\/strong><\/p><p>Setup guides, performance updates, and new feature releases for HFT Forex Copier. No hype, no spam.<\/p><\/div><\/div><div class=\"sp-field \" sp-id=\"sp-1b6442ff-60d5-4caf-8c29-c8d6c7c03128\"><label class=\"sp-control-label\"><span>Email<\/span><strong>*<\/strong><\/label><input type=\"email\" sp-type=\"email\" name=\"sform[email]\" class=\"sp-form-control \" placeholder=\"username@gmail.com\" sp-tips=\"%7B%22required%22%3A%22Required%20field%22%2C%22wrong%22%3A%22Wrong%20email%22%7D\" autocomplete=\"on\" required=\"required\"><\/div><div class=\"sp-field sp-button-container \" sp-id=\"sp-97370369-5dc4-46e9-82eb-3f865f050d89\"><button id=\"sp-97370369-5dc4-46e9-82eb-3f865f050d89\" class=\"sp-button\">Subscribe <\/button><\/div><\/form><div class=\"sp-link-wrapper sp-brandname__left \"><\/div><\/div><\/div><\/div>\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"Article\",\n  \"@id\": \"https:\/\/hftforexcopier.com\/prop-firm-rules-database\/#article\",\n  \"headline\": \"The Open Prop Firm Rules Database \u2014 50+ Forex Prop Firms Compared (2026)\",\n  \"description\": \"Open, community-maintained database of trading rules across 50+ forex prop firms. Daily drawdown, max drawdown, profit target, news rule, copy-trade rule, and more. Free Google Sheet plus GitHub repository.\",\n  \"author\": {\"@type\": \"Organization\", \"name\": \"HFT Forex Copier\", \"url\": \"https:\/\/hftforexcopier.com\/\"},\n  \"publisher\": {\"@type\": \"Organization\", \"name\": \"HFT Forex Copier\", \"url\": \"https:\/\/hftforexcopier.com\/\", \"logo\": {\"@type\": \"ImageObject\", \"url\": \"https:\/\/hftforexcopier.com\/wp-content\/uploads\/2023\/01\/logo.png\"}},\n  \"datePublished\": \"2026-05-05\",\n  \"dateModified\": \"2026-05-05\",\n  \"mainEntityOfPage\": {\"@type\": \"WebPage\", \"@id\": \"https:\/\/hftforexcopier.com\/prop-firm-rules-database\/\"},\n  \"about\": [\n    {\"@type\": \"Thing\", \"name\": \"Forex prop firm\"},\n    {\"@type\": \"Thing\", \"name\": \"Proprietary trading firm\"},\n    {\"@type\": \"Thing\", \"name\": \"Trading rules\"},\n    {\"@type\": \"Thing\", \"name\": \"Daily drawdown\"},\n    {\"@type\": \"Thing\", \"name\": \"Maximum drawdown\"},\n    {\"@type\": \"Thing\", \"name\": \"Profit target\"},\n    {\"@type\": \"Thing\", \"name\": \"Funded account\"},\n    {\"@type\": \"Thing\", \"name\": \"Copy trading\"}\n  ],\n  \"inLanguage\": \"en\"\n}\n<\/script>\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"Dataset\",\n  \"@id\": \"https:\/\/hftforexcopier.com\/prop-firm-rules-database\/#dataset\",\n  \"name\": \"Open Prop Firm Rules Database\",\n  \"description\": \"Open dataset of trading rules across 50+ forex proprietary trading firms. Includes drawdown limits, profit targets, news rules, copy-trade permissions, platforms supported, and profit splits. Updated continuously by the community.\",\n  \"url\": \"https:\/\/hftforexcopier.com\/prop-firm-rules-database\/\",\n  \"creator\": {\"@type\": \"Organization\", \"name\": \"HFT Forex Copier\", \"url\": \"https:\/\/hftforexcopier.com\/\"},\n  \"license\": \"https:\/\/creativecommons.org\/licenses\/by\/4.0\/\",\n  \"isAccessibleForFree\": true,\n  \"keywords\": [\"prop firm\", \"forex prop firm\", \"proprietary trading\", \"trading rules\", \"drawdown rules\", \"profit target\", \"funded account\", \"copy trading\"],\n  \"datePublished\": \"2026-05-05\"\n}\n<\/script>\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"BreadcrumbList\",\n  \"itemListElement\": [\n    {\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/hftforexcopier.com\/\"},\n    {\"@type\":\"ListItem\",\"position\":2,\"name\":\"Prop Firm Rules Database\",\"item\":\"https:\/\/hftforexcopier.com\/prop-firm-rules-database\/\"}\n  ]\n}\n<\/script>\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\"@type\":\"Question\",\"name\":\"How often is the database updated?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Continuously. Every row has a 'Last verified' date. The community submits updates as pull requests on the GitHub repo or as edit-suggestions in the Google Sheet. We review and merge weekly.\"}},\n    {\"@type\":\"Question\",\"name\":\"Can I trust this data for trading decisions?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Treat the database as a starting point, not the final word. Every cell links back to the firm's source page. Always verify with the prop firm directly before relying on a specific rule for a trade you are about to place. Rule books change without notice.\"}},\n    {\"@type\":\"Question\",\"name\":\"How do I add or correct a firm?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Open a pull request on the GitHub repo (preferred) or submit edit-suggestions in the Google Sheet. Each entry needs a source URL \u2014 typically the firm's official rule book or terms page \u2014 so the data stays auditable.\"}},\n    {\"@type\":\"Question\",\"name\":\"Is this only forex prop firms?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"The current scope is forex-focused prop firms. Some included firms also offer indices, commodities, and crypto \u2014 those rules are noted in the per-asset notes column. Pure futures or stock prop firms (Topstep, Apex, etc.) are not in scope for v1.\"}},\n    {\"@type\":\"Question\",\"name\":\"Why are some cells marked 'unclear'?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Some rules are not documented unambiguously on the firm's public site. Rather than guess, we mark the cell 'unclear' and link the source page so users can read it themselves. We prefer honest gaps to incorrect data.\"}},\n    {\"@type\":\"Question\",\"name\":\"Can I download the data as CSV?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. The GitHub repository hosts the canonical data as CSV and as a markdown table. The Google Sheet is for browsing and filtering; the GitHub copy is for analysis and integration.\"}},\n    {\"@type\":\"Question\",\"name\":\"Do you have a position on which prop firm is best?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. The database is meant to surface facts, not opinions. Different traders have different priorities \u2014 drawdown structure, profit split, platforms supported, news rule, payout speed. The right firm for a swing trader is rarely the right firm for a scalper. The database lets you filter by what matters to you.\"}}\n  ]\n}\n<\/script>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Configure a master order, choose how it should be copied, and hit Execute. Watch the trade replicate in real time \u2014 and toggle between a local copier and a cloud copier to see the latency gap with your own eyes. No signup \u00b7 open in browser ~3 min to try For retail, prop, signal sellers, [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary conversions-read-more-link\" href=\"https:\/\/hftforexcopier.com\/de\/trade-copier-simulator\/\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/fullwidthpage.php","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-1975","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Interactive Trade Copier Simulator. See HFT Forex Copier in Action<\/title>\n<meta name=\"description\" content=\"Configure a master order, choose copy parameters, hit Execute \u2014 watch the order replicate in real time. Compare local vs cloud latency live.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hftforexcopier.com\/de\/trade-copier-simulator\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Interactive Trade Copier Simulator. See HFT Forex Copier in Action\" \/>\n<meta property=\"og:description\" content=\"Configure a master order, choose copy parameters, hit Execute \u2014 watch the order replicate in real time. Compare local vs cloud latency live.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hftforexcopier.com\/de\/trade-copier-simulator\/\" \/>\n<meta property=\"og:site_name\" content=\"HFT Forex Copier \u2014 Trade Copier for MT4, MT5, cTrader, FIX\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-04T20:48:59+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"4\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/hftforexcopier.com\\\/trade-copier-simulator\\\/\",\"url\":\"https:\\\/\\\/hftforexcopier.com\\\/trade-copier-simulator\\\/\",\"name\":\"Interactive Trade Copier Simulator. See HFT Forex Copier in Action\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hftforexcopier.com\\\/#website\"},\"datePublished\":\"2026-06-04T17:02:28+00:00\",\"dateModified\":\"2026-06-04T20:48:59+00:00\",\"description\":\"Configure a master order, choose copy parameters, hit Execute \u2014 watch the order replicate in real time. Compare local vs cloud latency live.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/hftforexcopier.com\\\/trade-copier-simulator\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/hftforexcopier.com\\\/trade-copier-simulator\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/hftforexcopier.com\\\/trade-copier-simulator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/hftforexcopier.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Interactive Trade Copier Simulator\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/hftforexcopier.com\\\/#website\",\"url\":\"https:\\\/\\\/hftforexcopier.com\\\/\",\"name\":\"HFT Forex Copier \u2014 Trade Copier for MT4, MT5, cTrader, FIX\",\"description\":\"HFT Forex Trade Copier - a standalone universal program designed to copy any type of order between different trading platforms and via FIX APInother WordPress site\",\"publisher\":{\"@id\":\"https:\\\/\\\/hftforexcopier.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/hftforexcopier.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/hftforexcopier.com\\\/#organization\",\"name\":\"HFT Forex Copier \u2014 Trade Copier for MT4, MT5, cTrader, FIX\",\"url\":\"https:\\\/\\\/hftforexcopier.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/hftforexcopier.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/hftforexcopier.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/hft-forex-copier-logo.png\",\"contentUrl\":\"https:\\\/\\\/hftforexcopier.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/hft-forex-copier-logo.png\",\"width\":360,\"height\":93,\"caption\":\"HFT Forex Copier \u2014 Trade Copier for MT4, MT5, cTrader, FIX\"},\"image\":{\"@id\":\"https:\\\/\\\/hftforexcopier.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Interactive Trade Copier Simulator. See HFT Forex Copier in Action","description":"Configure a master order, choose copy parameters, hit Execute \u2014 watch the order replicate in real time. Compare local vs cloud latency live.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/hftforexcopier.com\/de\/trade-copier-simulator\/","og_locale":"de_DE","og_type":"article","og_title":"Interactive Trade Copier Simulator. See HFT Forex Copier in Action","og_description":"Configure a master order, choose copy parameters, hit Execute \u2014 watch the order replicate in real time. Compare local vs cloud latency live.","og_url":"https:\/\/hftforexcopier.com\/de\/trade-copier-simulator\/","og_site_name":"HFT Forex Copier \u2014 Trade Copier for MT4, MT5, cTrader, FIX","article_modified_time":"2026-06-04T20:48:59+00:00","twitter_card":"summary_large_image","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"4\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/hftforexcopier.com\/trade-copier-simulator\/","url":"https:\/\/hftforexcopier.com\/trade-copier-simulator\/","name":"Interactive Trade Copier Simulator. See HFT Forex Copier in Action","isPartOf":{"@id":"https:\/\/hftforexcopier.com\/#website"},"datePublished":"2026-06-04T17:02:28+00:00","dateModified":"2026-06-04T20:48:59+00:00","description":"Configure a master order, choose copy parameters, hit Execute \u2014 watch the order replicate in real time. Compare local vs cloud latency live.","breadcrumb":{"@id":"https:\/\/hftforexcopier.com\/trade-copier-simulator\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hftforexcopier.com\/trade-copier-simulator\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/hftforexcopier.com\/trade-copier-simulator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hftforexcopier.com\/"},{"@type":"ListItem","position":2,"name":"Interactive Trade Copier Simulator"}]},{"@type":"WebSite","@id":"https:\/\/hftforexcopier.com\/#website","url":"https:\/\/hftforexcopier.com\/","name":"HFT Forex Copier \u2014 Trade Copier f\u00fcr MT4, MT5, cTrader, FIX","description":"HFT Forex Trade Copier - ein eigenst\u00e4ndiges, universelles Programm zum Kopieren jeder Art von Auftr\u00e4gen zwischen verschiedenen Handelsplattformen und \u00fcber FIX APInother WordPress site","publisher":{"@id":"https:\/\/hftforexcopier.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hftforexcopier.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/hftforexcopier.com\/#organization","name":"HFT Forex Copier \u2014 Trade Copier f\u00fcr MT4, MT5, cTrader, FIX","url":"https:\/\/hftforexcopier.com\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/hftforexcopier.com\/#\/schema\/logo\/image\/","url":"https:\/\/hftforexcopier.com\/wp-content\/uploads\/2022\/06\/hft-forex-copier-logo.png","contentUrl":"https:\/\/hftforexcopier.com\/wp-content\/uploads\/2022\/06\/hft-forex-copier-logo.png","width":360,"height":93,"caption":"HFT Forex Copier \u2014 Trade Copier for MT4, MT5, cTrader, FIX"},"image":{"@id":"https:\/\/hftforexcopier.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/hftforexcopier.com\/de\/wp-json\/wp\/v2\/pages\/1975","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hftforexcopier.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hftforexcopier.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hftforexcopier.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hftforexcopier.com\/de\/wp-json\/wp\/v2\/comments?post=1975"}],"version-history":[{"count":8,"href":"https:\/\/hftforexcopier.com\/de\/wp-json\/wp\/v2\/pages\/1975\/revisions"}],"predecessor-version":[{"id":1983,"href":"https:\/\/hftforexcopier.com\/de\/wp-json\/wp\/v2\/pages\/1975\/revisions\/1983"}],"wp:attachment":[{"href":"https:\/\/hftforexcopier.com\/de\/wp-json\/wp\/v2\/media?parent=1975"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}