交易货币对组合 - 页 9

 
MetaDriver:

他们是为了故事而存在的。(真的全白,这与广告完全一致,我确认)。

它们只需要是白色和蓬松的,因为根据冯-诺伊曼-摩根斯坦定理,MiniMax值是游戏的价格,也就是最小期望值。一个最佳的多元化投资组合必须是有利可图的,无论所选工具的价格向哪个方向移动。相应地,如果投资组合至少在一个历史时期允许损失,那么根据上述定理,它的预期报酬率是负的,它不是最佳的多样化。
 
C-4:

但正常人不会因为某样东西是开放的就使用它,而不了解它的工作原理。

没有人被迫使用它。源代码是公开的,基本的数学理论和算法并不是秘密。那些心智健全、记忆力强的人有能力自己弄清楚它的运作方式。我们其余的人可以休息了。
 
kharko:

实施时需要枚举所有的变体。变体的总数是N的2次方,其中N是组合中的工具数量。也许有人可以帮忙--用现成的代码。我将非常感激。

为缩减而优化。现在线条更直了。但在我思考的过程中,突然出现了一个问题。你是如何计算价差的?毕竟,你需要知道会有多少笔交易,而且是什么数量的交易!我的指标中不考虑点差,但我曾试图计算我们在掉期中会损失/获得多少点。在优化过程中不考虑调换。

警告!我强烈建议不要使用大量的货币对和要分析的条形图的数量。

当通过10个货币对的缩减和参数Lengh = 100进行优化时,该指标初始化时间约为5秒!要有耐心 :)

附加的文件:
 

填写ET_para.csv文件的例子,该文件应该在files文件夹中。

符号 类型
欧元兑美元1
欧元兑英镑0
EURCHF1
EURJPY1
英镑兑美元1
USDCHF0
美元兑日元1
澳元兑美元1
美元兑加元1
纽元兑美元0

第一行用于标题,并不包括在计算中!第二行是用来计算的。

附加的文件:
et_para.zip  1 kb
 
EvgeTrofi:

为缩减而优化。现在线条更直了。但在我思考的过程中,突然出现了一个问题。你是如何计算价差的?毕竟,你需要知道会有多少笔交易,而且是什么数量的交易!我的指标中不考虑点差,但我曾试图计算我们在掉期中会损失/获得多少点。在优化过程中不考虑调换。

警告!我强烈建议不要使用大量的货币对和要分析的条形图的数量。

当通过10个货币对的缩减和参数Lengh = 100进行优化时,该指标初始化时间约为5秒!要有耐心 :)

干得好...

不考虑价差和互换。该指标只对点数起作用。

如果我们考虑到交易量、点差和点值,我们就会得到一条虚拟的股票曲线,它直接取决于这些参数的正确值。我们需要计算投资组合中的所有工具在存款货币 中的每一栏的点值。在许多经纪公司,价差值不同,这将大大扭曲曲线。

我对你尝试所有选项的算法感兴趣。我将非常感谢您的帮助。

 

选项矩阵形成如下。

void Sbor(int& Ar[][]){
   //Создание массива вариантов сочитаний действий над валютными парами
   int Begin = 0;
   int Size = MathPow(V, CountSy);
   int min = 0;
   int max = 1;
   if(V==3) min = -1;
   ArrayResize(Ar, Size);
   for(int i = 0; i < Size; i++){ // Варианты (строки)
      for(int j = 0; j < CountSy; j++){ // Инструменты (столбцы)
         if(i==0){
            Ar[i][j]=0;
         }else{
            if(j==0){
               if(Ar[i-1][j]<max){
                  Ar[i][j]++;
               }else{
                  Ar[i][j]=min;
               }
            }else{
               if(Ar[i][j-1]<Ar[i-1][j-1]){
                  if(Ar[i-1][j]<max){
                     Ar[i][j]++;
                  }else{
                     Ar[i][j]=min;
                  }
               }else{
                  Ar[i][j]=Ar[i-1][j];
               }
            }
         }
      }//Next j
   }//Next i
}//Sbor()

为了更容易理解这段代码,我上传了一个Excel电子表格,里面有形成这样一个私有矩阵的公式。

然后,你只需用蛮力跑完所有的变体 :)

附加的文件:
arvar.zip  5 kb
 
EvgeTrofi:

选项矩阵形成如下。

为了更容易理解这段代码,我上传了一个Excel电子表格,里面有形成这样一个私有矩阵的公式。

之后你需要做的就是跑完所有的变体 :)

spb

写了一个更简单的代码。

void Matrica()
{
   double size = MathPow(2,Num.Para);
   int trend[];
//---
   ArrayResize(trend,Num.Para);
   for(int i=0;i<size;i++)
   {
      int x = i;
      int pos = 0;
      ArrayInitialize(trend,0);
      while(x>0)
      {
         trend[pos] = x % 2;
         pos++;
         x = MathFloor(x / 2);
      }
// Вывод варианта      
   }
}
变体号码以二进制数字系统表示。


 

增加了缩水和利润系数的显示(当前余额与最大缩水的比率)。这个数字越大,图表看起来就越稳定。优化是通过这个值进行的。

花在优化上的秒数显示在评论中。:)

附加的文件:
 

EvgeTrofi:

注意!我强烈建议不要使用大量的货币对和分析棒的数量。

当优化10个货币对的缩减和参数Lengh=100时,该指标初始化约5秒!!。要有耐心 :)

想过如何绕过条数 的限制。你需要将优化的时间间隔除以一个数字,例如,100。如果区间内有1000条,那么我们将得到1000/100=10个时间点,在这些时间点上我们可以进行计算。因此,数字越小,计算精度就越高。
 
kharko:
我想到了一个方法来规避对条数的限制。有必要将优化的时间框架除以一个数字,例如,100。如果区间内有1000条,我们将得到1000/100=10个时间点,在这些时间点上我们可以进行计算。因此,数字越小,计算精度就越高。

我也一直在为这个问题挠头。事实证明,章节越少,调整的概率就越高。

另一方面,R-Portfolio使用支付矩阵,其中信息量最大的是方形矩阵,即分析多少种金融工具,就应该大约有多少节。

但问题是,即使是关联性很好的工具,在某些时刻也会改变相关的符号。也就是说,如果你按照你认为合适的方式拆分碎片,那么分析中就有可能恰恰包含这种坏的时刻,有变化的标志。

简而言之,我得出的结论是,章节不应该由平等的间隔(具有相同的条数)来划分,而应该由一些单一乐器的极值(例如,在组合中具有最大份额的乐器)来划分。即应用ZigZag或其他一些算法,检测趋势的断点,并通过这些点(仅在这些条形图上)对报价进行折算,以进一步送入R-Portfolio(或其他一些投资组合分析程序)。这似乎是最符合犹太教规和最有内容的方式。否则,我们会在修正变化的点之间得到某种噪音分析,例如,在横向。