Matematikte iyi olan birine soru

 

Fiyat hareketi rastgele bir yürüyüş izlerse (ve herkes öyle olduğunu düşünürse bu forum boş olur), bir tüccarın ruletle aynı oranlara sahip olması için kaç Pip yakalaması/kaybetmesi gerekir? Bu durumda, 36 sayı ve tek bir 0 ile Avrupa çarkını kabul edeceğiz. Bahis, Oranlar ve Çiftler arasındaki Çift Para bahsi, 1'e 1 ödemedir. Açıkça 0/green'e indiğinizde kaybedersiniz. Yani temelde 0 veya Yeşil, Yayılmalar olarak hizmet eder. Ve spreadlerin 1-Pip olduğunu varsayacağız.

Şu ana kadarki düşüncem, 1 Pip'lik bir Kar almak ve 1 Pip'lik stop-loss almak istiyorsam. Yine fiyatın hangi tarafa gideceği konusunda bir önyargı olmadığını varsayarsak, o zaman ruletten çok daha kötü olan bir oran ile oynuyor olurdum. 10-Pip stoploss vs 10-Pip kar almanın ticareti daha iyi bir seçenek haline getirdiğini düşünmüyorum bile. Geçen gün kafamda cevabı bulmayı başardım ama bugün unuttum, + zaten matematiğimden emin değildim :).

Test etmek/simüle etmek için bir hipotezim olduğu için lütfen biri bana yardım etsin. Teşekkürler.

 

İstatistiklerle aram iyi değil. . . ama yayılmayı ve çarktaki 0'ı eşitleyebileceğinizi sanmıyorum. Spread, kazanma veya kaybetmeden bağımsız olarak ödenir. Direksiyondaki 0, sadece kırmızı veya siyah oynarsanız kazanma şansınızın %50'den az olduğu anlamına gelir. . 18:19 veya %48.65

Sanırım aradığınız şey, yayılmanın etkisiyle ne tür işlemlerin %48.65'lik efektif bir kazanma oranı vereceğidir. Bence ticaretiniz 20 pip ve spread 1 pip olsaydı, bu size peşinde olduğunuz şeyi verirdi. . . risk = 21 ödül 20 . . . Bence benden alıntı yapma ;-)

 

Farklı düşünmen güzel ve cevaplamaya çalıştığım birincil sorulardan biri bu çünkü eşitlenebileceğine inanıyorum. Rulette yatırdığınız her dolar için, kazanma oranınız ile 50/50 oranınız arasındaki farka eşdeğer bir Beklenen Kayıp olduğunu biliyorum. Örneğin, direksiyonda 0/Yeşil yoksa, uzun vadede eşit bir oyun oynuyor olacaksınız. Ancak, sadece %48,65'lik bir şansla, yatırılan her 100$ dolar için 1,35$ gibi sabit bir kaybınız olacaktır.

Bu ve spread arasındaki tek fark, .... spreadlerle, katılımın bir kayıp veya kazanç olmasına bakılmaksızın, her işlem yaptığınızda onlara ödeme yapmanız gerekir.

Şimdi bir sonraki adım benim için bazı simülasyonları çalıştırmak. 20-piplik stoploss ve 20-piplik kâr alımı arayan ilk rastgele esnaf kullanan (tabii ki 1 pip spread dahil değil) toplam kaybı 21 yapar ve umarım aradığım oranları yaratır. Açıkçası, bu testte ne kadar çok ticaret/örneklem varsa o kadar iyidir. Hummm, merak ediyorum, ruletle kıyaslandığında benzer sonuçlar vermeyeceğini düşünen var mı?

 
ubzen : , ruletle kıyaslandığında benzer sonuçlar vermeyeceğini düşünen var mı acaba?
Evet ben çünkü ticarette bahse aykırı olan birçok şey saklı. Örneğin, takası yerleştirmek hareketli bir hedeftir ve rulet masasındaki kutunun hareket etmediği yerde alınamayabilir. Simüle edilemeyen ticareti bozacak pek çok şey var ama bunların her biri bir kâra karşı.
 

Tamam, arkadaşlar elimizde bazı veriler var.

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

Şimdi orada 19,9 kat kar ve zarar olduğundan emin olun. Bununla birlikte, karlı işlemler% kendisi için konuşur.

 

Ruletten bile daha kötü olduğu ortaya çıktı, ancak bunun nedeni standart hatalardan veya yastık istatistiklerinin neye ihtiyacı varsa. Başkası çalıştırabilir ve biraz daha yüksek veya daha düşük değerler alabilir, ancak matematiksel beklentinin rulet ile aynı olduğuna inanıyorum. Dostum, bu shiniki korkutmazsa, bunu bilmeyen bir tüccarı başka hiçbir şey korkutamaz.

Her neyse, devam et. Daha önce öğrettiğim bir sonraki mantıklı adım, 0-36 arasında herhangi bir yere gelip gelmediklerini görmek için bir mql4 rasgele sayı simülasyonu yapmak ve eğer çift sayıysa, koşu toplamıma 1$ eklemek (100.000$'dan başlayarak) veya 1 çıkarmaktı. $ tek veya 0 ise. Ama bu zaman kaybı olur çünkü herkes ve anneleri ruletteki oranları bilir. Ve eğer yapmazlarsa, onlara sadece çevrimiçi olarak bakılabilir. Bu yüzden, sadece bu adımı atlayacağım.

Ama her neyse, biz tüccarız, lol. Piyasaların rastgele olduğuna inanmıyoruz ve belirli bir başarı olasılığı ile piyasayı tahmin edebileceğimize inanıyoruz. Bu yüzden en azından benim için bir sonraki adım, rastgele girişlere karşı bir tahmin yöntemini yığmak olacaktır. Ama bir sonraki sorum, ticarette kullanma eğiliminde olduğumuz tüm filtreler göz önüne alındığında, bu sayıda örneğe yakın bir yere sahip olmayacağımızı düşünürsek, bir ticaret sistemini bununla nasıl karşılaştırabiliriz?

 

Tamam, hala yukarıdaki soruma önerileri bekliyorum. Ana zamanda, 2 sistem önereceğim. Bunlardan biri http://forex-strategies-revealed.com/simple/simple-trading-with-daily-range adresinden System 14 olarak bahsedeceğim. Diğeri ise http://www.blackjackforumonline.com/content/Betting_Systems_Oscars_Blackjack_System.htm adresinden Oscar's Grind olarak bahsedeceğim.

Sistem 14 hakkında birkaç söz: Sitenin ileri bölümünde bulabildiğim en duyarlı konuydu. Kodlaması oldukça basit görünüyor ve birçok poster bunu kazanan olarak gösteriyor.

OscarGrind hakkında birkaç kelime: Advantage oyuncuları, ilerleme kelimesini duymaktan bile hoşlanmazlar. Ancak çok saygı duyduğum bir yazardan geliyorum (kesin bir şey olduğunu söylemiyor) bu bağlamda ona bir şans vermeye hazırım.

Devam edeceğim ve her iki sistemle ilgili yorumumu kodlayıp yayınlayacağım. Burada System-14 için bir tuzak, muhtemelen onu 20-Pip SL-TP kullanmaya zorlayacağım gerçeğidir. OscarGrind için bir tuzak, bir Galibiyetten sonra sadece bir birim aramak için Boyut-Siparişlerin nasıl aranacağıdır. Ama merak etmeyin beyler, yakında karlı bir sistem onaylanabilir.

 

Tamam, İşte System_14. Neredeyse kırıldı-Eşit, bu nedenle Rastgele ile karşılaştırıldığında fena değil ama yine de iyileştirme için yer var. Her neyse, işte az önce yazdığım kodlar, bu yüzden hatasız olmayabilir.

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

Peki, Forex'teki Oscar Grind tam bir başarısız. Sanırım burada keşfedilen bir kutsal kase yok. Ancak, işaret edilmesi gereken bir şey. Bir Rastgele Sistem ticareti yapıyorsanız ve 1-3'lük Spread'lere sahipseniz ve <60 Pip arasında kâr elde etmek istiyorsanız, casino ruletini oynamanız daha iyi olur. İlerleme kullanıyorsanız (martingale veya başka türlü), özellikle kötü tahmininiz varsa, mahvetmeniz an meselesidir. Daha güçlü tahmin, oranları lehinize almanın en iyi yöntemi olabilir.

Yine, tester kodlaması. Hatalar içerebilir ve bunların hiçbirini Canlı hesaplarda kullanmayın.

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

 

Zaten prototipe sahip olduğunuza göre, bir şeyi hızlıca test edebilir misiniz?

Mevcut Kazanç/Zarar oranınıza bağlı olarak lot boyutunu çok az ayarlarsanız, olumsuz bir sonuç varsayarak en azından sonucu biraz artırmalısınız.

Misal:

Rastgele sisteminizi alın ve %47'lik bir kazanma oranı varsayın

Şimdi değiştiriciyi şu şekilde alırsınız: 47/ActualWinningRage

Ve lotsize (47/ActualWinningRage)*lotsize olacaktır.

 

Yeni uyandım ve bu yaklaşımı denemeye karar verdim.

Gerçekten de kaba bir hile. Sanırım bir dereceye kadar zaten bildiğinin peşinden gidiyor :). Rulet Sistemi daha az kayıp verdi. Sanırım bu bir sistemi iyileştirmenin bir yolu. Bunu bir tür olumsuz ilerleme olarak da değerlendireceğim. Para yönetimi kodu aşağıdadır, ayrıca hatasız değildir.

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

Kelly ve Optimal F'yi dahil ettim çünkü zaten onları hesaplamak için İstatistiklerim vardı. Bunları küçük numune boyutları imo <100 üzerinde kullanmanız asla önerilmez. Ayrıca bunlar riske atılacak banka oranlarındadır, bu nedenle (benim tercihim) hesap marjınızı * k veya f * risk_iştahınız (genellikle 0,5) almanız gerekir. O zaman Lots*Pip_Values*Stop_Loss<=Target'ın olduğundan emin olmalısınız, yukarıdaki kodlardan birinde buna bir örnek var.

Devam etmek Zzuegg'in önerisinin sonuçları. Merak ediyorum, Başa Baş Sistemimizi 14'ü bir kazanana dönüştürebilir mi?

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
Neden: