Domanda per qualcuno bravo in matematica

 

Se il movimento dei prezzi segue una passeggiata casuale, (e questo forum sarebbe vuoto se tutti pensassero che lo sia), quanti Pip dovrebbe catturare/perdere un trader per avere le stesse probabilità della roulette? In questo caso assumeremo la ruota europea con 36 numeri e un singolo 0. La scommessa è la scommessa Even Money di Odds vs Even, payout 1 a 1. Ovviamente quando si atterra sullo 0/verde si perde. Quindi fondamentalmente lo 0 o il verde servono come Spreads. E supporremo che gli spread siano 1-Pip.

Il mio pensiero finora è che se sto cercando un 1-Pip take profit e ho un 1-Pip stop-loss. Supponendo di nuovo che non ci siano pregiudizi su quale lato il prezzo andrebbe, allora starei giocando con una probabilità che è molto peggio della roulette. Non penso nemmeno che cercare uno stop-loss di 10 punti contro un takeprofit di 10 punti renda il trading l'opzione migliore. Sono riuscito a capire la risposta nella mia testa l'altro giorno ma oggi, ho dimenticato, + non ero sicuro della mia matematica comunque :).

Qualcuno mi aiuti perché ho un'ipotesi da testare/simulare. Grazie.

 

Non sono bravo con le statistiche. . . ma non credo che tu possa equiparare lo spread e lo 0 sulla ruota. Lo spread viene pagato indipendentemente dalla vittoria o dalla perdita. Lo 0 sulla ruota significa solo che se giochi rosso o nero hai meno del 50% di possibilità di vincere... 18:19 o 48,65%.

Immagino che quello che stai cercando sia quale tipo di trade darebbe una percentuale di vincita effettiva del 48,65% a causa dell'effetto dello spread. Penso che se il tuo trade fosse di 20 pip e lo spread fosse di 1 pip, questo ti darebbe quello che stai cercando... rischio = 21 ricompensa 20... Penso, non citarmi però ;-)

 

È bello che tu la pensi diversamente e questa è una delle domande principali a cui sto cercando di rispondere perché credo che possa essere equiparata. So che per ogni dollaro che scommetti alla roulette c'è una perdita attesa che è equivalente alla differenza tra il tuo tasso di vittoria e il tuo rapporto 50/50. Per esempio, se non hai 0/verde sulla ruota, allora giocherai un gioco alla pari nel lungo periodo. Tuttavia con la probabilità di solo 48.65% avrai una perdita costante di qualcosa come $1.35 per ogni $100 dollari scommessi.

L'unica differenza tra questo e lo spread è .... con gli spread, devi pagarli ogni volta che fai trading indipendentemente dal fatto che il risultato sarà una perdita o una vittoria.

Il prossimo passo ora è quello di eseguire alcune simulazioni. La prima usando trade casuali che cercano 20 pip di stoploss e 20 pip di takeprofit (ovviamente non includendo lo spread di 1 pip si ottiene una perdita totale di 21 e si spera di creare le probabilità che sto cercando). Ovviamente più trade/campioni all'interno di questo test, meglio è. Hummm, mi chiedo se qualcuno pensa che non darà risultati simili rispetto alla roulette?

 
ubzen: Hummm, mi chiedo se qualcuno pensa che non darà risultati simili rispetto alla roulette?
Sì, perché il trading ha molte cose nascoste che sono contro la scommessa. Per esempio, piazzare il trade è un obiettivo mobile e potrebbe non essere preso, mentre la casella su un tavolo da roulette non si muove. Ci sono molte cose per scucire il trading che non possono essere simulate ma ognuna di esse è contro un profitto.
 

Ok, ragazzi abbiamo alcuni dati.

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);
}   }   }   }

Ora sicuramente ci sono alcuni profitti e perdite 19.9x. Tuttavia, la percentuale di transazioni redditizie parla da sola.

 

Risulta essere anche peggiore della roulette, ma questo è dovuto agli errori standard, o a qualsiasi altro cuscino di cui le statistiche hanno bisogno. Qualcun altro potrebbe eseguirlo e ottenere valori leggermente più alti o più bassi, tuttavia, credo che la sua aspettativa matematica sia la stessa della roulette. Amico, se questo non spaventa i trader che non lo sanno, niente altro lo farà.

Comunque, andiamo avanti. Il prossimo passo logico quando l'ho insegnato prima è stato quello di fare una simulazione con mql4 di numeri casuali per vedere se atterrano ovunque tra 0-36 e se è un numero pari aggiungere 1$ al mio totale corrente (partendo da 100.000$) o sottrarre 1$ se è dispari o 0. Ma sarà una perdita di tempo perché tutti e la loro mamma sanno le probabilità della roulette. E se non lo sanno, uno può semplicemente cercarle online. Quindi, salterò questo passo.

Ma comunque, siamo commercianti, giusto? Non crediamo che i mercati siano casuali e crediamo di poter prevedere il mercato con una certa probabilità di successo. Quindi, almeno per me, il passo successivo sarebbe quello di mettere in piedi un metodo di previsione rispetto alle entrate casuali. Ma la mia prossima domanda è: come facciamo a confrontare un sistema di trading con questo, considerando che non avremo mai un numero di campioni così alto, dati tutti i filtri che tendiamo a usare nel trading?

 

Ok, sto ancora aspettando suggerimenti per la mia domanda di cui sopra. Nel frattempo, proporrò 2 sistemi. Uno di loro lo chiamerò System 14 di http://forex-strategies-revealed.com/simple/simple-trading-with-daily-range. E l'altro lo chiamerò Oscar's Grind da http://www.blackjackforumonline.com/content/Betting_Systems_Oscars_Blackjack_System.htm.

Qualche parola sul Sistema 14: è stato l'argomento più reattivo all'interno della sezione avanzata del sito che ho potuto trovare. Sembra piuttosto semplice da codificare e molti poster lo considerano un vincitore.

Qualche parola su OscarGrind: Ai giocatori di vantaggio non piace nemmeno sentire la parola progressione. Tuttavia, provenendo da un autore per il quale ho molto rispetto (anche se non dice che è una cosa sicura) sono disposto a provarci in questo contesto.

Andrò avanti a codificare e a postare la mia interpretazione di entrambi i sistemi. Un'insidia per System-14 qui è probabilmente il fatto che lo forzerò ad usare uno SL-TP da 20 punti. Un'insidia per OscarGrind è come dimensionare gli ordini per cercare una sola unità dopo una vittoria. Ma tenete le dita incrociate ragazzi, un sistema redditizio potrebbe essere confermato presto.

 

Ok, ecco System_14. Quasi in pareggio, quindi non male rispetto al Random, ma ancora molto da migliorare. Comunque, ecco i codici che ho appena scritto, quindi potrebbero non essere privi di errori.

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);
}   }   }   }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 

Beh, il Grind degli Oscar su Forex è un fallimento totale. Credo che non ci sia nessun goly-grail scoperto qui. Tuttavia, c'è qualcosa da sottolineare. Se fai trading con un sistema casuale e hai spread di 1-3, e cerchi un take profit tra <60 pip, faresti meglio a colpire la roulette del casinò. Se stai usando le progressioni (martingala o altro) è solo una questione di tempo prima che tu rovini, specialmente se hai una cattiva previsione. Una previsione più forte potrebbe essere il metodo migliore per avere le probabilità a tuo favore.

Di nuovo, codifica da tester. Può contenere errori e non usare nessuno di questi su conti Live.

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);}
}   }   }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

Dato che hai già il prototipo, puoi testare velocemente qualcosa?

Se regoli la dimensione del lotto molto leggermente in base alla tua attuale razione Win/Loss assumendo un risultato negativo, dovrebbe almeno aumentare leggermente il risultato.

Esempio:

Prendete il vostro sistema casuale e assumete un rapporto vincita/perdita del 47%.

Ora si ottiene il modificatore da: 47/ActualWinningRage

E la dimensione del lotto sarebbe (47/ActualWinningRage)*lotsize

 

Mi sono appena svegliato e ho deciso di provare questo approccio.

Un trucco davvero rozzo. Penso che in qualche modo stia inseguendo ciò che già conosce :). Il sistema della roulette ha subito meno perdite. Quindi credo che questo sia un modo per migliorare un sistema. Lo considero anche una forma di progressione negativa. Il codice di gestione del denaro è qui sotto, anche questo non è privo di bug.

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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);}
        //~~~~~~~~~~~~~~~~~~~~~
    }
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Ho incluso il Kelly e l'Optimal F perché avevo già le statistiche per calcolarli. Non è mai raccomandato usarli su piccole dimensioni del campione imo <100. Inoltre sono in frazioni di banca a rischio, quindi dovrete prendere il vostro (la mia preferenza) margine di conto * il k o f * il vostro_rischio_appetito (0.5 di solito). Poi devi assicurarti che i Lotti*Pip_Values*Stop_Loss<=Target, ho un esempio di questo in uno dei codici sopra.

Andando avanti ecco i risultati del suggerimento di Zzuegg. Mi chiedo, se può trasformare il nostro Break-Even System-14 in un vincitore?

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