//+------------------------------------------------------------------+//Function BUY_pendingbool BUY_pending(string symbol,ENUM_TIMEFRAMES period,double volume,ulong magic = 0)
{
//----------------------------------------------------------------------------////Work variablesdouble price = 0, sl = 0, tp = 0; //Prices: Open, Sell stop, Take profitint ResCopy = -1; //Result of copying the data into an arrayint Dig = 0; //Digitsdouble bar_info[1];
bool Result = true; //Returned importance//----------------------------------------------------------------------------//ResetLastError();
//Checking the signal to stopping the trading systemif(IsStopped()) return(false);
//Preparation of structuresZeroMemory(TradeRequest);
ZeroMemory(TradeResult);
ZeroMemory(CheckResult);
//Copying the data into an array
ResCopy = CopyHigh(symbol,period,0,1,bar_info);
if(ResCopy==-1)return(false);
//Calculations
Dig = (int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
price = NormalizeDouble(bar_info[0] + 500*_Point,Dig);
PS
也就是说,如果你想得到当前的条形图,你就不必要在这一行复制三个条形图到数组中。
//Это не правильноint ResCopy = CopyHigh("EURUSD",PERIOD_D1,0,3,bar_info);
//так правильноint ResCopy = CopyHigh("EURUSD",PERIOD_D1,0,1,bar_info);
//если PERIOD_D1 не меняется вот идеальный вариант
High = SymbolInfoDouble(symbol,SYMBOL_BIDHIGH);
ilunga:
P.S. 我认为在我的(和你的)代码中bar_info[1]是当前条形的最大值,这样的假设是否正确?
没有人说过关于目前的酒吧。:)
我刚刚重新做了你的例子。 如果你想要的正是当前的酒吧,你必须这样做。
1.定义数组的方向(0条--当前或第一个)。
如果像我们的例子那样,数组被移出,你可以在初始化块中做一次。如果我们将数组隐藏在一个函数中,我们就地定义它。
2.如果数组被声明为一个系列,那么当前的条形将是0,而在它之前关闭的条形将是1。
至少在我的记忆中是这样。
我可能遗漏了什么,但为了在当前栏上打开(考虑到所有添加的内容),它应该是这样的。
将数组移到函数中去!
而且没有人说过关于现在的事情。:)
我刚刚重做了你的例子。 如果你需要当前的,你必须。
1.定义阵列系列的方向(0条-当前或最新)。
如果像我们的例子那样,数组被移出,你可以在初始化块中做一次。如果我们将数组隐藏在一个函数中,我们就地定义它。
2.如果数组被声明为一个系列,那么当前的条形将是0,而在这之前关闭的条形将是1。
至少在我的记忆中是这样。
我把数组扩大到3个元素。我得到了一个目前的价格 和里面的内容不匹配。这很可能就是原因。
结果(测试是在英镑兑美元上进行的)。
我们得到的是,卖出价和买入价都大于零点的最大值,并且大于第二条杠的最大值。
如果我们在欧元兑美元上运行测试,一切都很好。
我有一种感觉,在测试 "不是我的 "对的情况下,"条形信息已被更新,但还没有打勾"。
我已经把数组扩大到3个元素。我得到了当前价格 和数组内容之间的不一致。这很可能就是原因。
结果。
我们得到的结果是,卖出价和买入价都大于零柱最大值和大于第二柱最大值。
在你的代码中,你没有考虑数组的序列性。没有人能够保证,在这种结果下,0条不会在比如说2000年。
我给出了上面的代码,它适用于阵列变体中的所有TFs。
这个代码的存在是有原因的。
如果你只需要一个日线时间框架(D1) 来识别条形的最大值,你根本不需要处理数组,只需将函数的第一部分改成这样就可以了
你在代码中没有考虑数组的序列性。没有人可以保证在这个结果0吧不会在说2000年。
我给出了上面的代码,它适用于阵列变体中的所有TFs。
这个代码的存在是有原因的
你在代码中没有考虑数组的序列性。没有人能保证在这种结果下,0条不会在说2000年。
我给出了上面的代码,它适用于阵列变体中的所有TFs。
这个代码的存在是有原因的。
好的,让数组成为动态的。
而不是xxx,我们把真和假。
其结果是。
и
数组中的顺序被改变了,结果却没有。出价大于数组的最大[0]-条
ArraySetAsSeries只适用于动态数组?
说实话,我不记得了。但是,我上面引用的那个代码的结果与我们得到的结果是一致的(欧元的开盘价为1.24516,英镑的开盘价为1.56721)。
尽管是的,在这一点上,没有ArraySetAsSeries也能正常工作。
PS
也就是说,如果你想得到当前的条形图,你就不必要在这一行复制三个条形图到数组中。
PS
也就是说,如果你需要获得当前的条形图,你绝对是徒劳的,在这一行中复制三个条形图到数组中
谢谢你!这个选项工作起来没有错误,在这种情况下是完全足够的。
然而,上面留下的问题是,竞标价怎么能大于最大值=(
ilunga:
然而,上面留下的问题是,出价如何能大于最大限度=(
首先,我们需要确定这个最大值是在哪个时期取得的。
如果数组被声明为double bar_info[n],那么其中的当前酒吧将是最大的索引。
如果n=2,这段代码将在昨天的日线上工作。
和这个带有当前栏的
也就是说,如果你复制了几个条形,你应该这样安排以获得当前条形(尽管你可能需要额外检查有多少条形 被复制到数组中)。
首先要做的是定义这个最大值的期限。
如果数组被声明为double bar_info[n],那么其中的当前酒吧将是最大的索引。