// Пример хранения/обмена данными через Ресурсы внутри Терминала#include <fxsaber\TradeTransactions\ResourceData.mqh> //https://www.mql5.com/ru/code/22166voidOnStart()
{
const RESOURCEDATA<int> ResourceINT("::int"); // const - как доказательство, что ничего не пишется в объект классаint ArrayINT[] = {1, 2, 3};
int Num = 5;
ResourceINT = ArrayINT; // Ресурс хранит массив.
ResourceINT += Num; // Добавили в ресурс еще значение.
ResourceINT += ArrayINT; // Добавили массив.int ArrayINT2[];
ResourceINT.Get(ArrayINT2); // Считали данные из ресурса.ArrayPrint(ArrayINT2); // Вывели: 1 2 3 5 1 2 3
ResourceINT.Free(); // Удалили данные из ресурсаPrint(ResourceINT.Get(ArrayINT2)); // Убедились, что данных нет:0const RESOURCEDATA<MqlTick> ResourceTicks("::Ticks"); // const - как доказательство, что ничего не пишется в объект классаMqlTick Tick;
if (SymbolInfoTick(_Symbol, Tick))
for (int i = 0; i < 3; i++)
ResourceTicks += Tick; // Добавили в ресурс тикиMqlTick Ticks[];
ResourceTicks.Get(Ticks); // Считали данные из ресурса.ArrayPrint(Ticks); // Вывели.// Это полное имя ресурса для обращения из другой программыconststring NameOut = StringSubstr(MQLInfoString(MQL_PROGRAM_PATH), StringLen(TerminalInfoString(TERMINAL_PATH)) + 5) + "::Ticks";
Print(NameOut); // Вывели полное имя ресурса。const RESOURCEDATA<MqlTick> Resource(NameOut); // Ресурс для доступа к данным (read-only) из другой программыMqlTick TicksOut[];
Resource.Get(TicksOut); // Считали данные из ресурса.ArrayPrint(TicksOut); // Вывели.
Resource.Free(); // Не получится повлиять на данные read-only-ресурса。Print(_LastError); // ERR_INVALID_PARAMETER - Ошибочный параметр при вызове системной функции.
}
哇看来这个问题不用写库也能解决--只需重命名导入的函数...今天太晚了,明天再试吧
是啊 我来得太早了 Yeah.我来得太早了。除了 double 之外,数组的 GetValue 返回值与我想要的完全不同...唉,没有 MSVC 可不行啊...我已经很久没用过跳棋了...
高手!
我不明白为什么 MQL 需要指针?如果你想用指针做什么,用 C++ 就可以了。
将指针传递到另一种数据类型和另一种类型的数组是没有问题的!例如,这里有一个声明:void setvar(int& var[]); 用于传递指向整数数组的指针(猜猜对于其他类型需要修改什么?)
调用 dll 函数的开销并没有消失(第 646 版),例如,一个空的 mql 函数比一个空的 dll 函数运行得更快,但如果你至少添加了一个从数组中选择的操作,如 s[i],那么 c++ 将在这里获胜,尽管如此,调用的次数应尽量减少。
最大的性能缺陷是在处理全局变量 时--它们非常慢!!!!!如果我们制作了一个 dll,在其中存储全局变量会容易得多。对于一个 metatrader 中的所有 Expert Advisors 和指标副本,都链接了一个 dll 副本,因此其所有全局变量对于 metatrader 的所有窗口都是全局的(这一事实迫使一个窗口的个人数据要么存储在类的实例中,要么存储在数组中,通过窗口标识符进行访问)。
如何修改这段代码,使其能够交换具有结构类型元素的数组,而不仅仅是 double?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки:贸易交易
fxsaber, 2018.09.20 16:23
感谢您的帮助,但
- 我不明白这段代码。结构体在哪里?
- 我需要 MQL4 解决方案