Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- if(!isset($_POST['amount'])){
- $form = "
- <form action='http://ezforex.autopilottools.com/simulador/' method='post'>
- <p>Valor base para cálculo do investimento:<br />
- <input name='amount' type='number' value='100' step='10' /></p>
- <p>Comportamento Delta:<br />
- <select name='trailing' type='select'>
- <option value='delta_amount'>Delta nunca pode ultrapassar valor inicial</option>
- <option value='all_in'>Arriscar todo o valor inicial sempre</option>
- </select></p>
- <p>Quantas x o valor base estará depositado na corretora:<br />
- <input name='margin' type='number' value='2' step='1' /></p>
- <p>Alvo é multiplicar capital por quanto:<br />
- <input name='target' type='number' value='2' step='1' /></p>
- <p>Nível máximo de risco aceito:<br />
- <input name='max_risk_level' type='number' value='10' step='1' /></p>
- <p>Comportamento com relação a risco máximo:<br />
- <select name='stop_on_max_risk_level' type='select'>
- <option value='stop'>Parar quando alcançar risco máximo</option>
- <option value='continue'>Continuar mas sem subir mais o risco</option>
- <option value='reset'>Voltar para risco inicial</option>
- </select></p>
- <p>Aumentar risco imediatamente após perda:<br />
- <select name='risk_leverage' type='select'>
- <option value='agressive'>Quando perder, já aumentar risco no próximo trade</option>
- <option value='conservative'>Aumentar risco somente após fechar ciclo</option>
- </select></p>
- <p>Limitar o risco de cada trade a quantas vezes amount inicial (0 para não limitar):<br />
- <input name='trade_risk' type='number' value='10' step='1' /></p>
- <p>Usar manejo pra recuperar LUCRO ou apenas PERDA:<br />
- <select name='try_to_recover_from' type='select'>
- <option value='base_capital'>Tentar voltar para lucro máximo</option>
- <option value='original_capital'>Tentar voltar para capital inicial</option>
- </select></p>
- <p>Comportamento com relação a risco máximo:<br />
- <select name='select' type='select'>
- <option value='rand'>Par ou Ímpar (Escolha aleatórea)</option>
- <option value='odd'>Par ou Ímpar (Par)</option>
- <option value='even'>Par ou Ímpar (Ímpar)</option>
- <option value='digit_rand'>Dígito Final (Escolha Aleatórea)</option>
- <option value='digit_fixed'>Dígito Final (Escolher 1 e manter sempre)</option>
- <option value='digit_last'>Dígito Final (Usar o último resultado)</option>
- </select></p>
- <p>Número limite de trades (7200 = 24h):<br />
- <input name='trade_limit' type='number' value='7200' step='100' /></p>
- <p>Índice de alteração do risco a cada novo Nível:<br />
- <input name='risk_multiplier' type='number' value='2' step='0.1' /></p>
- <p>Como aplicar o Índice de alteração:<br />
- <select name='multiplier_type' type='select'>
- <option value='pow'>Potenciação</option>
- <option value='inc'>Multiplicação Simples</option>
- </select></p>
- <p>Risco inicial em %:<br />
- <input name='initial_risk' type='number' step='0.1' value='3' /></p>
- <p>Usar risco fixo ou subir:<br />
- <select name='risk_type' type='select'>
- <option value='amount'>Sempre relativo ao Amount Inicial</option>
- <option value='base_capital'>Relativo ao Capital Base</option>
- </select></p>
- <p><input type='submit' value='Bora ver...' /></p>
- </form>";
- echo $form;
- die();
- }
- $settings = $_POST;
- $base_capital = $settings['amount'];
- $current_capital = $settings['amount'];
- $current_multiplier = $settings['initial_risk'];
- $trades_current_cycle = 0;
- $risk_level = 1;
- $relatorio['max_loss'] = 0;
- $relatorio["top_gain"] = $settings['amount'];
- $relatorio['max_risk_level'] = 1;
- $relatorio['total_trades'] = 0;
- $relatorio['total_gains'] = 0;
- $relatorio['total_losses'] = 0;
- $relatorio['max_invest'] = 0;
- $html = "";
- $table = "<table style='width: 100%; text-align:center; border:solid; border-width:2px;'>
- <tr>
- <th>Capital Base</th>
- <th>Capital Atual</th>
- <th>Nível de Risco</th>
- <th>Trades no Risco Atual</th>
- <th>Delta</th>
- </tr>";
- while($total_trades < $settings['trade_limit']){
- $loss = 0;
- $gain = 0;
- $increased = 0;
- $digit = rand(0,9);
- switch($settings['select']){
- case "even":
- if($digit & 1){
- $loss = 1;
- }else{
- $gain= 1;
- }
- $rr = 0.96;
- break;
- case "odd":
- if($digit & 1){
- $gain = 1;
- }else{
- $loss= 1;
- }
- $rr = 0.96;
- break;
- case "rand":
- $odd = rand(0,1);
- if($odd){
- if($digit & 1){
- $gain = 1;
- }else{
- $loss= 1;
- }
- }else{
- if($digit & 1){
- $loss = 1;
- }else{
- $gain= 1;
- }
- }
- $rr = 0.96;
- break;
- case "digit_fixed":
- if(empty($digit)){
- $digit = rand(0,9);
- }
- $result_digit = rand(0,9);
- if($digit == $result_digit){
- $loss = 1;
- }else{
- $gain = 1;
- }
- $rr = 0.0989;
- break;
- case "digit_last":
- if(empty($result_digit)){
- $digit = rand(0,9);
- }else{
- $digit = $result_digit;
- }
- $result_digit = rand(0,9);
- if($digit == $result_digit){
- $loss = 1;
- }else{
- $gain = 1;
- }
- $rr = 0.0989;
- break;
- case "digit_rand":
- $digit = rand(0,9);
- $result_digit = rand(0,9);
- if($digit == $result_digit){
- $loss = 1;
- }else{
- $gain = 1;
- }
- $rr = 0.0989;
- break;
- }
- $html .= "trades_current_cycle: $trades_current_cycle<br />";
- $html .= "risk_level: $risk_level<br />";
- $html .= "current_multiplier: ".calculate_risk($risk_level,$settings['initial_risk'],$settings['risk_multiplier'],$settings['multiplier_type'])."<br />";
- if($settings['risk_type'] == "amount"){
- $capital_reference = $settings['amount'];
- }else{
- $capital_reference = $base_capital;
- }
- $current_gain = $rr*($capital_reference * (calculate_risk($risk_level,$settings['initial_risk'],$settings['risk_multiplier'],$settings['multiplier_type'])/100));
- //echo "$rr(rr) * ($base_capital(base_capital) * (".calculate_risk($risk_level,$settings['initial_risk'],$settings['risk_multiplier'],$settings['multiplier_type'])."(risk_multiplier)/100)) = $current_gain (current_gain)<br />";
- $current_risk = $capital_reference * (calculate_risk($risk_level,$settings['initial_risk'],$settings['risk_multiplier'],$settings['multiplier_type'])/100);
- //echo "$base_capital(base_capital) * (".calculate_risk($risk_level,$settings['initial_risk'],$settings['risk_multiplier'],$settings['multiplier_type'])."(risk_multiplier)/100) = $current_risk (current_risk)<br />";
- if($settings['trade_risk']){
- if($current_risk > $settings['trade_risk']*$settings['amount']){
- echo "Risco muito alto num trade específico<br />";
- break;
- }
- }
- $relatorio['total_trades']++;
- if($gain){
- $relatorio['total_gains']++;
- $current_capital += $current_gain;
- if($settings['try_to_recover_from'] == "base_capital"){
- $capital_to_compare = $base_capital;
- }else{
- $capital_to_compare = $settings['amount'];
- }
- if($current_capital > $capital_to_compare){
- $html .= "Gain<br />";
- $base_capital = $current_capital;
- $relatorio["top_gain"] = number_format($current_capital,2);
- $trades_current_cycle = 1;
- $risk_level = 1;
- }else{
- $html .= "Gain<br />";
- $trades_current_cycle++;
- }
- }else{
- $html .= "Loss<br />";
- $relatorio['total_losses']++;
- $current_capital -= $current_risk;
- if($settings['risk_leverage'] == "agressive"){
- $trades_current_cycle = 1;
- $risk_level++;
- $increased = 1;
- if($risk_level > $settings['max_risk_level']){
- $risk_level = $settings['max_risk_level'];
- }
- }else{
- $trades_current_cycle++;
- }
- }
- $table .= "<tr>
- <td style='border:solid; border-width:1px;'>".number_format($base_capital,2)."</td>
- <td style='border:solid; border-width:1px;'>".number_format($current_capital,2)."</td>
- <td style='border:solid; border-width:1px;'>$risk_level</td>
- <td style='border:solid; border-width:1px;'>$trades_current_cycle</td>";
- if($current_capital < 0){
- $delta = $base_capital + abs($current_capital);
- }else{
- $delta = $base_capital - abs($current_capital);
- }
- $html .= "delta: ".number_format($delta,2)."<br />";
- $html .= "current_gain: ".number_format($current_gain,2)."<br />";
- if(($settings['risk_leverage'] == "agressive" && !$increased) || $settings['risk_leverage'] == "conservative"){
- if($delta <= $current_gain * 2){
- $html .= "delta <= current gain<br />";
- if($risk_level > 1){
- $trades_current_cycle = 0;
- $risk_level--;
- $gain_risk_level = $base_capital * (calculate_risk($risk_level,$settings['initial_risk'],$settings['risk_multiplier'],$settings['multiplier_type'])/100);
- while($delta < ($gain_risk_level *2) || $risk_level == 1){
- $gain_risk_level = $base_capital * (calculate_risk($risk_level,$settings['initial_risk'],$settings['risk_multiplier'],$settings['multiplier_type'])/100);
- if($risk_level > 1){
- $risk_level--;
- }else{
- break;
- }
- }
- }
- }else{
- $html .= "delta > current gain<br />";
- if($trades_current_cycle >= 10){
- if($current_gain > $delta){
- $html .= "** Zerando Ciclo - Delta < 1 **";
- $trades_current_cycle = 0;
- }else{
- $risk_level++;
- $relatorio['max_risk_level'] = $risk_level;
- $trades_current_cycle = 0;
- }
- }
- }
- }
- $html .= "base_capital: ".number_format($base_capital,2)."<br />";
- $html .= "current_capital: ".number_format($current_capital,2)."<br />";
- $html .= "<br /><br />";
- if($delta > $relatorio['max_loss']){
- $relatorio['max_loss'] = $delta;
- }
- //$table .= "<td style='border:solid; border-width:1px;'>".number_format($delta,2)."</td>
- //<td style='border:solid; border-width:1px;'>".number_format($relatorio['max_loss'],2)."</td>";
- $total_trades++;
- $risk_next_level = $base_capital * (calculate_risk($risk_level,$settings['initial_risk'],$settings['risk_multiplier'],$settings['multiplier_type'])/100);
- if($current_risk > $relatorio['max_invest']){
- $relatorio['max_invest'] = $current_risk;
- }
- if($gain){
- $table .= "<td style='color:green; font-weight:bold; border:solid; border-width:1px;'>+".number_format($current_gain,2)."</td>";
- }else{
- $table .= "<td style='color:red; font-weight:bold; border:solid; border-width:1px;'>-".number_format($current_risk,2)."</td>";
- }
- $table .= "</tr>";
- //check if STOP
- switch($settings['stop_on_max_risk_level']){
- case 'stop':
- if($risk_level == $settings['max_risk_level']){
- echo "Alcançou Level Máximo ({$settings['max_risk_level']})<br />";
- $stop_all = true;
- break;
- }
- break;
- case 'continue':
- if($risk_level > $settings['max_risk_level']){
- $risk_level = $settings['max_risk_level'];
- }
- break;
- case 'reset':
- if($risk_level > $settings['max_risk_level']){
- $risk_level = 1;
- }
- break;
- }
- if($stop_all){
- break;
- }
- if(abs($delta) > ($settings['amount'])){
- if($settings['trailing'] == "delta_amount"){
- echo "STOPOU! Delta > amount inicial.<br />";
- break;
- }
- }
- if($current_capital < 0){
- if(($settings['amount'] * ($settings['margin']-1)) < abs(abs($current_capital) + $risk_next_level) ){
- echo "STOPOU!<br />";
- break;
- }
- }
- //check if GAIN
- if($current_capital > ($settings['amount'] * $settings['target'])){
- echo "TP!<br />";
- break;
- }
- }
- $table .= "</table>";
- function calculate_risk($risk_level,$init,$multiplier,$mult_type){
- if($risk_level == 1){
- $final_multiplier = $init;
- }else{
- switch($mult_type){
- case "pow":
- $final_multiplier = pow($multiplier,$risk_level-1);
- //return $init * $final_multiplier;
- break;
- case "inc":
- $final_multiplier = $multiplier * $risk_level;
- //return $init * $final_multiplier;
- break;
- }
- }
- return $final_multiplier;
- }
- $relatorio['balance'] = number_format($current_capital,2);
- $relatorio['profit'] = $current_capital - $settings['amount'];
- $relatorio['ratio_win'] = number_format(100*($relatorio['total_gains']/$relatorio['total_trades']),2)."%";
- function build_table($data){
- echo "<table style='width: 100%; text-align:center; border:solid; border-width:2px;'>";
- $build_th = "<tr>";
- $build_td = "<tr>";
- foreach($data as $th=>$td){
- $build_th .= "<th>$th</th>";
- if(is_float($td)){
- $build_td .= "<td style='border:solid; border-width:1px;'>".number_format($td,2)."</td>";
- }else{
- $build_td .= "<td style='border:solid; border-width:1px;'>$td</td>";
- }
- }
- $build_th .= "</tr>";
- $build_td .= "</tr>";
- echo $build_th;
- echo $build_td;
- echo "</table>";
- }
- echo build_table($settings);
- echo "<br /><br />";
- echo build_table($relatorio);
- echo "<br /><br />";
- //echo $html;
- echo $table;
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement