<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Cradicle Explorer</title>
    <link href="/css/bootstrap/bootstrap.min.css" rel="stylesheet">
    <style>
      .form-control-dark::placeholder {
          color: #aaa;
          opacity: 1;
      }
    </style>
    <link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
    <link rel="icon" type="image/png" href="/favicon.png">


                <link href="/css/dashboard.css" rel="stylesheet">
                </head>
                <body>
                <header class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow">
                  <a class="navbar-brand col-md-3 col-lg-2 me-0 px-3 fs-6" href="/">Cradicle Explorer</a>
                  <button class="navbar-toggler position-absolute d-md-none collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#sidebarMenu" aria-controls="sidebarMenu" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                  </button>
                  <form method="get" action="/cgi-bin/main" style="width:100%;"><input class="form-control form-control-dark w-100 rounded-0 border-0" type="text" name="q" placeholder="Search repos" aria-label="Search"></form>
                  <div class="navbar-nav flex-row">
                    <div class="nav-item text-nowrap">
                      <a class="nav-link px-3 active" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh">Planar.jl</a>
                    </div>
                  </div>
                </header>
                <div class="container-fluid">
                  <div class="row">
                    <nav id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block bg-dark sidebar collapse">
                      <div class="position-sticky pt-3 sidebar-sticky">
                        <ul class="nav flex-column">
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh">
                              <i class="align-text-bottom fa-solid fa-info"></i>
                              Info
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&issue=list">
                              <i class="align-text-bottom fa-solid fa-layer-group"></i>
                              Issues
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&patch=list">
                              <i class="align-text-bottom fa-solid fa-vest-patches"></i>
                              Patches
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&wallet=list">
                              <i class="align-text-bottom fa-solid fa-wallet"></i>
                              Wallets
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link active" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=.">
                              <i class="align-text-bottom fa-solid fa-code"></i>
                              Source
                            </a>
                          </li>
                        <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted text-uppercase">
                          <span></span>
                        </h6>
                        <ul class="nav flex-column mb-2">
                        
    <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-1 mb-1 text-muted text-uppercase">
      <span>Source</span>
    </h6>
    <li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=.dev"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> .dev</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=.github"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> .github</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Ccxt"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Ccxt</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Cli"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Cli</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Collections"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Collections</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Data"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Data</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Engine"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Engine</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=ExchangeTypes"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> ExchangeTypes</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Exchanges"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Exchanges</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Executors"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Executors</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=FeatureSelection"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> FeatureSelection</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Fetch"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Fetch</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Instances"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Instances</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Instruments"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Instruments</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Lang"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Lang</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=LiveMode"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> LiveMode</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Metrics"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Metrics</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Misc"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Misc</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Opt"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Opt</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=OrderTypes"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> OrderTypes</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=PaperMode"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> PaperMode</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Pbar"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Pbar</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Planar"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Planar</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=PlanarDev"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> PlanarDev</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=PlanarInteractive"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> PlanarInteractive</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Plotting"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Plotting</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Processing"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Processing</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Python"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Python</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Remote"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Remote</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Scrapers"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Scrapers</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=SimMode"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> SimMode</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Simulations"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Simulations</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Strategies"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Strategies</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=StrategyStats"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> StrategyStats</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=StrategyTools"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> StrategyTools</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=StrategyTools%2Fsrc"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> src</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=StrategyTools%2Fsrc%2FStrategyTools.jl"><i class="fa-solid fa-file" style="color:#888;"></i> StrategyTools.jl</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=StrategyTools%2Fsrc%2Fchecks.jl"><i class="fa-solid fa-file" style="color:#888;"></i> checks.jl</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=StrategyTools%2Fsrc%2Fcross.jl"><i class="fa-solid fa-file" style="color:#888;"></i> cross.jl</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=StrategyTools%2Fsrc%2Fextrema.jl"><i class="fa-solid fa-file" style="color:#888;"></i> extrema.jl</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=StrategyTools%2Fsrc%2Fmodule.jl"><i class="fa-solid fa-file" style="color:#888;"></i> module.jl</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=StrategyTools%2Fsrc%2Fohlcv.jl"><i class="fa-solid fa-file" style="color:#888;"></i> ohlcv.jl</a></li><li><a class="nav-link py-0 active" style="padding-left:48px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=StrategyTools%2Fsrc%2Forders.jl"><i class="fa-solid fa-file" style="color:#888;"></i> orders.jl</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=StrategyTools%2Fsrc%2Foti.jl"><i class="fa-solid fa-file" style="color:#888;"></i> oti.jl</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=StrategyTools%2Fsrc%2Fprecompile.jl"><i class="fa-solid fa-file" style="color:#888;"></i> precompile.jl</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=StrategyTools%2Fsrc%2Fsignals.jl"><i class="fa-solid fa-file" style="color:#888;"></i> signals.jl</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=StrategyTools%2Fsrc%2Ftrackers.jl"><i class="fa-solid fa-file" style="color:#888;"></i> trackers.jl</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=StrategyTools%2Fsrc%2Futils.jl"><i class="fa-solid fa-file" style="color:#888;"></i> utils.jl</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=StrategyTools%2Fsrc%2Fwarmup.jl"><i class="fa-solid fa-file" style="color:#888;"></i> warmup.jl</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=StrategyTools%2FManifest.toml"><i class="fa-solid fa-file" style="color:#888;"></i> Manifest.toml</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=StrategyTools%2FProject.toml"><i class="fa-solid fa-file" style="color:#888;"></i> Project.toml</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Stubs"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Stubs</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=TimeTicks"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> TimeTicks</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=Watchers"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> Watchers</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=deps"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> deps</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=docs"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> docs</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=reports"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> reports</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=scripts"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> scripts</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=user"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> user</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=vendor"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> vendor</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=.JuliaFormatter.toml"><i class="fa-solid fa-file" style="color:#888;"></i> .JuliaFormatter.toml</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=.envrc"><i class="fa-solid fa-file" style="color:#888;"></i> .envrc</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=.gitattributes"><i class="fa-solid fa-file" style="color:#888;"></i> .gitattributes</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=.gitignore"><i class="fa-solid fa-file" style="color:#888;"></i> .gitignore</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=CONTRIBUTING.md"><i class="fa-solid fa-file" style="color:#888;"></i> CONTRIBUTING.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=Dockerfile"><i class="fa-solid fa-file" style="color:#888;"></i> Dockerfile</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=LICENSE.md"><i class="fa-solid fa-file" style="color:#888;"></i> LICENSE.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=README.md"><i class="fa-solid fa-file" style="color:#888;"></i> README.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&file=resolve.jl"><i class="fa-solid fa-file" style="color:#888;"></i> resolve.jl</a></li>
    
                        </ul>
                      </div>
                    </nav>
                <main class="col-md-9 ms-sm-auto col-lg-10">
                  <div class="container px-1 py-3">
        
<div class="mb-2" style="font-size:1.1rem;"><a href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=.">/</a> <a href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=StrategyTools">StrategyTools</a> / <a href="/cgi-bin/repo?id=z216tRvM68y7XbxBKNGGF6Sbdgmkh&source=StrategyTools%2Fsrc">src</a> / orders.jl</div>
        <div class="list-group">
        <div class="list-group-item">
        <div class="mb-2" style="font-weight:bold;"><i class="fa-solid fa-file"></i> orders.jl</div>
        <pre style="margin:0; font-size:0.85rem; overflow-x:auto; color:#fafafa;"><span style="color:#666; user-select:none;"> 1</span>  
<span style="color:#666; user-select:none;"> 2</span>  const TradeResult = Union{Missing,Nothing,&lt;:Trade,&lt;:OrderError}
<span style="color:#666; user-select:none;"> 3</span>  
<span style="color:#666; user-select:none;"> 4</span>  @doc &quot;&quot;&quot; Selects an order type based on the strategy, order side, and position side
<span style="color:#666; user-select:none;"> 5</span>  
<span style="color:#666; user-select:none;"> 6</span>  $(TYPEDSIGNATURES)
<span style="color:#666; user-select:none;"> 7</span>  
<span style="color:#666; user-select:none;"> 8</span>  Selects an order type `os` based on the strategy `s` and the position side `p`. The order type is determined by the `ordertype` attribute of the strategy.
<span style="color:#666; user-select:none;"> 9</span>  &quot;&quot;&quot;
<span style="color:#666; user-select:none;">10</span>  function select_ordertype(s::Strategy, os::Type{&lt;:OrderSide}, p::PositionSide=Long(); t=s.ordertype)
<span style="color:#666; user-select:none;">11</span>      if p == Long()
<span style="color:#666; user-select:none;">12</span>          if t == :market
<span style="color:#666; user-select:none;">13</span>              MarketOrder{os}, t
<span style="color:#666; user-select:none;">14</span>          elseif t == :ioc
<span style="color:#666; user-select:none;">15</span>              IOCOrder{os}, t
<span style="color:#666; user-select:none;">16</span>          elseif t == :fok
<span style="color:#666; user-select:none;">17</span>              FOKOrder{os}, t
<span style="color:#666; user-select:none;">18</span>          elseif t == :gtc
<span style="color:#666; user-select:none;">19</span>              GTCOrder{os}, t
<span style="color:#666; user-select:none;">20</span>          elseif t == :po
<span style="color:#666; user-select:none;">21</span>              PostOnlyOrder{os}, t
<span style="color:#666; user-select:none;">22</span>          else
<span style="color:#666; user-select:none;">23</span>              error(&quot;Wrong order type $t&quot;)
<span style="color:#666; user-select:none;">24</span>          end
<span style="color:#666; user-select:none;">25</span>      else
<span style="color:#666; user-select:none;">26</span>          if t == :market
<span style="color:#666; user-select:none;">27</span>              ShortMarketOrder{os}, t
<span style="color:#666; user-select:none;">28</span>          elseif t == :ioc
<span style="color:#666; user-select:none;">29</span>              ShortIOCOrder{os}, t
<span style="color:#666; user-select:none;">30</span>          elseif t == :fok
<span style="color:#666; user-select:none;">31</span>              ShortFOKOrder{os}, t
<span style="color:#666; user-select:none;">32</span>          elseif t == :gtc
<span style="color:#666; user-select:none;">33</span>              ShortGTCOrder{os}, t
<span style="color:#666; user-select:none;">34</span>          elseif t == :po
<span style="color:#666; user-select:none;">35</span>              ShortPostOnlyOrder{os}, t
<span style="color:#666; user-select:none;">36</span>          else
<span style="color:#666; user-select:none;">37</span>              error(&quot;Wrong order type $t&quot;)
<span style="color:#666; user-select:none;">38</span>          end
<span style="color:#666; user-select:none;">39</span>      end
<span style="color:#666; user-select:none;">40</span>  end
<span style="color:#666; user-select:none;">41</span>  
<span style="color:#666; user-select:none;">42</span>  function price_from_trades(ai)
<span style="color:#666; user-select:none;">43</span>      h = trades(ai)
<span style="color:#666; user-select:none;">44</span>      t = get(h, lastindex(h), missing)
<span style="color:#666; user-select:none;">45</span>      if !ismissing(t)
<span style="color:#666; user-select:none;">46</span>          t.price
<span style="color:#666; user-select:none;">47</span>      else
<span style="color:#666; user-select:none;">48</span>          missing
<span style="color:#666; user-select:none;">49</span>      end
<span style="color:#666; user-select:none;">50</span>  end
<span style="color:#666; user-select:none;">51</span>  
<span style="color:#666; user-select:none;">52</span>  @doc &quot;&quot;&quot; Select additional keyword arguments for `Buy` orders based on order type
<span style="color:#666; user-select:none;">53</span>  
<span style="color:#666; user-select:none;">54</span>  $(TYPEDSIGNATURES)
<span style="color:#666; user-select:none;">55</span>  
<span style="color:#666; user-select:none;">56</span>  Depending on the order type symbol, additional keyword arguments are selected to define order parameters like price. This method specifically handles the `Buy` side logic by adjusting price based on closing value.
<span style="color:#666; user-select:none;">57</span>  &quot;&quot;&quot;
<span style="color:#666; user-select:none;">58</span>  function select_orderkwargs(otsym::Symbol, ::Type{Buy}, ai, ats; incr=(buy=1.02, sell=0.99))
<span style="color:#666; user-select:none;">59</span>      price = @coalesce price_from_trades(ai) closeat(ai, ats)
<span style="color:#666; user-select:none;">60</span>      if otsym in (:gtc, :po)
<span style="color:#666; user-select:none;">61</span>          (; price=incr.buy * price)
<span style="color:#666; user-select:none;">62</span>      else
<span style="color:#666; user-select:none;">63</span>          (;)
<span style="color:#666; user-select:none;">64</span>      end
<span style="color:#666; user-select:none;">65</span>  end
<span style="color:#666; user-select:none;">66</span>  
<span style="color:#666; user-select:none;">67</span>  @doc &quot;&quot;&quot; Selects an order type based on the strategy, order side, and position side
<span style="color:#666; user-select:none;">68</span>  
<span style="color:#666; user-select:none;">69</span>  $(TYPEDSIGNATURES)
<span style="color:#666; user-select:none;">70</span>  
<span style="color:#666; user-select:none;">71</span>  Selects an order type `os` based on the strategy `s` and the position side `p`. The order type is determined by the `ordertype` attribute of the strategy.
<span style="color:#666; user-select:none;">72</span>  &quot;&quot;&quot;
<span style="color:#666; user-select:none;">73</span>  function select_orderkwargs(otsym::Symbol, ::Type{Sell}, ai, ats; incr=(; buy=1.02, sell=0.99))
<span style="color:#666; user-select:none;">74</span>      price = @coalesce price_from_trades(ai) closeat(ai, ats)
<span style="color:#666; user-select:none;">75</span>      if otsym in (:gtc, :po)
<span style="color:#666; user-select:none;">76</span>          (; price=incr.sell * price)
<span style="color:#666; user-select:none;">77</span>      else
<span style="color:#666; user-select:none;">78</span>          (;)
<span style="color:#666; user-select:none;">79</span>      end
<span style="color:#666; user-select:none;">80</span>  end
<span style="color:#666; user-select:none;">81</span>  
<span style="color:#666; user-select:none;">82</span>  @doc &quot;&quot;&quot; Checks if a trade was made recently
<span style="color:#666; user-select:none;">83</span>  
<span style="color:#666; user-select:none;">84</span>  $(TYPEDSIGNATURES)
<span style="color:#666; user-select:none;">85</span>  
<span style="color:#666; user-select:none;">86</span>  Checks if a trade was made recently by checking if the last trade time for the given asset instance is more recent than the current time frame. If no trades were made, it returns true.
<span style="color:#666; user-select:none;">87</span>  &quot;&quot;&quot;
<span style="color:#666; user-select:none;">88</span>  function isrecenttrade(ai::AssetInstance, ats::DateTime, tf::TimeFrame; cd=tf)
<span style="color:#666; user-select:none;">89</span>      ai_trades = trades(ai)
<span style="color:#666; user-select:none;">90</span>      last_trade_date = isempty(ai_trades) ? DateTime(0) : ai_trades[end].date
<span style="color:#666; user-select:none;">91</span>      if last_trade_date + cd &gt; ats + tf
<span style="color:#666; user-select:none;">92</span>          @debug &quot;surge: skipping since recent trade&quot; ai
<span style="color:#666; user-select:none;">93</span>          true
<span style="color:#666; user-select:none;">94</span>      else
<span style="color:#666; user-select:none;">95</span>          false
<span style="color:#666; user-select:none;">96</span>      end
<span style="color:#666; user-select:none;">97</span>  end
</pre>
        </div>
        </div>

</div>
</main>
</div>
</div>


</body>
</html>

