新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1269

 
Aleksei Lesnikov:

阿列克谢,谢谢你!现在很清楚,这是不可能的

这是真的,我没有确切的mql4。我正试图通过CiOpen类来 改变数据。我对Update方法感到困惑,它应该改变数组中指定位置的元素。

把它复制到你的变量/数组中,就可以用它们工作了。
 
Valeriy Yastremskiy:
复制到你的变量/数组中,并已经用它们工作。

所以我做了。

 

我非常感谢您的帮助!我对编程相当陌生。

在学习过程中,我在执行代码时遇到了困难。有一篇文章https://www.mql5.com/ru/articles/3336,我不明白是如何进行比较的。

if(!CompareTiks(n_tiks[i], m_ticks[k]))

我怀疑使用的是 "模板数据收集",有这样一个全局方法"比较"。但文章中并没有给出如何让编译器理解我应该使用"数据 模板集合" 中的 "比较" 我没有找到 任何关于"数据模板集合 " 中的全局方法的例子。

全局方法描述中的以下条目将不会改变结果

模板<typename T>
int Compare(
T x, // 第一个值
T y // 第二个值
)。

结果是,我有以下代码(或者说,代码有我)。

#ifndef MyInclude
#define MyInclude


//template<typename T>
//interface ICollection
//#include <Generic\Interfaces\ICollection.mqh>
template<typename T>
int Compare(
T x, // first value
T y //第二个值
);

class CMarketBook
{
private:
string m_symbol;
MqlTick m_ticks[];
MqlTick LastTicks[];

受到保护。

public:
void CMarketBook::CompareTicks(void);
};
//+------------------------------------------------------------------+
//|Compare two ticks colllection and find new ticks |
//+------------------------------------------------------------------+
void CMarketBook::CompareTicks(void)
{
MqlTick n_ticks[];
ulong T_begin = (TimeCurrent()-(1*20))*1000;/20sec ago
m_symbol = Symbol();
int Total = CopyTicks(m_symbol, n_ticks, COPY_TICKS_ALL, T_begin, 1000);
if (Total <1) {printf("Failed to get ticks"); return;}
if (ArraySize(m_ticks) == 0) {ArrayCopy(m_ticks, n_ticks, 0, 0,WHOLE_ARRAY) 。return;}

int k = ArraySize(m_ticks)-1;
int n_t = 0;
int Limit_comp = 20;
int Comp_success = 0;

// 试试新收到的ticks
for (int i = ArraySize(n_ticks)-1; i>=0 && k>=0; i--)
{
if (!Compare(n_ticks[i], m_ticks[k])
{
n_t = ArraySize(n_ticks) - i;
k = ArraySize(m_ticks) - 1;
Comp_success = 0;
}
else
{
Comp_success += 1;
if (Comp_success >= Limit_comp) break;
k--;
};
};
//调用收到的ticks
ArrayResize(m_ticks, Total);
ArrayCopy(m_ticks, n_ticks, 0, 0, WHOLE_ARRAY);
//计算新ticks的起始索引,并将其复制到缓冲区,以便访问
ArrayResize(LastTicks, n_t);
if (n_t > 0)
{
int index = ArraySize(n_ticks) - n_t;
ArrayCopy(LastTicks, m_ticks, 0, index, n_t);
};
};
#endif

编译时,会产生一个错误--"对象仅通过引用传递",指向n_ticks[ i]的行if (!Compare(n_ticks[i], m_ticks[k]))

Пишем скальперский стакан цен на основе графической библиотеки CGraphic
Пишем скальперский стакан цен на основе графической библиотеки CGraphic
  • www.mql5.com
Именно с этой, улучшенной и дополненной версией мы и начнем работать, чтобы постепенно превратить ее в скальперский стакан цен. Краткий обзор графической библиотеки CPanel Созданию пользовательских интерфейсов в MQL5 посвящено много статей. Среди них особенно выделяется серия Анатолия Кажарского "Графические интерфейсы", после которой сложно...
 
当使用移动互联网时,没有SendNotification...当连接到wi-fi时,它们就会出现(甚至是使用移动互联网时没有出现的)。这是不是ISP方面的问题?我认为所有的权限都在移动互联网设置中启用...
 

大家下午好。

我正在测试一个Alpari MT4专家顾问。在我做测试之前,MT建议我设置点差(要么是当前值,要么是一个特定的值)。


在Alpari,价差是浮动的。这就是为什么上述价差大小设置不适合我。

问:哪个函数在历史上显示每个历史点的价差值?
或者,考虑到订单打开或关闭时有效的点差值,我应该如何让我的EA打开和关闭订单?

感谢大家的帮助。

 
ANDREY:

大家下午好。

我正在测试一个Alpari MT4专家顾问。在测试之前,MT建议我设置点差值(当前或任何特定的报价值)。


在Alpari,价差是浮动的。这就是为什么上述价差值对我不起作用。

问:哪个函数在历史上显示每个历史刻度的价差值?
或者,我们应该如何使我们的EA打开和关闭订单,考虑在打开或关闭订单时有效的点差值?

感谢大家的帮助。

你不能在MT4中这样做,但你可以在MT5中这样做

 
Vladimir Pastushak:

在MT 4中没有,在MT 5中你可以

非常感谢您提供的宝贵信息。

我将开始学习mql5。他们说,这与mql4 非常相似。如果你能告诉我如何在mql5实现我的想法,我将非常感激。

 
ANDREY:

非常感谢您提供的宝贵信息。

我将开始学习mql5。他们说,它与mql4 非常相似。如果你能告诉我mql5 如何实现我的想法,我将非常感激。

你不需要用mt5做任何事情。
一切都自动发生,EA在策略测试器中以浮动点差 进行交易。
 
Vladislav Andruschenko:
在MT5中,你不需要发明任何东西。
一切都自动发生,EA在策略测试器中以浮动点差 进行交易。

这很好。谢谢你提供的宝贵信息。

如果你想快速从mql4切换到mql5,你最好同时阅读mql4mql5 的手册 ,并注意它们之间的差异 一切都是通过比较得知的.....
 

大家好!

我已经开始学习mql5。我首先研究了订单是如何开启的。我已经了解到,打开订单的代码写在一个单独的include文件中。我现在已经掌握了这个代码和它最后的交易变体。我很惊讶,mql4 中的开单比 mql5 中的开单要容易和简单得多。

我想问的是,我是否确定我已经有打开订单的代码的文件,我不需要写这个代码。如果这样的文件在某处可用,那么我只需要将其连接到我的EA,并设置我需要的订单参数值?如果有这样的文件,应该在哪里和如何找到它,以及它的名称是什么。

我很乐意把文件的名称告诉你。