初学者的问题 MQL4 MT4 MetaTrader 4 - 页 89

 
Alexey Kozitsyn:
你不应该这样做。这是对资源的巨大消耗。而且,没有循环的快速响应时间有什么问题呢?
谢谢你。只是官方的mql4教程把它作为一个例子,这就是我感兴趣的原因。我想这可能比通常的方式更有效。
 
LRA:
勾选是指来自服务器的新数据的到来。而且在到达后必须立即进行处理。如果你用5毫秒的延迟进行循环,那么大部分刻度线将正好出现在这个延迟期间。因此,处理将被延迟0 ...5毫秒。
是的,这里面有逻辑。我只是想,start()函数本身也会在它的循环上花费时间,也许它的迭代会偷走一些零点几秒甚至更多的时间(它可能需要向服务器寻址,一次性获得大量数据),而不像纯循环。也许,这只是我的想象,因为我不了解内部机制,但这个方法被纳入mql4教程是有原因的。
 
smart_man:
谢谢你。只是官方的mql4教程给出了这样一个例子,所以我很感兴趣。我想也许这比通常的方式更有效。
是的,但该教程有些过时了。当然,有总比没有好,但同时翻翻文档,看看像start()这样的函数是否还在其中,还是很有用的。现在最好使用专家顾问的OnTick()处理程序。
 

下午好!

 
下午好,你能告诉我最方便的美元/卢布货币对的经纪人,最小点差和最小掉期等的佣金吗?
 
kanybek06:
你好,你能告诉我美元/卢布货币对的最方便的经纪人吗?

由于你刚开始工作,你会对任何人都很满意。在互联网上进行搜索,并对其进行比较。与他们沟通,问问题。你会得到一个答案。

这里我们讨论的是关于编程和Metatrader交易平台的问题。

 

如果你需要同时关闭反面订单,最好的方法是什么?

1)每个人都是单独的(手动或通过TP/SL)。

2)与OrderCloseBy成对(仅手动)?

是否会像教程中写的那样,用OrderCloseBy保存单一价差?难道区议会不禁止这样的关闭,这个价差会不会被退回?我们如何在技术上检查这个问题?

谢谢你。

 
有一个模板类用于处理数组。
#property strict
#include <ObjectVariables.mqh>
#include <Arrays\varQSort.mqh>
#include <Arrays\objQSort.mqh>

template<typename T1>
class ArrayList
{
   private:
      T1 array[];
      QuickSorts<T1> *qs;
      int size;
      int index;

   public:
      //прочие функции
      void QuickSort();//отсортировать массив
      //прочие функции
};
//+------------------------------------------------------------------+
//| Сортировка массива
template<typename T1>
void ArrayList::QuickSort()
{
   int idx = index;//сохранение положения индекса
   if(IsPointer(array[0])) // true - массив содержит указатели класса
      qs /*ошибка 2*/ = new ObjQSort<T1>();
   else
      qs /*ошибка 2*/ = new VarQSort<T1>();
   qs.Sort(array, 0, index);
   index = idx;
}

对于这个模板类,我们需要实现排序,因为数组可以存储复杂的数据类型。比如说。
ArrayList<PP*> *dde; // PP - класс

你可以为简单类型和复杂类型写不同的函数,但编译器不明白函数是按数据类型严格划分的,所以一直在说脏话。
'<' - 非法操作 使用ArrayList.mqh

所以我决定嵌入这个界面。

#property strict
template <typename T1>
interface QuickSorts
{
   void Sort(T1 &array[], int beg, int end);
};
#property strict
#include <Arrays\QuickSorts.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
template <typename T1>
class VarQSort : public /*ошибка 1*/ QuickSorts
{
private:

public:
   void Sort(T1 &array[], int beg, int end);
   VarQSort(){}
   ~VarQSort(){}
};
template <typename T1>
void VarQSort::Sort(T1 &array[], int beg,int end)
{
   //алгоритм функции
}
#property strict
#include <Arrays\QuickSorts.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
template <typename T1>
class ObjQSort : public /*ошибка 1*/ QuickSorts
{
private:

public:
   void Sort(T1 &array[], int beg, int end){}
   ObjQSort(){}
   ~ObjQSort(){}
};

该结构的所有部分都可以编译。但如果你试图宣布。
ArrayList<PP*> *dde; // PP - класс
然后,在编译文件时,出现了这些错误。

'QuickSorts' - 模板不匹配 varQSort.mqh /*错误1*/。
'=' - 类型不匹配 ArrayList.mqh /*错误 2*/。


我应该在代码中修正什么以消除这种类型不匹配?我不明白为什么会出现这种情况。

P.S.
'<' - 非法操作 使用varQSort.mqh
在这个构架中也困扰着我。我想摆脱的正是这个错误。但我理解这个错误,而我不理解那两个。
 
виталик:
你好,请帮助整理一段代码,从一个指标PivotsDaily v2.mq4中扯出来,如何转换为一个小时或半小时,只用一种方式,这样会有更清晰的变化,请帮助,提前感谢。

你已经在一个主题中写道。这就够了。没有必要聚集在别人身上。
 
你好,请你给我一些建议, 在1.5年前写了一个EA,它工作了,一切正常。这段时间一直没有使用它,现在它不能安装在图表上。谁知道可能是什么原因呢?可能是由于一些MT4的更新?