[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 741

 

我把它放在专家的办公室里。

bool b=0,s=0, //соответственно бай или селл  
bs=0,// если закрытие по стоплоссу ордера бай
ss=0,// если закрытие по стоплоссу ордера sell
bt=0,
st=0;//      то же по ТП
double bl=0,sl=0; // лоты соответсвенно для бай и селл


for(int cnt=OrdersHistoryTotal();cnt>0;cnt--)
     {
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
{if(OrderMagicNumber()== mag &&
OrderSymbol()==Symbol()) 
{ if (OrderType() == OP_BUY )  {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1; if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*10; break;}
if (OrderType() == OP_SELL)  {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1; if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*10; break;}
            }
         }
      }


}//end

if(bs==1||bl==1)
{   
    NewOrder1(OP_BUYLIMIT,Lot);
    
    Today=TimeDay(TimeCurrent());}
    

int NewOrder1(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR=0; //Цена
double LT=0; //Лот
while(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUYLIMIT)
   {PR=Ask-Point*h;
    if(TakeProfit>0) TP=PR+TakeProfit*Point;
    if(StopLoss>0) SL=PR-StopLoss*Point;
    if(Lot>0) LT=3*Lot;}
int tic1=OrderSend(Symbol(),Cmd,LT,PR,3,SL,TP,0,mag,0,CLR_NONE);

if(tic1<0) Print(GetLastError());

return(0);}





 
artmedia70:
布尔变量的初始值不是假的,一般来说,在进入循环之前,将它们设置为零(假)--当你退出循环时,它们将拥有在循环中分配给它们的值(真比1好),它们将继续拥有这些值,直到下一次进入循环。如果一个订单的开启严格取决于这些变量的值,那么,在订单开启后,检查市场上是否存在这个头寸,如果存在,将变量设置为零(假)。

而在代码中,你可以勾勒出

 
artmedia70:
将当前柱状图(最好是第一个柱状图)上的ADX值与前一个柱状图(最好是第二个柱状图)上的ADX值进行比较。

如果是直接的,就是这样的。

但这不是很好。最好是将ADX值分配给双变量,并与变量一起工作。






非常感谢您的帮助:)
 

朋友们!我想不出如何摆脱趋势线反转时出现的不必要的信号。趋势线(在例子中是下降的)是从最大的极值到最小的极值绘制的,在指定的条形间隔内发现。问题是,一旦出现一个新的最低极值,趋势线就会跳到那个极值(它是这样设计的)。

但是,也是在第一个条形图上,趋势线与趋势线的数值建立了水平,指标线对其的穿越给出了信号。如果第一个柱状图上的指标线低于这个水平,而第二个柱状图上的指标线高于这个水平,那么我们就有一个自上而下的交叉点。

所以...当趋势线跳到一个新的最低极值时,就会出现这样一种情况:第二个柱状图上的指标线在趋势线之上,并低于所绘制的水平,而第一个柱状图上的指标线却在下面,也就是说,一个不必要的卖出信号(在这种情况下)。


在图片中,你可以看到趋势线是如何跳到一个新的极值的(位置用向下的箭头标记),以及新的趋势线在第一个柱子上的价格水平(水平的红色短线)。
变得比第二个柱状图上的AD线低,而第一个柱状图上的AD线低于价格水平......
因此,通过将趋势线移动到一个较低的极值,模拟了一个不需要的信号...
我用一条垂直的浅蓝色线来标记它...

因此,问题是--如何避免这种情况?我想了很久都没有想出办法......。
有什么想法吗?谢谢...:)

 
profitinvesting:
非常感谢您的帮助:)
不客气 :)
 
ToLik_SRGV:

在启动函数的最开始,添加一个对该函数的调用行。

顾问将被激活1次,只在一个新的酒吧。

亲爱的阿纳托利非常感谢你的这一代码。另一个问题,如何让它一直工作,但在一个柱子上只能做1笔交易?
 
artmedia70:
下单后检查是否在市场上,如果是,则重置变量(假)。

告诉我如何在我的订单中实现这一点?

我应该在我的订单中插入什么函数来重置它们为零?

 
FoxUA:

告诉我如何在我的订单中实现这一点?

我应该在我的订单中插入什么函数来重置它为零?


在检查订单是否在市场上后,简单地给变量赋值。例如Variable1 = false;
那些你在循环中设置为 "真 "的变量,也就是下单的标准,在下单后必须再次设置为 "假",否则订单将继续被分批下达。所以,你应该把这些变量赋值为"false"
 
artmedia70:
在检查市场上是否有订单后,只需给变量赋值。例如,Variable1 = false
你在循环中设置为 "真 "的那些变量,是下订单的标准,在下订单后必须再次设置为 "假"。所以,你应该把这些变量赋值为"false"

我必须说,我已经熬了两天,试图从你说的内容中找出该放置的东西,所以我什么都没明白。 你能不能把这些值放到我发布的代码中,或者直接写一个函数,告诉我到底该放在哪里--这是我难题的最后一部分,我搞不清楚该放在哪里,怎么放。

 
FoxUA:

我必须说,我已经两天没有睡觉了,并在专家顾问中挣扎,因为我不明白你说的是什么,在哪里放,你能不能把这些值放在我发布的代码中,或者直接写出函数,并说清楚放在哪里,这是我的最后一块拼图,我不能集中在哪里和如何放。

我不想搞乱你的代码(邪恶,但诚实:))。准确地告诉我你想得到什么结果,我会给你写出你需要的函数。老实说--这对我来说会更容易。我应该整理出自己的代码...:)

...或者去睡觉,去睡觉,第二天你所有的谜题都会出现在一起......:)这就是我在不明白的时候所做的事情...顺便说一下,我要去睡觉了--现在是早上五点半......

原因: