文章 "开发多币种 EA 交易(第 2 部分):过渡到交易策略的虚拟仓位" - 页 6

 

关于交易、自动交易系统和交易策略测试的论坛

讨论文章 "开发多币种智能交易系统(第 2 部分):转向虚拟头寸交易策略"

fxsaber, 2024.02.12 17:33

您的架构与我的有些不同

//+------------------------------------------------------------------+
//| 构造函数|
//+------------------------------------------------------------------+
CSimpleVolumesStrategy::CSimpleVolumesStrategy( const string sInputs ) : CStrategy(sInputs)
{
   this.Input = sInputs;

   ArrayResize(m_orders, this.Input.maxCountOfOrders);

   // 加载指标以获取刻度线量
   iVolumesHandle = iVolumes(this.InputStrategy.symbol, this.InputStrategy.timeframe, VOLUME_TICK);

// 设置刻度卷数组接收器的大小和所需的寻址方式
   ArrayResize(volumes, this.Input.signalPeriod);
   ArraySetAsSeries(volumes, true);
}

我不使用父类的输入。我的所有输入都是私有的,因此可以使用相同的名称。这就导致了很强的通用性:相同的代码隐藏在一个通用宏中。但我就是这样做的。

 
Yuriy Bykov #:

我认为这也不是最终版本,因为你把重点放在了那些已经发布的代码中参数的使用场景上。说到将参数组合成集,甚至自动组合成集,你可能会发现你还可以改进/简化。

你说得对。我是这么做的。
expert.Add(new CSimpleVolumesStrategy(inInputsAll));
这是一个全局字符串变量,所有输入变量都会自动(并创建) 进入该变量。也就是说,无论创建什么对象,这个变量都是输入变量。
 
fxsaber #:
你说得对。我是这么做的。这是一个全局字符串变量,所有输入变量都会自动(并创建) 进入该变量。也就是说,无论创建什么对象,这个变量都是输入变量。

为了以防万一,我提醒你,优化程序会将输入的字符串删减 63 个字符。

 
Stanislav Korotky #:

为了以防万一,我提醒大家,优化程序会将字符串输入减少 63 个字符。

谢谢。这不是输入,所以长度不受限制。

string inInputsAll = NULL;
 

关于交易、自动交易系统和测试交易策略的论坛

讨论文章 "开发多币种智能交易系统(第 2 部分):转向虚拟头寸交易策略"

fxsaber, 2024.02.14 11:36 AM

你是对的。是这样做的。
expert.Add(new CSimpleVolumesStrategy(inInputsAll));
这是一个全局字符串变量,所有输入变量都会自动(并创建) 进入该变量。也就是说,无论什么对象没有创建,这个变量都会被输入。

附上。

附加的文件:
 

您好、

我正在学习 OOP。上一篇文章的后续文章对我帮助很大。

我还在努力学习。谢谢。

 
你好,我看不到截图。能再附上吗?