ddx指标在分时图中使用公式_通在信中ddx分时上穿的公式

DDX是股票技术分析中的一种指标,可以用来判断股票价格的趋势和动量。在分时图中,DDX指标的使用也非常常见,可以通过一定的公式进行计算和分析。本文将介绍DDX指标在分时图中的使用公式以及通达信中DDX分时上穿的公式。

DDX指标的计算公式为:DDX=EMA(A-D)-EMA(M-D),其中A,D,M分别为3个不同时间段的指标线,常见的为10日、20日和30日。这三根指标线的计算公式为:A=(H+L+C)/3,D=(MA(H)-MA(L))/MA(C)*100,M=MA(MA(C)-MA(C,N),其中H为最高价,L为最低价,C为收盘价,N为MA(C)的周期,MA为移动平均线。

在分时图中,DDX指标的使用通常是将其绘制在价格图的下方。当DDX指标线在零轴以上时,表示股票价格处于上涨趋势,当DDX指标线在零轴以下时,表示股票价格处于下跌趋势。同时,DDX指标也可以用来判断股票价格的动量,当DDX指标线向上突破零轴时,表示股票价格的上涨动量正在增加,当DDX指标线向下突破零轴时,表示股票价格的下跌动量正在增加。

此外,通达信中也有DDX分时上穿的公式:CROSS(DDX,M),其中M为上穿参考线的参数值。当DDX指标线从下方向上穿参考线时,表示股票价格正在出现上涨趋势,通常为买入信号;当DDX指标线从上方向下穿参考线时,表示股票价格正在出现下跌趋势,通常为卖出信号。

总之,DDX指标在分时图中的使用可以帮助投资者更好地判断股票价格的趋势和动量,从而更准确地做出投资决策。同时,也需要注意DDX指标的计算公式以及通达信中DDX分时上穿的公式的正确使用。

<think>嗯,用户的问题是关于在MFC中执行菜单命令时打开一个非模态对话框,输入坐标值,点击OK后在视图区显示固定文本。首先,我需要回忆一下MFC的基本结构和相关类的功能。 用户提到的是非模态对话框,这和模态对话框不同,非模态对话框打开后不会阻塞主窗口的消息循环。所以需要确保对话框的创建方式正确,防止重复创建导致的问题。常,模态对话框用DoModal,而非模态的则需要用Create,并且要管理对话框的生命周期,避免提前销毁。 接下来,处理菜单命令。在MFC中,菜单命令过消息映射处理,应该在框架类或者视图类中添加ON_COMMAND和对应的处理函数。用户可能是在视图类中处理,因为需要在视图上绘制文本。所以需要确认处理函数的位置是否正确。 然后是对话框的设计。需要创建一个对话框资源,添加坐标输入的编辑框控件,以及OK按钮。对话框类应该继承自CDialogEx,并为编辑框添加成员变量,比如m_x和m_y,可能DDX机制获取输入值。非模态对话框在点击OK后,应该将坐标传递给视图类,以便进行绘制。这里需要注意,非模态对话框在关闭时不能调用CDialog::OnOK(),因为这会导致窗口被销毁,而是应该调用DestroyWindow()。同时,可能需要重写PostNcDestroy函数来删除对话框对象自身,防止内存泄漏。 视图类接收到坐标后,需要保存这些坐标,并在OnDraw函数中调用相关绘图代码,比如使用pDC->TextOut(x, y, "文本")。因为使用非模态对话框,当对话框仍然存在时,用户可能多次点击OK更新坐标,所以视图类需要能够更新并重绘。可能需要在视图类中添加成员变量存储坐标,并在对话框点击OK时触发视图的刷新,比如调用Invalidate()或InvalidateRect()。 另外,需要注意对话框和视图之间的。因为对话框是非模态的,不能直接访问视图类的成员,可以过获取文档或视图的指针来传递数据。例如,在对话框类中添加一个指向视图类的指针,当点击OK时,调用视图类的方法设置坐标并刷新。 总结步骤的话,首先创建对话框资源,然后创建对话框类,处理非模态的创建和销毁。在菜单命令处理函数中创建并显示对话框。在对话框中点击OK时,将坐标传递给视图,视图保存坐标并重绘。确保绘图代码在OnDraw中正确使用存储的坐标值。 可能还需要考虑数据验证,确保用户输入的是有效的数值。此外,处理对话框关闭的情况,比如用户点击关闭按钮而不是OK,这时候不应该更新坐标。需要确保只在点击OK时处理数据。 用户可能遇到的问题包括对话框重复创建、坐标未正确传递、视图未刷新等。需要检查对话框是否已经存在,避免多次创建;确保过指针或消息正确传递数据;调用Invalidate()使视图重绘。 最后,确保所有代码符合MFC的规范,正确使用消息映射、资源ID和类成员变量。可能还需要调试,确认每一步的数据是否正确传递和存储。</think>好的,我将按照MFC框架的执行流程,分步骤为您解释如何实现该功能: 1. **创建对话框资源** - 在资源视图中新建对话框模板`IDD_INPUT_DIALOG` - 添加两个编辑框: - X坐标:IDC_EDIT_X - Y坐标:IDC_EDIT_Y - 添加"OK"按钮(IDOK)和"Cancel"按钮(IDCANCEL) 2. **创建对话框类** ```cpp // InputDialog.h class CInputDialog : public CDialogEx { DECLARE_DYNAMIC(CInputDialog) public: CInputDialog(CWnd* pParent = nullptr); virtual ~CInputDialog(); int m_nX; // X坐标值 int m_nY; // Y坐标值 protected: virtual void DoDataExchange(CDataExchange* pDX); DECLARE_MESSAGE_MAP() }; ``` 3. **视图类处理菜单命令** ```cpp // YourView.h class CYourView : public CView { CInputDialog* m_pInputDlg; // 对话框指针 CPoint m_ptTextPos; // 存储文本位置 CString m_strDisplayText; // 显示文本 }; ``` 4. **实现非模态对话框创建** ```cpp // YourView.cpp void CYourView::OnMenuInputCoordinate() { if (!m_pInputDlg) { m_pInputDlg = new CInputDialog(this); m_pInputDlg->Create(IDD_INPUT_DIALOG, this); } m_pInputDlg->ShowWindow(SW_SHOW); } ``` 5. **对话框数据交换** ```cpp void CInputDialog::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT_X, m_nX); DDX_Text(pDX, IDC_EDIT_Y, m_nY); } ``` 6. **处理OK按钮点击** ```cpp // InputDialog.cpp void CInputDialog::OnOK() { UpdateData(TRUE); // 获取输入数据 ((CYourView*)GetParent())->m_ptTextPos = CPoint(m_nX, m_nY); ((CYourView*)GetParent())->Invalidate(); // 触发重绘 ShowWindow(SW_HIDE); // 隐藏对话框而非销毁 } ``` 7. **视图绘制实现** ```cpp void CYourView::OnDraw(CDC* pDC) { pDC->TextOut(m_ptTextPos.x, m_ptTextPos.y, _T("固定文本")); } ``` 8. **内存管理** ```cpp CYourView::~CYourView() { if (m_pInputDlg) { m_pInputDlg->DestroyWindow(); delete m_pInputDlg; } } ``` 关键注意事项: 1. **非模态对话框特性**:使用`ShowWindow(SW_HIDE)`替代销毁,避免重复创建 2. **坐标转换**:如需转换设备坐标与逻辑坐标,需使用`DPtoLP`/`LPtoDP` 3. **输入验证**:可在`OnOK`中添加数据验证逻辑 4. **多实例处理**:过检查`m_pInputDlg`指针避免重复创建 扩展功能建议: - 可添加默认坐标值初始化 - 支持动态修改显示文本 - 添加坐标输入范围限制 - 实现文本样式设置功能 调试技巧: 1. 使用TRACE输出坐标值验证数据传输 2. 检查对话框父窗口指针是否正确 3. 确认视图无效化区域是否正确更新 4. 验证GDI资源是否正常释放
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值