int searchPeriod=(Search_Period<1)?1:Search_Period; //字符"?"、": "是什么意思?
输入 int Delta=2; // 收容点的数量
int delta=(Delta<0)?0:Delta; // 符号"?"、": "是什么意思?
// строку int searchPeriod=(Search_Period<1)?1:Search_Period;// можно расписать так:inputint Search_Period=10; // Количество копируемых свечей ... эту строку вы видите в настройкахint searchPeriod; // Сюда будем записывать входной параметрif(Search_Period<1) searchPeriod=1; // Если во входном параметре ввели ноль или меньше нуля, то параметр будет равен единицеelse searchPeriod=Search_Period; // иначе примем входной параметр// соответственно и строку int delta=(Delta<0)?0:Delta;// можно расписать точно так же
在买入或熊市握手信号时开仓的想法,如何让它只有一个买入/卖出交易和一个挂单 交易,我在交易的每一个刻度上都有一个开仓。帮助解决这个问题。
那么,这里有另一种方法:为范围内的每个蜡烛写上火柴。在以前的版本中,只为一支蜡烛写了匹配--也就是说,没有为与这支蜡烛匹配的蜡烛写匹配。
Artem,谢谢你。我将研究这个问题。
高值可以四舍五入,例如,我们可以将1.23456的值四舍五入为1.2346。
我明白我的意思。我还在设置中添加了一个变量,你可以规定偏差,在这个偏差范围内,高值被认为是相等的。这是必要的,因为对于4位数的引号来说,往往不存在这样的问题,但对于5 位数的引号来说,搜索精确匹配的可能性是无限的。
Artem,谢谢你。我会研究的。
四舍五入的情况很明显。我还在设置中加入了一个变量,在这个变量中,我将能够规定偏差值,在这个偏差值内,高值被认为是相等的。这是有必要的,因为对于4位数的报价来说,往往没有这样的问题,但对于5位数的报价来说,寻找完全匹配的报价是无止境的。
不客气。我在第二个版本中犯了一个不准确的错误。因为在第一个版本中,我们是从循环索引的下一个蜡烛开始搜索匹配的,所以主循环的传递是通过蜡烛的数量减去1来比较最外层的两个蜡烛。现在,在第二个版本中,对于每一个蜡烛图,我们在整个范围内搜索匹配,因此在行中
你应该将条数 改为
在您开立新的头寸或下新的挂单之前,请检查已设订单的数量和未结头寸的数量。
也就是说,有必要在交易条件中添加一个条件来检查订单 和头寸的数量?
if (o4>c4&&o3>c3&&l2>l1&&c2<c1&&o2>c2&&o1<c1&&c1>o2&&h1>h2||o2>c1&h2>h1&h1<o2&o1<c1&&l2>l1&&o3>c3&&o4>c4){ //first condition
如果(OrdersTotal()==0) //第二个条件
OrderSend(Symbol(), OP_BUY,Lot,o,10,l1,0);; }...................................,每笔交易都是如此?
那么哪个职能部门会计算开放职位的数量?
我想我已经解决了这个问题。
如果(Hour()>=0&Hour()<23){
if (o4>c4&&o3>c3&&l2>l1&&c2<c1&&o2>c2&&o1<c1&&c1>o2&&h1>h2||o2>c1&&h2>h1&&h1<o2&&o1<c1&&l2>l1&&o3>c3&&o4>c4){
如果(PositionsTotal()<=1)
OrderSend(Symbol(), OP_BUY,Lot,o,10,l1,0);; }//开启购买
if (o4>c4&&o3>c3&&l2>l1&&c2<c1&&o2>c2&&o1<c1&&c1>o2&&h1>h2||o2>c1&&h2>h1&&h1<o2&&o1<c1&&l2>l1&&o3>c3&&o4>c4){
如果(PositionsTotal()==1&OrderType()==0)
OrderSend(Symbol(), OP_SELLSTOP,Lot,l2,10,h2,0);{HotTag}。//推迟的卖出止损单
if (o4<c4&&o3<c3&&h2<h1&&c2>c1&&o2<c2&&o1>c1&&c1<o2&&l1<l2||o2<c1&&l2<l1&&l1>o2&&o1>c1&&h2<h1&&o3<c3&&o4<c4){
如果(PositionsTotal()<=1)
OrderSend(Symbol(),OP_SELL,Lot,o,10,h1,0);; }//打开塞尔
if (o4<c4&&o3<c3&&h2<h1&&c2>c1&&o2<c2&&o1>c1&&c1<o2&&l1<l2||o2<c1&&l2<l1&&l1>o2&&o1>c1&&h2<h1&&o3<c3&&o4<c4){
如果(PositionsTotal()==1&OrderType()==1)
OrderSend(Symbol(), OP_BUYSTOP,Lot,h2,10,l2,0);}//推迟的买入止损单
}
//+------------------------------------------------------------------+
//返回未平仓头寸总数的函数。
//|
//+------------------------------------------------------------------+
int PositionsTotal() {
int pos = 0。
for (int i=0; i<OrdersTotal(); i++){
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。
如果(OrderType() == OP_BUY || OrderType() == OP_SELL)
pos++。
}
return(pos)。
}
//+------------------------------------------------------------------+
那么,这里有另一种方法:为范围内的每个蜡烛写上火柴。在以前的版本中,只为一支蜡烛写了匹配--也就是说,没有为与这支蜡烛匹配的蜡烛写匹配。
很好。但在我看来,如果蜡烛2的高点与蜡烛7的低点重合,那么将找到两个匹配点:2<=>7,7<=>2。那么考虑到反向对,但没有额外的循环呢?
你就不能在不使用嵌套for循环的情况下,一次解决这个问题吗:)))?
咕德。然而,根据我的理解,如果蜡烛2的高点与蜡烛7的高点重合,那么将找到两个匹配:2<=>7,7<=>2。那么考虑到反向对,但没有额外的循环呢?
不使用嵌套的for循环,一次性解决这个问题,怎么样?)
:)不要试图扮演我的弱者;)当然,我认为你可以用一个循环来解决这个问题,但我懒得多想,按照自己的想法一下子就做了。
当然,这里所有成对的或更多的蜡烛都被记录在每个蜡烛的匹配数据中。这就是为什么他们相互参照。我只是在建议变体,不知道它们的用途是什么。
而且,进一步解决优化计算的任务是可能的,但我不需要它。
如果你需要的是每支蜡烛和所有匹配的数据,如果突然,突然......怎么办?只有....
所以我没有时间,也没有愿望。我已经浪费了我的时间,而不是写我自己的代码。
SZY,也许你也应该在知道所需输入参数的情况下连接Kohonen方法。
一般来说--没有时间,也没有愿望。就这样浪费了时间,而不是写我自己的代码。
太糟糕了,太糟糕了。
不客气。我在第二个版本中犯了一个不准确的错误。由于第一个版本是从循环索引的下一个蜡烛开始搜索匹配的,所以主循环是通过蜡烛的数量减去1来比较最外层的两个蜡烛。现在,在第二个版本中,对于每一个蜡烛图,我们在整个范围内搜索匹配,因此在行中
你应该把小节的数量 改为
请告诉我们这些句子的含义。
输入 int Search_Period=10; // 要复制的烛台数量
int searchPeriod=(Search_Period<1)?1:Search_Period; // "?", ": "符号是什么意思?
输入 int Delta=2; // 收容点的数量
int delta=(Delta<0)?0:Delta; // 符号"?"、": "是什么意思?
请告诉我这些句子的含义。
输入 Search_Period=10; // 要复制的烛台数量
int searchPeriod=(Search_Period<1)?1:Search_Period; //字符"?"、": "是什么意思?
输入 int Delta=2; // 收容点的数量
int delta=(Delta<0)?0:Delta; // 符号"?"、": "是什么意思?
从参考资料来看。
条件运算符 ?
三元运算符 的一般形式看起来像这样。
expression1? expression2: expression3
作为第一个操作数,"expression1 "可以是任何导致bool类型值的表达式。如果结果为 真,则执行第二个操作数 "expression2 "所指定的运算符 。
如果第一个操作数 是假的,第三个操作数 "expressionZ " 将被执行。第二个和第三个操作数,即 "expression2 "和 "expressionZ",必须返回相同类型的值,并且不能是无效类型。执行条件运算符的结果是 "表达式2 "的结果或 "表达式3 "的结果,这取决于 "表达式1 "的结果。
double true_range = (High==Low)?0:(关闭-打开)/(高-低)。
该条目等同于以下内容
double_range。
如果(High==Low)true_range=0;//如果High和Low相等。
else true_range=(Close-Open)/(High-Low);//如果High不是零 的话。