나는 통계가 좋지 않다. . . 하지만 스프레드와 휠의 0을 동일시할 수는 없다고 생각합니다. 승패에 관계없이 스프레드가 지급됩니다. 휠의 0은 빨간색이나 검은색으로 플레이할 경우 이길 확률이 50% 미만임을 의미합니다. . 18:19 또는 48.65%
나는 당신이 찾고있는 것이 어떤 종류의 거래가 스프레드의 영향으로 인해 48.65 %의 유효 승률을 줄 것인가라고 생각합니다. 나는 당신의 거래가 20핍이고 스프레드가 1핍이라면 당신이 추구하는 바를 줄 것이라고 생각합니다. . . 위험 = 21 보상 20 . . . 제 생각에는 인용하지 마세요 ;-)
당신이 다르게 생각하고 있다는 것이 기쁘고 그것이 동등할 수 있다고 믿기 때문에 내가 대답하려고 하는 주요 질문 중 하나입니다. 룰렛에 베팅하는 1달러마다 승률과 50/50 비율의 차이에 해당하는 예상 손실이 있다는 것을 알고 있습니다. 예를 들어 휠에 0/그린이 없으면 장기적으로 균등한 게임을 하게 됩니다. 그러나 48.65%의 확률로 베팅한 $100당 $1.35와 같은 일정한 손실을 보게 됩니다.
이것과 스프레드의 유일한 차이점은 .... 스프레드를 사용하면 투표율이 손실 또는 승리 여부에 관계없이 거래할 때마다 지불해야 합니다.
이제 다음 단계는 시뮬레이션을 실행하는 것입니다. 첫 번째는 20핍 손절매와 20핍 이익실현을 찾는 무작위 거래 를 사용하는 것입니다. 분명히 이 테스트 내에서 더 많은 거래/샘플이 더 좋습니다. 흠, 룰렛과 비교했을 때 비슷한 결과가 나오지 않을 것이라고 생각하는 사람이 있을까?
좋아요, 여러분, 우리는 데이터를 가지고 있습니다.
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); } } } }
이제 거기에 19.9배의 이익과 손실이 있음을 확신합니다. 그러나 수익성 있는 거래 %는 그 자체로 말합니다.
그것은 룰렛보다 훨씬 더 나쁜 것으로 밝혀졌지만 표준 오류 또는 쿠션 통계가 필요한 이유 때문입니다. 다른 사람이 실행하여 약간 높거나 낮은 값을 얻을 수 있지만 수학적 기대치 는 룰렛과 동일하다고 생각합니다. 이봐, 이것이 이것을 알지 못하는 상인의 shinisk를 놀라게하지 않는다면 다른 것은 없을 것입니다.
어쨌든 계속 진행합니다. 내가 이전에 가르쳤을 때 다음 논리적 단계는 난수가 0-36 사이에 있는지 확인하기 위해 mql4 시뮬레이션을 수행하고 짝수이면 누적 합계에 1$를 추가하거나($100,000에서 시작) 1을 빼는 것입니다. $는 홀수이거나 0이면 시간 낭비일 것입니다. 모두와 그들의 엄마가 룰렛의 확률을 알고 있기 때문입니다. 그렇지 않은 경우 온라인에서 검색할 수 있습니다. 따라서 해당 단계를 건너뛰겠습니다.
그러나 어쨌든, 우리는 상인 맞아요, lol. 우리는 시장이 무작위라고 믿지 않으며 특정 성공 확률로 시장을 예측할 수 있다고 믿습니다. 따라서 적어도 나에게 바로 다음 단계는 예측 방법과 임의 항목을 누적하는 것입니다. 그러나 다음 질문은 거래에 사용하는 경향이 있는 모든 필터를 고려할 때 해당 수의 샘플 근처에 아무 곳도 없을 것이라는 점을 고려할 때 거래 시스템을 이것과 어떻게 비교할 수 있습니까?
좋아, 나는 여전히 위의 질문에 대한 제안을 기다리고 있습니다. 주로 2개의 시스템을 제안할 예정입니다. 그 중 하나는 http://forex-strategies-revealed.com/simple/simple-trading-with-daily-range에서 System 14라고 부를 것입니다. 그리고 다른 하나는 http://www.blackjackforumonline.com/content/Betting_Systems_Oscars_Blackjack_System.htm에서 Oscar's Grind라고 부를 것입니다.
System 14에 대한 몇 마디: 내가 찾을 수 있는 사이트의 고급 섹션 내에서 가장 반응이 좋은 주제였습니다. 코딩하기가 매우 간단해 보이며 많은 포스터가 이를 승자로 인정합니다.
OscarGrind에 대한 몇 마디: Advantage 플레이어는 진행이라는 단어를 듣는 것조차 좋아하지 않습니다. 그러나 내가 존경하는 작가(그는 그것이 확실하다고 말하지는 않음)에게서 왔으며 이 맥락에서 기꺼이 시도해 볼 것입니다.
두 시스템에 대한 해석을 코딩하고 게시하겠습니다. 여기서 System-14의 함정은 아마도 20-Pip SL-TP를 사용하도록 강제할 것이라는 사실일 것입니다. OscarGrind의 함정은 승리 후 하나의 단위만 찾기 위해 크기 주문을 하는 방법입니다. 그러나 당신의 손가락을 교차 유지, 수익성있는 시스템은 곧 확인 될 수 있습니다.
여기 System_14가 있습니다. 거의 손익분기점이므로 랜덤에 비해 나쁘지는 않지만 여전히 개선의 여지가 있습니다. 여하튼, 여기에 내가 방금 작성한 코드가 있으므로 오류가 없을 수도 있습니다.
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); } } } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Forex의 Oscars Grind는 완전히 실패했습니다. 여기에서 발견된 성배는 없는 것 같아요. 다만, 지적할 것이 있다. 랜덤 시스템을 거래하고 스프레드가 1-3이고 <60핍 사이에서 이익을 얻으려면 카지노 룰렛을 치는 것이 좋습니다. 진행 상황(martingale 또는 기타)을 사용하는 경우, 특히 예측이 잘못된 경우에는 망할 때까지 시간 문제일 뿐입니다. 더 강력한 예측이 승률을 유리하게 만드는 가장 좋은 방법일 수 있습니다.
다시, 테스터 코딩. 오류가 포함될 수 있으며 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);} } } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
이미 프로토타입이 있으므로 빠르게 테스트할 수 있습니까?
부정적인 결과를 가정하여 현재 승/패 비율에 따라 로트 크기를 아주 약간 조정하면 최소한 결과가 약간 증가해야 합니다.
예시:
무작위 시스템을 사용하여 47%의 승률을 가정합니다.
이제 수정자를 다음과 같이 얻습니다. 47/ActualWinningRage
그리고 lotsize는 (47/ActualWinningRage)*lotsize가 됩니다.
방금 일어나서 이 접근 방식을 시도하기로 결정했습니다.
참으로 조잡한 속임수다. 나는 그것이 이미 알고 있는 것을 쫓고 있다고 생각합니다. :). 룰렛 시스템은 고통 없이 손실을 입었습니다. 그래서 나는 그것이 시스템을 개선하는 한 가지 방법이라고 생각합니다. 나는 또한 이것을 부정적인 진행의 한 형태로 고려할 것입니다. 자금 관리 코드는 아래에 있으며 버그가 없습니다.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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);} //~~~~~~~~~~~~~~~~~~~~~ } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
나는 이미 Stats를 계산할 수 있었기 때문에 Kelly와 Optimal F를 포함했습니다. 작은 샘플 크기 imo <100에서는 사용하지 않는 것이 좋습니다. 또한 그들은 위험을 감수할 은행의 분수에 속하므로 귀하의 (내 선호) 계정 마진 * k 또는 f * your_risk_appetite(보통 0.5)를 취해야 합니다. 그런 다음 lot*Pip_Values*Stop_Loss<=Target을 확인해야 합니다. 위의 코드 중 하나에 이에 대한 예가 있습니다.
다음은 Zzuegg의 제안에 대한 결과입니다. 그것이 우리의 손익분기점인 System-14를 승자로 만들 수 있을지 궁금합니다.
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
가격 변동이 랜덤 워크를 따른다면(그리고 모든 사람이 그렇다고 생각한다면 이 포럼은 비어 있을 것입니다), 룰렛과 동일한 확률을 가지기 위해 트레이더는 얼마나 많은 핍을 포착/잃어야 할까요? 이 경우에는 36개의 숫자와 하나의 0이 있는 유럽식 휠을 가정합니다. 이 베팅은 1:1 지불금인 Odds vs Even의 Even Money 베팅입니다. 분명히 당신이 0/그린에 착륙하면 당신은 집니다. 따라서 기본적으로 0 또는 녹색이 스프레드 역할을 합니다. 그리고 우리는 스프레드를 1-Pip으로 가정합니다.
지금까지 내 생각은 내가 1-Pip을 찾고 있다면 Profit을 취하고 1-Pip 손절매가 있다는 것입니다. 다시 가격이 갈 쪽에 편향이 없다고 가정하면, 나는 룰렛보다 훨씬 더 나쁜 확률로 게임을 할 것입니다. 나는 10핍 손절매 대 10핍 이익 실현을 찾는 것이 거래를 더 나은 옵션으로 만든다고 생각하지 않습니다. 나는 그럭저럭 요전날 내 머리 속에서 답을 알아낼 수 있었지만 오늘은 잊어버렸습니다. + 어쨌든 내 수학에 확신이 없었습니다. :).
테스트/시뮬레이션할 가설이 있으므로 누군가 저를 도와주세요. 감사해요.