初学者的问题 MQL4 MT4 MetaTrader 4 - 页 31 1...242526272829303132333435363738...260 新评论 Andrei Sokolov 2016.12.11 20:11 #301 另外,请告知如何将这个删除功能写进这个条件。 Renat Akhtyamov 2016.12.11 20:12 #302 spoiltboy: 另外,请告诉我如何在这个条件下写这个删除函数。您必须首先定义要删除的待处理订单的票据如果票据为空或未定义 - 那么就不要删除它 Renat Akhtyamov 2016.12.11 20:23 #303 spoiltboy: 这是针对不同的订单。通过一个条件去除一个,无条件去除另一个的功能。问题是,为什么在我的案例中,删除函数在没有条件的情况下能成功工作,但如果我把它放在一个条件中,当条件发生时就会产生一个错误。 条件必须得到纠正,没有条件就不能做,日志会占用整个硬盘的。 Andrei Sokolov 2016.12.12 07:44 #304 Renat Akhtyamov:你必须首先定义要删除的 ticketD 和 ticketUP如果票据为空或未定义,则不删除如此定义,一个是 ticketD,另一个 是ticketUP 。 还是我混淆了什么? Renat Akhtyamov 2016.12.12 07:51 #305 spoiltboy:如此定义,一个是 ticketD,另一个 是ticketUP 。 还是我混淆了什么?如果ticketUP已经被删除,如何定义它 ?你已经删除了,更新ticketUP到你需要的状态,在这个状态下,删除ticketUP的条件不会起作用,这个条件也必须加到代码中去 Andrei Sokolov 2016.12.12 08:43 #306 Renat Akhtyamov:如果TicketUP已经被删除,如何定义它 ?你已经删除了,更新ticketUP到你需要的状态,在这个状态下,删除票据的条件将不起作用,这个条件也必须被添加到代码中。因此,带有ticketD、另一个ticketUP 的订单首先被创建(根据缺席条件),之后它们已经被删除。if(BuyLimitCount()==0&& BuyCount()==0){slB=NormalizeDouble(minpr1-pointsl*Point,5);tpB=NormalizeDouble(minpr1+pointtp*Point,5);int ticketUP=OrderSend(Symbol() 。OP_BUYLIMIT, lotB, minpr1,3, slB, tpB,"", MagicB,0, Red);if(ticketUP==-1)Print("ERROR OP_BUY"); elsePrint("OP_BUY OK"); } if(SellLimitCount()==0&& SellCount() ==0){slS=NormalizeDouble(maxpr1+pointsl*Point,5);tpS=NormalizeDouble(maxpr1-pointtp*Point,5);int ticketD=OrderSend(Symbol()。OP_SELLLIMIT, lotS, maxpr1,3, slS, tpS,"", MagicS,0, Blue);if(ticketD==-1)Print("ERROR OP_SELL"); elsePrint("OP_SELL OK"); }if(x!=maxpr1){x=maxpr1;OrderDelete(ticketD); }OrderDelete(ticketUP)。如果我感到困惑,是什么? Questions from Beginners MQL4 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 Any questions from newcomers Renat Akhtyamov 2016.12.12 08:47 #307 spoiltboy:因此,带有ticketD 的订单,另一个ticketUP 首先被创建(根据缺席条件),然后它们被删除。如果(BuyLimitCount()==0&& BuyCount()==0){slB=NormalizeDouble(minpr1-pointsl*Point,5)。tpB=NormalizeDouble(minpr1+pointsl*Point,5)。int ticketUP=OrderSend(Symbol(),OP_BUYLIMIT, lotB, minpr1,3, slB, tpB," ", MagicB,0, Red)。如果(ticketUP==-1)Print("ERROR OP_BUY"); elsePrint("OP_BUY OK");}如果(SellLimitCount()==0&& SellCount() ==0){slS=NormalizeDouble(maxpr1+pointsl*Point,5)。tpS=NormalizeDouble(maxpr1+pointsl*Point,5)。int ticketD=OrderSend(Symbol(),OP_SELLLIMIT, lotS, maxpr1,3, slS, tpS,"", MagicS,0, Blue)。如果(ticketD==-1)Print("ERROR OP_SELL"); elsePrint("OP_SELL OK");}如果(x!=maxpr1){x=maxpr1;OrderDelete(ticketD);}。OrderDelete(ticketUP)。如果我混淆了什么?你又有了一个没有条件的命令。OrderDelete(ticketUP)。你为什么不改变代码?至少花点时间 "思考 "一下,整理一下+看看你写了什么,给了什么建议。顺便说一下,这里有自由职业者 ,如果你不能... Andrei Sokolov 2016.12.12 09:08 #308 Renat Akhtyamov:所以你又有了一个没有条件的命令。OrderDelete(ticketUP)。你为什么不改变代码?至少花点时间 "思考 "一下,弄清楚+读一下别人给你写的东西,给你的建议。顺便说一下,这里有自由职业者 ,如果不成功的话......它是没有条件的--因为清除就是这样发生的,而有条件的--没有。于是写道:"我不能。你可以这样写。OrderDelete(ticketD)。OrderDelete(ticketUP)。然后每一个tick都会删除在每一个tick上已经创建的订单(根据缺席条件)。而如果我们写的时候有条件。如果(x!=maxpr1){x=maxpr1; OrderDelete(ticketD);}。如果(z!=minpr1){z=minpr1;OrderDelete(ticketUP);}。然后当条件发生时,它就会写下一个删除错误。我如何在这个条件下写出删除指定的订单? Renat Akhtyamov 2016.12.12 09:11 #309 spoiltboy:它是没有条件的--因为切除就是这样发生的,但有条件就没有了。我这样写是为了指出我不能做什么。如果你这样写的话。OrderDelete(ticketD)。OrderDelete(ticketUP)。然后每一个tick都会删除在每一个tick上已经创建的订单(根据缺席条件)。而如果我们写的时候有条件。如果(x!=maxpr1){x=maxpr1; OrderDelete(ticketD);}。如果(z!=minpr1){z=minpr1;OrderDelete(ticketUP);}。然后当条件发生时,它就会写下一个删除错误。我们应该如何编写删除指定订单的条件?你不能取消删除订单的条件!开票时应将ticketUP和ticketD写入全局变量 中。GlobalVariableSet("ticketUP",ticketUP)。GlobalVariableSet("ticketD",ticketD)。并在删除待处理票据前从那里读取ticketUP=GlobalVariableGet("ticketUP")ticketD=GlobalVariableGet("ticketD")顺便说一下,看看那里(全局)--你有什么,票据上写的是什么我想,在那之后,一切都会按部就班地进行。 extream 2016.12.12 10:59 #310 你好!谁能帮助解决这个问题,我正在为一个动态数组 写一个蝰蛇,下面是这个类的代码。class CArray{ private: template <typename T> T _array[]; int _index; int _err; int _err_sys;public: CArray(){_index = -1; _err = 0; _err_sys = 0;} ~CArray(){} // template <typename T> T operator[](int i){ if((_index == -1) || (i < 0) || (i > _index)) {_err_sys = -1;} return (_array[i]); } T at(int i){ if((_index == -1) || (i < 0) || (i > _index)) {_err_sys = -1;} return (_array[i]); } void push_back(T value){ _array[++_index] = value; }};程序代码的一部分。#property copyright "Copyright 2016, MetaQuotes Software Corp."#property link "https://www.mql5.com"#property version "1.1"#property strict#include "Array.mqh"//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+ CArray *array;int OnInit() { int b = 1; array = new CArray(); array.push_back(b); int a = array.at(0); //--- return(INIT_SUCCEEDED); }...尝试在真实数据上运行专家顾问后,出现了以下错误:内部错误#-1005我做错了什么?提前感谢! Questions from Beginners MQL4 初学者的问题 MQL5 MT5 MetaTrader Plese help me 1...242526272829303132333435363738...260 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
另外,请告诉我如何在这个条件下写这个删除函数。
您必须首先定义要删除的待处理订单的票据
如果票据为空或未定义 - 那么就不要删除它
这是针对不同的订单。通过一个条件去除一个,无条件去除另一个的功能。
问题是,为什么在我的案例中,删除函数在没有条件的情况下能成功工作,但如果我把它放在一个条件中,当条件发生时就会产生一个错误。
你必须首先定义要删除的 ticketD 和 ticketUP
如果票据为空或未定义,则不删除
如此定义,一个是 ticketD,另一个 是ticketUP 。
还是我混淆了什么?
如此定义,一个是 ticketD,另一个 是ticketUP 。
还是我混淆了什么?
如果ticketUP已经被删除,如何定义它 ?
你已经删除了,更新ticketUP到你需要的状态,在这个状态下,删除ticketUP的条件不会起作用,这个条件也必须加到代码中去
如果TicketUP已经被删除,如何定义它 ?
你已经删除了,更新ticketUP到你需要的状态,在这个状态下,删除票据的条件将不起作用,这个条件也必须被添加到代码中。
因此,带有ticketD、另一个ticketUP 的订单首先被创建(根据缺席条件),之后它们已经被删除。
if(BuyLimitCount()==0&& BuyCount()==0){slB=NormalizeDouble(minpr1-pointsl*Point,5);
tpB=NormalizeDouble(minpr1+pointtp*Point,5);
int ticketUP=OrderSend(Symbol() 。OP_BUYLIMIT, lotB, minpr1,3, slB, tpB,"", MagicB,0, Red);
if(ticketUP==-1)Print("ERROR OP_BUY"); elsePrint("OP_BUY OK"); }
if(SellLimitCount()==0&& SellCount() ==0){
slS=NormalizeDouble(maxpr1+pointsl*Point,5);
tpS=NormalizeDouble(maxpr1-pointtp*Point,5);
int ticketD=OrderSend(Symbol()。OP_SELLLIMIT, lotS, maxpr1,3, slS, tpS,"", MagicS,0, Blue);
if(ticketD==-1)Print("ERROR OP_SELL"); elsePrint("OP_SELL OK"); }
if(x!=maxpr1){x=maxpr1;OrderDelete(ticketD); }
OrderDelete(ticketUP)。
如果我感到困惑,是什么?
因此,带有ticketD 的订单,另一个ticketUP 首先被创建(根据缺席条件),然后它们被删除。
如果(BuyLimitCount()==0&& BuyCount()==0){slB=NormalizeDouble(minpr1-pointsl*Point,5)。
tpB=NormalizeDouble(minpr1+pointsl*Point,5)。
int ticketUP=OrderSend(Symbol(),OP_BUYLIMIT, lotB, minpr1,3, slB, tpB," ", MagicB,0, Red)。
如果(ticketUP==-1)Print("ERROR OP_BUY"); elsePrint("OP_BUY OK");}
如果(SellLimitCount()==0&& SellCount() ==0){
slS=NormalizeDouble(maxpr1+pointsl*Point,5)。
tpS=NormalizeDouble(maxpr1+pointsl*Point,5)。
int ticketD=OrderSend(Symbol(),OP_SELLLIMIT, lotS, maxpr1,3, slS, tpS,"", MagicS,0, Blue)。
如果(ticketD==-1)Print("ERROR OP_SELL"); elsePrint("OP_SELL OK");}
如果(x!=maxpr1){x=maxpr1;OrderDelete(ticketD);}。
OrderDelete(ticketUP)。
如果我混淆了什么?
你又有了一个没有条件的命令。
OrderDelete(ticketUP)。
你为什么不改变代码?
至少花点时间 "思考 "一下,整理一下+看看你写了什么,给了什么建议。
顺便说一下,这里有自由职业者 ,如果你不能...
所以你又有了一个没有条件的命令。
OrderDelete(ticketUP)。
你为什么不改变代码?
至少花点时间 "思考 "一下,弄清楚+读一下别人给你写的东西,给你的建议。
顺便说一下,这里有自由职业者 ,如果不成功的话......
它是没有条件的--因为清除就是这样发生的,而有条件的--没有。于是写道:"我不能。你可以这样写。
OrderDelete(ticketD)。
OrderDelete(ticketUP)。
然后每一个tick都会删除在每一个tick上已经创建的订单(根据缺席条件)。而如果我们写的时候有条件。
如果(x!=maxpr1){x=maxpr1; OrderDelete(ticketD);}。
如果(z!=minpr1){z=minpr1;OrderDelete(ticketUP);}。
然后当条件发生时,它就会写下一个删除错误。
我如何在这个条件下写出删除指定的订单?
它是没有条件的--因为切除就是这样发生的,但有条件就没有了。我这样写是为了指出我不能做什么。如果你这样写的话。
OrderDelete(ticketD)。
OrderDelete(ticketUP)。
然后每一个tick都会删除在每一个tick上已经创建的订单(根据缺席条件)。而如果我们写的时候有条件。
如果(x!=maxpr1){x=maxpr1; OrderDelete(ticketD);}。
如果(z!=minpr1){z=minpr1;OrderDelete(ticketUP);}。
然后当条件发生时,它就会写下一个删除错误。
我们应该如何编写删除指定订单的条件?
你不能取消删除订单的条件!
开票时应将ticketUP和ticketD写入全局变量 中。
GlobalVariableSet("ticketUP",ticketUP)。
GlobalVariableSet("ticketD",ticketD)。
并在删除待处理票据前从那里读取
ticketUP=GlobalVariableGet("ticketUP")
ticketD=GlobalVariableGet("ticketD")
顺便说一下,看看那里(全局)--你有什么,票据上写的是什么
我想,在那之后,一切都会按部就班地进行。
{
private:
template <typename T>
T _array[];
int _index;
int _err;
int _err_sys;
public:
CArray(){_index = -1; _err = 0; _err_sys = 0;}
~CArray(){}
// template <typename T>
T operator[](int i){
if((_index == -1) || (i < 0) || (i > _index)) {_err_sys = -1;}
return (_array[i]);
}
T at(int i){
if((_index == -1) || (i < 0) || (i > _index)) {_err_sys = -1;}
return (_array[i]);
}
void push_back(T value){
_array[++_index] = value;
}
};
程序代码的一部分。
#property link "https://www.mql5.com"
#property version "1.1"
#property strict
#include "Array.mqh"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
CArray *array;
int OnInit()
{
int b = 1;
array = new CArray();
array.push_back(b);
int a = array.at(0);
//---
return(INIT_SUCCEEDED);
}
...
尝试在真实数据上运行专家顾问后,出现了以下错误:内部错误#-1005
我做错了什么?提前感谢!