Vince에 따른 로트 계산 - 페이지 11

 

기하 평균을 사용하여 최적의 f 를 찾습니다.

실제 거래에서 손실과 이익의 크기는 지속적으로 변경됩니다. 따라서 Kelly의 공식은 올바른 최적 f 를 제공할 수 없습니다 . 거래할 계약 수를 결정할 수 있는 최적의 f 를 찾는 것이 수학적 관점에서 어떻게 정확 합니까? 이 질문에 대답해 봅시다. 먼저 f를 포함하도록 HPR 을 찾는 공식을 변경해야 합니다.

분기의 첫 번째 게시물에서 공식을 더 참조하십시오.

더 나아가

우리는 최고의 거래 시스템이 가장 높은 기하 평균을 가진 시스템이라는 것을 보았습니다. 기하 평균을 계산하려면 f를 알아야 합니다. 따라서 우리의 행동을 단계별로 설명하겠습니다.

1. 주어진 시장 시스템에서 거래의 역사를 가져 가라.

2. 0부터 1까지 다양한 f 값을 살펴보고 최적의 f를 찾습니다. 최적의 f는 가장 높은 TWR에 해당합니다.

3. f를 찾은 후 TWR 의 N번째 루트를 취합니다 ( N 은 총 거래 횟수입니다). 이것은 이 시장 시스템에 대한 기하 평균입니다. 이제 얻은 기하 평균을 사용하여 이 시스템을 다른 시스템과 비교할 수 있습니다. f 값은 주어진 시장 시스템에서 거래할 계약 수를 알려줍니다. f가 발견되면 가장 큰 손실을 음의 최적 /로 나누어 금전적 가치로 변환할 수 있습니다. 예를 들어, 가장 큰 손실이 $100이고 최적 f = 0.25이면 -100달러 / -0.25 = $400입니다. 즉, 계정에 $400당 1단위를 베팅해야 합니다. 간단하게 하기 위해 모든 것은 단위를 기준으로 계산할 수 있습니다(예: $5 칩 1개, 선물 계약 1개 또는 100주). 각 단위에 할당할 달러의 수는 최대 손실을 음의 최적 f로 나누어 계산할 수 있습니다. 최적의 f 는 시스템의 수익성(1단위 기준)과 위험(1단위 기준) 간의 균형입니다. 많은 사람들은 최적의 고정 몫이 귀하의 베팅을 위해 따로 떼어 둔 계정의 비율이라고 생각합니다. 이것은 완전히 거짓입니다. 한 단계 더 있어야 합니다. 최적의 f 자체는 거래되는 계정의 비율이 아니라 가장 큰 손실의 제수입니다. 이 나눗셈의 몫은 시장에서 얼마나 많은 베팅을 하거나 얼마나 많은 계약을 체결해야 하는지를 파악하기 위해 총 계정을 나누어야 하는 금액입니다.

저것들. AccountFreeMargin()/H, H=D/(-f).

올빼미 코드에서 구성하는 방법은 다음과 같습니다. 예고편을 참조하세요.

 if (optimal_f) //--- Расчет оптимального f ---
        {   
          
           double Mas_Outcome_of_transactions [ 10000 ];         // Массив профитов/убытков закрытых позиций
           int Qnt = 0 , Orders = OrdersHistoryTotal ();         // Счётчик количества ордеров   
           ArrayInitialize (Mas_Outcome_of_transactions, 0 );   // Обнуление массива
           double f, D, SUMM, TWR, G, G_Rez, H,A,B, Pow;
           int orderIndex;
   
           for (orderIndex = 0 ; orderIndex < Orders; orderIndex++)
          {   
             if (! OrderSelect (orderIndex, SELECT_BY_POS, MODE_HISTORY))
              {
                 Print ( "Ошибка при доступе к исторической базе (" , GetLastError (), ")" );
                 continue ;
              }
   
             if ( OrderSymbol () != Symbol () || OrderMagicNumber () != MAGICMA || OrderCloseTime ()== 0 )
                 continue ; 
         
             int lastType = OrderType ();
             double lastLots = OrderLots ();
             double lastProfit = OrderProfit () + OrderSwap ();
      
             if (orderIndex == 0 || lastProfit < D)
                D = lastProfit;
      
             Mas_Outcome_of_transactions[Qnt] = lastProfit;   // Заполняем массив профитом/лоссом по всем закрытым позициям 
             SUMM=SUMM+lastProfit;
             Qnt++;                                           // увеличиваем счетчик закрытых ордеров    
          }   
   
         if (Transaction_number<Qnt) { //при репрезентативном кол-ве ордеров на истории открываемся объемом через оптим-ую f 
            Pow = 1 / NormalizeDouble (Orders, 0 );
             for (f = 0.01 ; f<= 1.0 ; f=f+ 0.01 )                   // цикл перебора переменной f для поиска оптимального ее значения,
            {                                                   // при котором TWR - максимально
               G= 1 ;
               for ( orderIndex = 1 ; orderIndex < Qnt; orderIndex++) // при заданной f проходим по всем закрытым ордерам
                {                                                     // и считаем среднее геометрическое от TWR
                  TWR = 1 +f*(-Mas_Outcome_of_transactions[orderIndex]/(D));
                  G *= NormalizeDouble ( MathPow (TWR, Pow), 8 );
                }
               if (G > G_Rez)  G_Rez = G; // если текущий > результирующего, то результирующий делаем равным текущему
               else break ;               // иначе переходим на следующую итерацию цикла по f
            }
               
            
             if (f> 0 ) H=D/(-f); //денежный эквивалент фракций (оптимального f) для торговли 0,1 лотом.
            lot = NormalizeDouble (( AccountFreeMargin ()/H)*Min_Lot, 1 );
             if (lot== 0 )    lot=Min_Lot;
             Print ( "H=D/(-f): " , H, " lot = " , DoubleToStr (lot, 1 ), "Transaction_number = " , Transaction_number);  
             Print ( "G_Rez максимальна = " , DoubleToStr (G_Rez, 8 ), " при f = " , f);             
             Print ( " Максимальный лосс по позиции, D = " , DoubleToStr (D, 2 ), " Pow (1/Orders)= " , DoubleToStr (Pow, 8 ));
             Print ( "Закрытых позиций = " ,   Qnt,
                 " Нетто Профит/лосс = " , SUMM,
                 " У последней " ,         Qnt,
                 " закрытой позы профит/лосс = " , Mas_Outcome_of_transactions[Qnt- 1 ]);  
                
             return (lot);         
          }     // Выход из  if (Transaction_number<Qnt)                   
           else {
             lot=Min_Lot; 
             Print ( "Закрытых позиций = " ,   Qnt, " Transaction_number = " , Transaction_number);
             return (lot); 
          } 
  
      }   //Выход из расчета оптимального f     

책에 따르면 모든 것이 바로 여기에 있습니다.

이 기능을 올빼미에게 돌리고 테스트하고 확인하고 결과를 공유하십시오.

파일:
 
ph3onix :

1. 가장 먼저 떠오르는 것은 다음 포지션에 대한 손절매를 기반으로 로트 크기를 계산해야 한다는 것입니다 .

2. 수학자 Vince가 거래에서 사용하도록 권장하는 보증금 의 몫을 알고 있습니다.

3. ...이 스레드에서 Expert Advisors를 테스트할 때 사용된 계산된 로트 크기가 약간 잘못되었습니다.


1. 여기 에서 신청해야 합니다.

2. 당신은 Vince의 수학에 익숙하지 않습니다. 그는 완전히 다른 접근 방식을 권장합니다. 그는 당신이 쓸 때 "주"에 대해 이야기하지 않습니다...

"

최적의 f 자체는 거래되는 계정의 비율이 아니라 가장 큰 손실의 제수입니다. 이 나눗셈의 몫은 시장에서 얼마나 많은 베팅을 하거나 얼마나 많은 계약을 체결해야 하는지를 파악하기 위해 총 계정을 나누어야 하는 금액입니다.

"

3. 모든 것은 원본 출처의 정보에 따라 엄격하게 이루어집니다. 특히 31페이지에서 더 자세히 읽고, 자신의 올빼미와 비교하고, 확인하고, 결과를 공유하십시오.

 

주제가 닫히지 않았습니다. 계속됩니다...

로트 계산 기능은 공개 액세스로 EA(예고편 참조)에 게시됩니다.

파일:
 

여러분, 당신은 분명히 뭔가를 과장했습니다. TWR은 초기 계정이 몇 배 증가했는지를 나타내는 지표입니다. 최적의 f는 예치금의 백분율로 나타낸 거래당 위험입니다. TWR은 최적 f의 도함수입니다. 전략 테스터 의 위험 비율을 거래당 1%에서 100%까지 최적화하기만 하면 됩니다. 특정 값이 지나면 총 이익은 성장을 멈춥니다. 이 값은 최적 f입니다.

이것을 보증금의 간단한 비율로 쌓으면 최적의 G 를 계산하는 방법을 상상하는 것이 무섭습니다(예, 그런 것이 있습니다).

 
C-4 :

여러분, 당신은 분명히 뭔가를 과장했습니다. TWR은 초기 계정이 몇 배 증가했는지를 나타내는 지표입니다. 최적의 f는 예치금의 백분율로 나타낸 거래당 위험입니다. TWR은 최적 f의 도함수입니다. 전략 테스터의 위험 비율을 거래당 1%에서 100%까지 최적화하기만 하면 됩니다. 특정 값이 지나면 총 이익 증가가 멈춥니다. 이 값은 최적 f입니다.

이것을 예금의 간단한 비율로 쌓으면 최적의 G 를 계산하기 시작하는 방법을 상상하기가 무섭습니다.


그것은 이미 계산되었습니다 - 모든 것이 치고, 모든 것이 확인되고, 먼저 분기를 참조하십시오 ... :-)

"최적의 G 를 계산하는 방법은 무엇입니까?" - 모든 것은 소스를 기반으로 계산됩니다 ...

 if (Transaction_number<Qnt) { //при репрезентативном кол-ве ордеров на истории открываемся объемом через оптим-ую f 
            Pow = 1 / NormalizeDouble (Orders, 0 );
             for (f = 0.01 ; f<= 1.0 ; f=f+ 0.01 )                   // цикл перебора переменной f для поиска оптимального ее значения,
            {                                                   // при котором TWR - максимально
               G= 1 ;
               for ( orderIndex = 1 ; orderIndex < Qnt; orderIndex++) // при заданной f проходим по всем закрытым ордерам
                {                                                     // и считаем среднее геометрическое от TWR
                  TWR = 1 +f*(-Mas_Outcome_of_transactions[orderIndex]/(D));
                  G *= NormalizeDouble ( MathPow (TWR, Pow), 8 );
                }
               if (G > G_Rez)  G_Rez = G; // если текущий > результирующего, то результирующий делаем равным текущему
               else break ;               // иначе переходим на следующую итерацию цикла по f
            }
               
            
             if (f> 0 ) H=D/(-f); //денежный эквивалент фракций (оптимального f) для торговли 0,1 лотом.
            lot = NormalizeDouble (( AccountFreeMargin ()/H)*Min_Lot, 1 );
 
C-4 :

...

이것을 보증금의 간단한 비율로 쌓으면 최적의 G 를 계산하는 방법을 상상하는 것이 무섭습니다(예, 그런 것이 있습니다).

나는 그것을 아직 만나지 못했다. 나는 검색을 할 것이다. 이것은 어떤 종류의 새인가 -최적의 G 는 무엇입니까? ...
 
최적 G는 포트폴리오 자본화 요소입니다. 최적의 G를 찾으려면 최소한 전체 포트폴리오의 분산을 최적화하고 마코위츠 포트폴리오 이론 에 유창해야 합니다. 위의 계산에서 나는 그런 것을 볼 수 없습니다.
 

C-4 :
1. Оптимальное G - это фактор капитализации портфеля. Для поиска оптимального G нужно как минимум оптимизировать дисперсию совокупного портфеля и свободно разбираться в портфельной теории Марковица.

2. 위의 계산에서 나는 그런 종류의 것을 볼 수 없습니다.


1. 뻔하다 - 이것은 포트폴리오 구성의 계산과 순서에 더 가깝다 ... 질문에 관심을 가질 것이다.

2. 여기가 아닙니다. 나는 최적의 G와 기하 평균 G를 혼동했습니다 . 그 계산은 여기에 있습니다 ... :-)

지점의 페이지의 첫 번째 게시물을 참조하십시오.

"

평균 기하학적 거래

이익이 재투자되고 부분 계약이 거래될 수 있다고 가정할 때 거래자가 기하학적 평균 거래(즉, 거래당 계약당 얻은 평균 이익)를 계산하는 것은 흥미로울 수 있습니다. 이것은 거래가 고정 주식을 기반으로 할 때의 수학적 기대치입니다. 이것은 실제로 고정 계정 지분을 사용할 때 시스템의 대략적인 거래당 수익입니다. (실제로, 기하 평균 거래는 거래당 계약당 달러 단위의 평균입니다. 기하 평균에서 1을 빼면 평균이 됩니다. 기하 평균이 1.025이면 거래당 평균 2.5%에 해당합니다.) 많은 거래자는 시장 시스템의 평균 거래만 보고 해당 시스템이 거래할 가치가 있는지 확인합니다. 그러나 결정을 내릴 때 기하 평균 거래( GAT ) 에 주의를 기울여야 합니다 .

어디 G = 기하 평균 - 1;

f = 최적의 고정 비율.

(물론 가장 큰 손실은 항상 음수입니다).

 
내가 너라면, 나는 이 쓰레기를 별로 좋아하지 않을 것이다. Vince의 전체 수학은 피팅을 기반으로 합니다. f 자체는 안정적이지 않고 시간이 지남에 따라 붕괴되는 경향이 있으며 Z-점수 또는 레버의 비대칭 효과에 극도로 민감할 뿐만 아니라 극도로 불균등한 이익 분포 를 제공합니다. 시간의 처음 90%는 수익의 10%를 버는 데 사용합니다.
 
C-4 :
내가 너라면, 나는 이 쓰레기를 별로 좋아하지 않을 것이다. Vince의 전체 수학은 피팅을 기반으로 합니다. f 자체는 안정적이지 않고 시간이 지남에 따라 붕괴되는 경향이 있으며 Z-점수 또는 레버의 비대칭 효과에 극도로 민감할 뿐만 아니라 극히 불균등한 이익 분배를 제공합니다. 시간의 처음 90%는 수익의 10%를 버는 데 사용합니다.


Vasily, 정보, 그것이 무엇인지, 그리고 그것이 무엇을 초래할 수 있는지에 대해 감사합니다 하나 또는 다른 올빼미에서 MM에 대한 접근 ...

그건 그렇고 포트폴리오 이론으로 다각화의 주제를 다루기도합니다 ... :-) 특히 SUCH 단어가 빨간색으로 강조 표시되면 ... :-) 책이 있고 공식이 있습니다. 어떻게 그렇지 않을 수 있습니까? 이 정보를 코드로 옮기고 다양한 올빼미에 대한 그의 로트 계산을 보지 않으려면 관심이 있습니다 ... 책을 펼치고 그에 따라 시스템을 작성하고 테스터, 데모에서 동작을보고, 우선... 이것, 저것, 저것... :-) 나는 일반적으로 파고 있습니다. 그건 그렇고, 나는 최근에 META-COT 지표에 따라 시장 행동에 대한 다른 유형의 분석의 그림자가없는 귀하의 기사에서 순전히 기초에 따라 데모 계정을 모니터링했습니다. 지금까지 모든 것이 이익입니다 ... :-)

"

더 나은

시스템, 더 높은 f . f높을수록 최대 손실(백분율)이 f보다 작지 않으므로 가능한 손실이 커집니다. 상황의 역설은 시스템이 충분히 높은 최적 f를 생성할 수 있는 경우 이러한 시스템의 손실도 상당히 높다는 것입니다. 한편으로 최적의 f는 가장 기하학적인 성장을 가능하게 하는 반면에 쉽게 빠질 수 있는 함정을 만듭니다.

고정 주식을 거래할 때 최적의 f를 사용하면 상당한 손실을 예상할 수 있습니다(잔액의 백분율). 최적의 f는 플루토늄과 같습니다. 강력한 강도를 제공하지만 매우 위험합니다. 이러한 상당한 손실은 특히 초보자에게 큰 문제입니다. 최적의 f 수준에서 거래하면 일반 거래보다 빠르게 큰 손실을 입을 위험이 있기 때문입니다. 다각화는 손실을 크게 완화할 수 있습니다. 다각화의 장점은 동시에 많은 시도(많은 게임을 하기 위해)를 허용하여 전체 수익을 높일 수 있다는 것입니다. 공정하게 말해서, 분산화는 일반적으로 손실을 완화하는 가장 좋은 방법이지만 반드시 손실을 줄이는 것은 아니며 경우에 따라 손실을 증가시킬 수도 있습니다!

분산투자가 충분히 효과적이라면 손실을 완전히 피할 수 있다는 오해가 있습니다. 효과적인 분산투자를 통해 손실을 어느 정도 완화할 수는 있지만 완전히 제거할 수는 없습니다. 자신을 오도하지 마십시오. 시스템을 얼마나 잘 사용하느냐가 중요하지 않습니다. 아무리 효과적으로 다각화하더라도 여전히 상당한 손실에 직면할 것입니다. 그 이유는 시장 시스템의 상호 상관 관계가 아닙니다. 포트폴리오의 시장 시스템 대부분 또는 전부가 당신에게 불리하게 작용해서는 안 된다고 생각하는 경우가 있기 때문입니다. 모든 거래 시스템이 최적의 f에서 작동하고 동시에 최대 손실이 30% 미만이 되도록 5년의 과거 데이터가 있는 포트폴리오를 찾으십시오! 쉽지 않을 것이다. 얼마나 많은 시장 시스템이 사용되는지는 중요하지 않습니다. 모든 것을 수학적으로 올바르게 수행하려면 계정 잔액의 30~95%를 잃을 준비가 되어 있어야 합니다. 가장 엄격한 규율이 필요하며 모든 사람이 이를 준수할 수 있는 것은 아닙니다.

거래자는 일정한 수의 계약 거래를 거부하자마자 거래 금액의 문제에 직면합니다. 이것은 거래자가 문제를 인식하는지 여부에 관계없이 항상 발생합니다. 일정한 수의 계약을 거래하는 것은 해결책이 아닙니다. 이러한 방식으로는 결코 기하학적 성장을 이룰 수 없기 때문입니다. 따라서 좋든 싫든 다음 거래에서 얼마를 거래해야 하는지에 대한 질문은 모두에게 불가피할 것입니다. 단순히 난수를 선택하면 심각한 오류가 발생할 수 있습니다. 최적의 f는 수학적으로 올바른 유일한 솔루션입니다.

현대 포트폴리오 이론

최적 f와 시장 시스템의 손실이 있는 상황을 상기하십시오. 시장 시스템이 좋을수록 f 값이 높아집니다. 그러나 최적의 f로 거래하는 경우 손실은 (역사적으로) f보다 작을 수 없습니다. 일반적으로 말해서, 시장 시스템이 좋을수록 최적의 f에서 거래할 때 중간 손실(계정 잔고의 백분율)이 더 커집니다. 따라서 가장 큰 기하학적 성장을 달성하려면 그 과정에서 심각한 손실에 대비해야 합니다.

"