//---if(iBarShift(OrderSymbol(),Period(),OrderOpenTime())==0) {
// выбранный ордер открыт на нулевом (текущем) баре, значит ещё рано открывать следующий
}
else {
// выбранный ордер открыт не на нулевом (текущем) баре, значит можно открывать следующий
}
//+------------------------------------------------------------------+int BarOpenLastPos(string sy, int timeframe, int op, int mn) {
datetime t=0;
int i, j=-1, k=OrdersTotal()-1;
for (i=k; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS)) {
if (OrderSymbol()!=sy) continue;
if (OrderType()!=op) continue;
if (OrderMagicNumber()!=mn) continue;
if (t<OrderOpenTime()) {
t=OrderOpenTime();
j=i;
}
}
}
if (OrderSelect(j, SELECT_BY_POS)) return(iBarShift(sy,timeframe,OrderOpenTime()));
return(-1);
}
//+------------------------------------------------------------------+
如果该函数返回-1,那么就没有开放的头寸,其数据已被传递给该函数。
使用实例。
if(BarOpenLastPos(Symbol(), Period(), OP_BUY, magic)>0) {
// бар открытия последней открытой позиции Buy на текущем символе, текущем таймфрейме, // с магиком magic больше нулевого --> можно открывать следующую позицию
}
或
if(BarOpenLastPos(USDCAD, PERIOD_M15, OP_SELL, magic0)<0) {
// нет позиций Sell на USDCAD с магиком magic0 --> можно открывать позицию на USDCAD
}
还有就是MA指标。而且还有一个与之类似的HMA指标。如何将其插入到EA中?完全复制代码?或者有一个更短的变体?
学习iCustom
这个想法非常好,但你是否在这里看到过这样的程序,可以将交易转移或复制到其他终端。在没有经纪人服务的情况下,是否可以很好地做到这一点?
这样的方案?
还有就是MA指标。而且还有一个与之类似的HMA指标。如何将其插入到EA中?完全复制代码?或者有一个更短的变体?
大家好,我有一个问题,我 "丢失 "了这个指标,它是某种平滑的CCI,它可以改变两个参数,周期和一个乘数。 在原始版本中,这些参数分别是20和2。 而且,如果我记得没错,这个指标的名字由两个词组成,第二个词以英文字母 "C "开头。
但在一般情况下,当然,你可以重载构造函数,用它来代替Init(),毕竟它是同一个函数。依靠什么变体是每个人的个人问题,在品味问题上,正如我们所知,没有顾问)
而如果初始化失败,在使用方法的情况下,例如Init(),可以描述为返回一个相应类型的值,在出错的情况下返回一个适当的值。因此,调用代码将知道初始化失败,因此该对象不能被使用。当使用构造函数时,调用代码如何知道初始化失败的情况?
帮帮我吧,如何让猫头鹰不在信号开仓的同一根柱子上开仓,而是等待新的柱子 并再次检查信号,我是这么做的--逐根柱子开仓。
添加了这个
и -帮帮我吧,如何让猫头鹰不在信号开仓的同一根柱子上开仓,而是等待新的柱子并再次检查信号,我是这么做的--逐根柱子开仓。
添加了这个
и -类似这样的事情。
类似这样的事情。
谢谢你,能不能简单地解读一下这个例子的规定行? --//选定的订单在零点(当前)开仓,所以要开下一个订单还太早。
//所选择的 订单在零点(当前)栏没有打开,这意味着打开下一个栏是可以的 ......???
谢谢你,是否有可能解读一下这个例子的规定行?
//所选择的订单在零点(当前)栏没有打开,这意味着打开下一个栏是可以的 ......???
这里是返回最后一个开仓 的酒吧的函数。
如果该函数返回-1,那么就没有开放的头寸,其数据已被传递给该函数。
使用实例。
或
鉴赏家们请您帮忙......
算法test01
//+------------------------------------------------------------------+ //test //+------------------------------------------------------------------+ #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 clrGold #property indicator_color2 clrBlue #property indicator_level1 0 //--- indicator buffers double Buf0[]; double Buf1[]; double t1[]; double t2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(4); SetIndexBuffer(0,Buf0); SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(1,Buf1); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(2,t1); SetIndexBuffer(3,t2); //--- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int i,counted_bars; counted_bars=IndicatorCounted(); i=Bars-counted_bars-1; int sr=24,n; double sum,sum2; double m1,m2; while(i>=0) { sum=0; sum2=0; for(n=i; n<=i+sr-1; n++) { if(Open[i]>Open[i+1]) m1=sum=sum+Close[i]-Close[n]; if(Open[i]<Open[i+1]) m2=sum=sum+Close[i]-Close[n]; if(Open[i]>Open[i+1]) t1[i]=sum2=sum2+Close[i]-Close[n]; if(Open[i]<Open[i+1]) t2[i]=sum2=sum2+Close[i]-Close[n]; } Buf0[i]=(m1+m2)/sr; Buf1[i]=(t1[i]+t2[i])/sr; i--; } return(0); } //+------------------------------------------------------------------+为什么Buf1中的值与Buf0不同?
为什么一个数值可以使用一个变量,而另一个数值可以使用一个缓冲区(数据阵列)-->(进一步计算需要一个阵列)? 我怎样才能既使用一个阵列,又使用变量m1和m2?