Pregunta para alguien bueno en matemáticas

 

Si el movimiento de los precios sigue un camino aleatorio, ( y este foro estaría vacío si todo el mundo piensa que es así), ¿cuántos Pips necesitaría un trader para capturar/perder para tener las mismas probabilidades que la ruleta? En este caso vamos a suponer la rueda europea con 36 números y un solo 0. La apuesta es la apuesta de Dinero Par de Odds vs Even, pago 1 a 1. Obviamente, cuando se cae en el 0/verde se pierde. Así que básicamente el 0 o el Verde sirven como los Spreads. Y asumiremos que los spreads son de 1-Pip.

Mi pensamiento hasta ahora es que si estoy buscando un take Profit de 1-Pip y tengo un stop-loss de 1-Pip. Asumiendo de nuevo que no hay sesgo en el lado que el precio iría, entonces estaría jugando con una probabilidad que es mucho peor que la ruleta. Ni siquiera creo que buscar un stoploss de 10 Pips frente a un takeprofit de 10 Pips haga que el trading sea la mejor opción. El otro día logré descifrar la respuesta dentro de mi cabeza, pero hoy se me olvidó, + no estaba seguro de mis matemáticas de todos modos :).

Alguien por favor que me ayude ya que tengo una hipótesis que probar/simular. Gracias.

 

No soy bueno con las estadísticas. . . pero no creo que se pueda equiparar el spread y el 0 de la rueda. El spread se paga independientemente de ganar o perder. El 0 en la rueda sólo significa que si juegas al rojo o al negro tienes menos del 50% de posibilidades de ganar... 18:19 o 48,65%

Supongo que lo que buscas es qué tipo de operaciones darían una tasa de ganancia efectiva del 48,65% debido al efecto del spread. Creo que si tu operación fuera de 20 pips y el spread fuera de 1 pip te daría lo que buscas... riesgo = 21 recompensa 20... Creo, pero no me cites ;-)

 

Es bueno que pienses diferente y esa es una de las principales preguntas que estoy tratando de responder porque creo que se puede equiparar. Sé que por cada dólar que apuestes en la ruleta hay una Pérdida Esperada que equivale a la diferencia entre tu tasa de ganancias y tu proporción 50/50. Por ejemplo, si no tienes ningún 0/Verde en la rueda, entonces estarás jugando un juego parejo a largo plazo. Sin embargo, con una probabilidad de sólo el 48,65% tendrá una pérdida constante de algo así como 1,35 dólares por cada 100 dólares apostados.

La única diferencia entre esto y el spread es .... con los spreads, tienes que pagarlos cada vez que operas sin importar si el resultado va a ser una pérdida o una victoria.

El siguiente paso es realizar algunas simulaciones. La primera usando operaciones aleatorias que buscan 20-pips stoploss y 20-pips takeprofit (por supuesto sin incluir el spread de 1-pip hace que la pérdida total sea de 21 y espero que cree las probabilidades que estoy buscando). Obviamente cuantas más operaciones/muestras haya en esta prueba mejor. Hummm, me pregunto si alguien piensa que no va a dar resultados similares en comparación con la ruleta?

 
ubzen: Hummm, me pregunto si alguien piensa que no va a dar resultados similares en comparación con la ruleta?
Sí yo porque el trading tiene muchas cosas ocultas que van en contra de la apuesta. Por ejemplo, la colocación del comercio es un objetivo en movimiento y podría no ser tomada como la caja en una mesa de ruleta no se mueve. Hay muchas cosas que echan por tierra el trading y que no se pueden simular, pero cada una de ellas va en contra del beneficio.
 

Ok, chicos tenemos algunos datos.

color   Color;
double  Sl; 
double  Tp;
double  Pips;
double  Price;

void start(){
    if(OrdersTotal()==0){
        int Dir=MathRand()%2;
        Pips=Point; if(Digits==3){Pips=0.01;}if(Digits==5){Pips=0.0001;}
        if(Dir==0){Price=Ask; Sl=Ask-20*Pips; Tp=Ask+20*Pips; Color=Blue;}
        if(Dir==1){Price=Bid; Sl=Bid+20*Pips; Tp=Bid-20*Pips; Color=Red;}
        int Ticket=OrderSend(Symbol(),Dir,0.1,Price,999,0,0,"",0,0,Color);
        if(Ticket>-1){
            if(OrderSelect(Ticket, SELECT_BY_TICKET)){
                OrderModify(Ticket,OrderOpenPrice(),Sl,Tp,0,Color);
}   }   }   }

Ahora bien, seguro que hay algunas ganancias y pérdidas de 19,9x ahí. Sin embargo, el porcentaje de operaciones rentables habla por sí mismo.

 

Resulta ser incluso peor que la ruleta, pero eso se debe a los errores estándar, o lo que sea que necesiten las estadísticas de los cojines. Alguien más puede ejecutarlo y obtener valores ligeramente superiores o inferiores, sin embargo, creo que su expectativa matemática es la misma que la de la ruleta. Hombre, si esto no asusta a un comerciante que no sabía esto nada más lo hará.

De todos modos, seguimos adelante. El siguiente paso lógico cuando me lo enseñaron antes fue hacer una simulación mql4 de números aleatorios para ver si caen en cualquier lugar entre 0-36 y si es un número par añadir 1 $ a mi total en ejecución (a partir de $ 100.000) o restar 1 $ si es impar o 0. Pero eso va a ser una pérdida de tiempo porque todo el mundo y su mamá saben las probabilidades en la ruleta. Y si no lo saben, uno puede buscarlas en Internet. Así que me saltaré ese paso.

Pero de todos modos, somos comerciantes derecho, lol. No creemos que los mercados sean aleatorios y creemos que podemos predecir el mercado con cierta probabilidad de éxito. Así que al menos para mí el siguiente paso sería apilar un método de previsión frente a las entradas aleatorias. Pero mi siguiente pregunta, ¿cómo comparamos un sistema de trading con esto, teniendo en cuenta que no vamos a tener ni de lejos ese número de muestras dados todos los filtros que solemos utilizar en el trading?

 

Ok, todavía estoy esperando sugerencias a mi pregunta anterior. Mientras tanto, voy a proponer 2 sistemas. Uno de ellos me referiré como Sistema 14 de http://forex-strategies-revealed.com/simple/simple-trading-with-daily-range. Y el otro lo llamaré Oscar's Grind de http://www.blackjackforumonline.com/content/Betting_Systems_Oscars_Blackjack_System.htm.

Unas palabras sobre el Sistema 14: Fue el tema que más respuesta tuvo dentro de la sección de avance del sitio que pude encontrar. Parece bastante sencillo de codificar y muchos carteles lo acreditan como ganador.

Unas palabras sobre OscarGrind: A los jugadores de ventaja ni siquiera les gusta oír la palabra progresión. Sin embargo, viniendo de un autor al que respeto mucho (aunque no dice que sea algo seguro) estoy dispuesto a intentarlo en este contexto.

Voy a codificar y publicar mi interpretación de ambos sistemas. Un escollo para System-14 aquí es probablemente el hecho de que voy a obligar a utilizar un 20-Pip SL-TP. Un escollo para OscarGrind es cómo dimensionar las órdenes para buscar sólo una unidad después de una victoria. Pero mantened los dedos cruzados chicos, un sistema rentable podría ser confirmado pronto.

 

Ok, aquí está System_14. Casi broke-Even, por lo tanto, no está mal en comparación con el azar, pero todavía un montón de espacio para la mejora. De todos modos, aquí están los códigos que acabo de escribir, por lo que podría no ser libre de errores.

int     Magic_S14=14;
double  Sl; 
double  Tp;
double  Pips;
double  Price;
color   Color;
bool    Pen_Mode;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void start(){
    if(!isNewBar() && !Pen_Mode){return(0);}
    Pips=Point; 
    if(Digits==3){Pips=0.01;} 
    if(Digits==5){Pips=0.0001;}
    Check_Pending_Order_Condition();
    Set_Trigger_Market_Order_SlTp();
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bool isNewBar(){ static datetime LastBar;
    datetime CurBar=iTime(Symbol(),PERIOD_D1,0);
    if(LastBar !=CurBar){LastBar=CurBar; return(true);}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
double Percent25_Previous_24Hours_Move(){
    double High_=iHigh(Symbol(),PERIOD_D1,1); double Low_=iLow(Symbol(),PERIOD_D1,1);
    double Total_Move=High_-Low_; double Percent_25=NormalizeDouble(Total_Move*0.25,Digits); 
    return(Percent_25);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void Check_Pending_Order_Condition(){
    if(Count_Orders_Magic_Symbol_Only()==0){
        int Stop_Level=MarketInfo(Symbol(),MODE_STOPLEVEL);
        double Percent_25=Percent25_Previous_24Hours_Move();
        if(Percent_25<Stop_Level*Pips){Percent_25=Stop_Level*Pips;}
        OrderSend(Symbol(),OP_BUYSTOP,0.1,Ask+Percent_25,999,0,0,"",Magic_S14,0,Blue);
        OrderSend(Symbol(),OP_SELLSTOP,0.1,Bid-Percent_25,999,0,0,"",Magic_S14,0,Red);
        if(Count_Orders_Magic_Symbol_Type(1)==2){Pen_Mode=true;}
        else{Print("Twin_OrderSend_Failed_Error=",GetLastError());}
}   }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
int Count_Orders_Magic_Symbol_Only(){
    int Ans;
    for(int i=OrdersTotal()-1; i>=0; i--){
        if(OrderSelect(i, SELECT_BY_POS)
        && OrderMagicNumber()==Magic_S14
        && OrderSymbol()==Symbol()){Ans++;}
    }return(Ans);
    //~~~~~~~~~~~~~~~~~~~~
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
int Count_Orders_Magic_Symbol_Type(int x){
    int Ans;
    for(int i=OrdersTotal()-1; i>=0; i--){
        if(OrderSelect(i, SELECT_BY_POS)
        && OrderMagicNumber()==Magic_S14
        && OrderSymbol()==Symbol()
        && OrderType()>x){Ans++;}
    }return(Ans);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bool Set_Trigger_Market_Order_SlTp(){
    if(!Pen_Mode){return(0);}
    for(int i=OrdersTotal()-1; i>=0; i--){
        if(OrderSelect(i, SELECT_BY_POS)
        && OrderMagicNumber()==Magic_S14
        && OrderSymbol()==Symbol()
        && (OrderType()==0 || OrderType()==1)
        ){int Ot=OrderTicket(); double Op=OrderOpenPrice(); bool Res;
            if(OrderType()==OP_BUY){Res=OrderModify(Ot,Op,Op-20*Pips,Op+20*Pips,0,Blue);}else
            if(OrderType()==OP_SELL){Res=OrderModify(Ot,Op,Op+20*Pips,Op-20*Pips,0,Red);}
            if(!Res){Print("Setting_Sl_Tp_Failed_Error=",GetLastError()); return(Res);}
    }   }
    if(Res){
        for(    i=OrdersTotal()-1; i>=0; i--){
            if(OrderSelect(i, SELECT_BY_POS)
            && OrderMagicNumber()==Magic_S14
            && OrderSymbol()==Symbol()
            && (OrderType()==4 || OrderType()==5)
            ){
                Res=OrderDelete(OrderTicket());
                if(!Res){Print("Pending_Delete_Failed_Error=",GetLastError()); return(Res);}
                if(Res){Pen_Mode=false;} return(Res);
}   }   }   }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 

Bueno, el Oscars Grind en Forex es un fracaso total. Supongo que no hay goly-grail descubierto aquí. Sin embargo, algunas cosas para señalar. Si estás operando con un Sistema Aleatorio y tienes Spreads de 1-3, y buscas take profit entre <60 Pips, estarías mejor dándole a la ruleta del casino. Si estás usando progresiones (martingala o de otro tipo) es sólo cuestión de tiempo hasta que te arruines, especialmente si tienes un mal pronóstico. Un pronóstico más fuerte podría ser el mejor método para conseguir las probabilidades a su favor.

De nuevo, codificación de prueba. Puede contener errores y no use nada de esto en cuentas reales.

int     Magic_OG;
color   Color;
double  Sl; 
double  Tp;
double  Pips;
double  Price;
double  Lots;
double  Bank_Hi;
double  Last_OrSize;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void start(){
    if(Count_Orders_Magic_Symbol_Only()==0){
        if(AccountEquity()>Bank_Hi){Bank_Hi=AccountEquity();}
        int Dir=MathRand()%2;
        Pips=Point; if(Digits==3){Pips=0.01;}if(Digits==5){Pips=0.0001;}
        if(Dir==0){Price=Ask; Sl=Ask-20*Pips; Tp=Ask+20*Pips; Color=Blue;}
        if(Dir==1){Price=Bid; Sl=Bid+20*Pips; Tp=Bid-20*Pips; Color=Red;}
        Alert(Lot_Size());
        int Ticket=OrderSend(Symbol(),Dir,Lot_Size(),Price,999,0,0,"",0,0,Color);
        if(Ticket>-1){
            if(OrderSelect(Ticket, SELECT_BY_TICKET)){
                OrderModify(Ticket,OrderOpenPrice(),Sl,Tp,0,Color);
}   }   }   }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
int Count_Orders_Magic_Symbol_Only(){
    int Ans;
    for(int i=OrdersTotal()-1; i>=0; i--){
        if(OrderSelect(i, SELECT_BY_POS)
        && OrderMagicNumber()==Magic_OG
        && OrderSymbol()==Symbol()){Ans++;}
    }return(Ans);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
double Lot_Size(){
    double BkrLotStep=     MarketInfo(Symbol(),MODE_LOTSTEP);
    double BrkMiniLot=     MarketInfo(Symbol(),MODE_MINLOT);
    double BrkMaxiLot=     MarketInfo(Symbol(),MODE_MAXLOT);
    double Tick_Value=     MarketInfo(Symbol(),MODE_TICKVALUE);
    double Tick_Sizes=     MarketInfo(Symbol(),MODE_TICKSIZE);
    if(Digits==2 || Digits==3){ int Pips_2Real=100;}
    if(Digits==4 || Digits==5){ Pips_2Real=10000;}
    double Pip_Values=Tick_Value / (Tick_Sizes*Pips_2Real);
    double AE=AccountEquity();
    bool isLastWin=His_LasOrdWin_Magic_Symbol_Only();
    if(!isLastWin){Lots=Last_OrSize;}
    if( isLastWin && AE>=Bank_Hi){Lots=0.1;}
    if( isLastWin && AE <Bank_Hi){Lots=Last_OrSize+0.1;
        double Target=20+Bank_Hi-AE;
        if(Lots*Pip_Values*20>Target){
            for(double i=Lots; i>BrkMiniLot; i-=BkrLotStep){
                if(i*Pip_Values*20<=Target){Lots=i; break;}
    }   }   }
    if(Lots>BrkMaxiLot){Lots=BrkMaxiLot;}
    if(Lots<BrkMiniLot){Lots=BrkMiniLot;} return(Lots);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bool His_LasOrdWin_Magic_Symbol_Only(){
    if(OrdersHistoryTotal()==0){return(true);}
    for(int i=OrdersHistoryTotal()-1; i>=0; i--){
        if(OrderSelect(i, SELECT_BY_POS,MODE_HISTORY)
        && OrderMagicNumber()==Magic_OG
        && OrderSymbol()==Symbol()){
            Last_OrSize=OrderLots();
            if(OrderProfit()>0){return(true);}
}   }   }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

Ya que tiene el prototipo, ¿puede probar algo rápidamente?

Si ajustas el tamaño del lote muy ligeramente en función de tu ración actual de Ganancias/Pérdidas asumiendo un resultado negativo, al menos debería aumentar ligeramente el resultado.

Ejemplo:

Tome su sistema aleatorio y asuma una proporción de ganancias del 47%.

Ahora usted obtiene el modificador por 47/Relación de ganancia actual

Y el tamaño del lote sería (47/ActualWinningRage)*tamaño del lote

 

Acabo de despertarme y he decidido probar este método.

Un truco burdo, sin duda. Creo que hasta cierto punto está persiguiendo lo que ya sabe :). El sistema de la ruleta sufrió menos pérdidas. Así que supongo que es una forma de mejorar un sistema. También consideraré esto como una forma de progresión negativa. El código de gestión de dinero está abajo, también no libre de errores.

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
double Lot_Size(int Switch){
    static int Saved_His_Total; 
    int His_Total=OrdersHistoryTotal();
    if(His_Total==0){return(0.1);}
    if(Saved_His_Total != His_Total){
        Saved_His_Total=His_Total;
        for(int i=His_Total; i>=0; i--){
            if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)
            && OrderMagicNumber()==Magic
            && OrderSymbol()==Symbol()
            ){
                static int Trade_Total; Trade_Total++;
                static int Buy_Wins; static int Sel_Wins;
                static int Buy_Loss; static int Sel_Loss;
                static double Buy_Profit, Buy_Losses;
                static double Sel_Profit, Sel_Losses;
                if(OrderType()==OP_BUY && OrderProfit()>0){
                    Buy_Wins++; Buy_Profit+=OrderProfit();}
                if(OrderType()==OP_BUY && OrderProfit()<=0){
                    Buy_Loss++; Buy_Losses+=OrderProfit();}
                if(OrderType()==OP_SELL && OrderProfit()>0){
                    Sel_Wins++; Sel_Profit+=OrderProfit();}
                if(OrderType()==OP_SELL && OrderProfit()<=0){
                    Sel_Loss++; Sel_Losses+=OrderProfit();} break;
        }   }
        double Win_Total = Buy_Wins + Sel_Wins;
        double Loss_Total = Buy_Loss + Sel_Loss;
        double Profit_Total = Buy_Profit + Sel_Profit;
        double Losses_Total = Buy_Losses + Sel_Losses;
        if(Win_Total !=0){double Avg_Profit = Profit_Total / Win_Total;}
        if(Loss_Total!=0){double Avg_Losses = Losses_Total / Loss_Total;}
        if(Trade_Total !=0){double W2L_Ratio = Win_Total / Trade_Total;}
        if(Trade_Total !=0){double L2W_Ratio = Loss_Total / Trade_Total;}
        if(Avg_Losses !=0){double P2L_Ratio = Avg_Profit / Avg_Losses;}
        if(Avg_Losses !=0){double Kd=Avg_Profit/Avg_Losses;}
        //~~~~~~~~~~~~~~~~~~~~~
        if(W2L_Ratio !=0){double RvRoulette=(0.47/W2L_Ratio)*0.1;}
        //~~~~~~~~~~~~~~~~~~~~~
        //http://www.trader-soft.com/money-management/index.html
        if(Kd !=0){double Kelly=(W2L_Ratio-L2W_Ratio)/(Avg_Profit/Avg_Losses);}
        if(P2L_Ratio!=0){double Optimal_f=((P2L_Ratio + 1)*W2L_Ratio-1)/P2L_Ratio;}
        //~~~~~~~~~~~~~~~~~~~~~
        if(Trade_Total==0){return(0.1);}
        if(Switch=='R'){return(RvRoulette);}
        if(Switch=='K'){return(Kelly);}
        if(Switch=='F'){return(Optimal_f);}
        //~~~~~~~~~~~~~~~~~~~~~
    }
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Incluí la Kelly y la F óptima porque ya tenía las estadísticas para calcularlas. Nunca es recomendable usarlas en tamaños de muestra pequeños imo <100. También están en fracciones de banco a riesgo, por lo que tendrá que tomar su (mi preferencia) margen de la cuenta * la k o f * su_appetito_de_riesgo (0,5 por lo general). Entonces usted necesita para asegurarse de que el Lotes * Pip_Valores * Stop_Loss < = objetivo, tengo un ejemplo de esto dentro de uno de los códigos anteriores.

Siguiendo adelante aquí están los resultados de la sugerencia de Zzuegg. Me pregunto, si puede convertir nuestro sistema de punto de equilibrio-14 en un ganador?

Bars in test                        812652
Ticks modelled                      10091174
Modelling quality                   n/a
Mismatched charts errors            22023
Initial deposit                     100000.00
Total net profit                    -37756.90 The Losses decreased vs -41832
Gross profit                        391593.03
Gross loss                          -429349.92
Profit factor                       0.91
Expected payoff                     -0.83
Absolute drawdown                   38180.64
Maximal drawdown                    38280.06 (38.24%)
Relative drawdown                   38.24% (38280.06)
Total trades                        45448
Short positions (won %)             22883 (47.54%)
Long positions (won %)              22565 (47.90%)
Profit trades (% of total)          21687 (47.72%)
Loss trades (% of total)            23761 (52.28%)
Largest profit trade                46.00
loss trade                          -42.00
Average profit trade                18.06
loss trade                          -18.07
        Maximum
consecutive wins (profit in money)  17 (306.11)
consecutive losses (loss in money)  14 (-251.89)
        Maximal
consecutive profit (count of wins)  306.11 (17)
consecutive loss (count of losses)  -259.64 (13)
        Average
consecutive wins        2
consecutive losses      2