[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 487

 
midorum:

这很简单。创建一个布尔型变量。在处理订单之前将其设置为false。一旦订单被处理,就把它改为真实。在你检查完所有的订单后,检查该变量的值--如果它仍然是假的,这意味着没有需要魔法的订单。你打开一个新的订单。

谢谢你!
 
Roman.:
试着玩一玩(根据你的需要编辑)Kim的isCloseLastPosByStop - 返回按止损关闭最后位置的标志

NumberOfPositions - 返回位置的数量, 也许其他的会适合你的问题...


谢谢你,伙计,我将继续挖掘:d
 

我决定了解ATR 指标的工作原理 同时研究其代码。我明白了它的大意,但它写得很奇怪。

这里是它的启动 功能。

int start()
  {
   int i,counted_bars=IndicatorCounted();
//----
   if(Bars<=AtrPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----
   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;
   for(i=0; i<limit; i++)
      AtrBuffer[i]=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);
//----
   return(0);
  }
//+----------------

这里是第一块混乱的地方。

//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----

如果counted_bars的值<1,做什么事情有意义呢。在我看来,这意味着指标还没有计算任何条形,我们应该直接退出函数,因为还没有任何数值......。有什么好处呢?

为什么AtrBuffer 有索引[Bars-i]?我的理解是,如果没有值,就将缓冲区 设置 0.0。但是事实证明,数值0.0只被定义在从(Bars)(AtrPeriod) 的条形图上,而从AtrPeriod第0个条形图 没有任何东西被写入缓冲区。为什么?

我不明白这个代码片段的逻辑

在下一个街区。

//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----

在行。

if(i==Bars-1) TempBuffer[i]=high-low;

条件如果i==Bars-1。看起来,从左边的图表开始的第1 条的值被考虑了...但这是非常遥远的,这个价值有什么用呢?

 

我需要一些帮助!

我怎样才能使EA在给定的缩减水平上关闭所有开仓和挂单,例如30%,然后重新启动并重新开始?

附加的文件:
 
OrderSend
(  string symbol, int cmd, double volume, double price, int slippage,
double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

你能不能告诉我,在下单功能中的数据时间到期 参数应该是什么,以便待定订单 在5分钟后如果没有成功就会自行删除?到底是不是TimeCurrent()+300

 
BeerGod:

你能不能告诉我,在下单功能中的数据时间到期 参数应该是什么,以便待定订单在5分钟后如果没有成功就会自行删除?到底是不是TimeCurrent()+300

如果我没有弄错的话,它表示的是秒。所以你是对的,5分钟将是300。试着用不含止损和利润的开盘时间 和收盘时间,打印出来,在那里你可以进行比较。
 
大家好,很想帮忙,下注0.10止损200点,我需要有多少金额才能维持200点?
 
laveosa:
大家好,很想帮忙,下注0.10止损200点,我需要有多少资金才能维持200点?
我不知道,这取决于你使用的是哪种账户,例如,普通账户或美分账户。有时0.01手的1点=1美分(x10x200=20美元),有时0.01手的1点=10美分(x10x200=200美元)。
 
paladin80:
嗯,这取决于你使用的是哪种账户,比如说普通账户或美分账户。有时0.01手的1点=1美分(x10x200=20美元),有时0.01手的1点=10美分(x10x200=200美元)。
我有1个点--1美分。所以我需要20美元才能止损到200点?
 

我重复一下这个问题,也许因为有后续问题,所以没有人注意到。

我决定了解ATR 指标的工作原理 同时研究其代码。我理解其中的精髓,但它写得很奇怪。

这里是它的启动 功能。

int start()
  {
   int i,counted_bars=IndicatorCounted();
//----
   if(Bars<=AtrPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----
   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;
   for(i=0; i<limit; i++)
      AtrBuffer[i]=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);
//----
   return(0);
  }
//+----------------

这里是第一块有一些混乱的地方。

//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----

如果counted_bars的值<1,做什么事情有意义呢。在我看来,这意味着指标还没有计算任何条形,我应该直接退出函数,因为还没有值......有什么好处呢?

为什么AtrBuffer 有索引[Bars-i]?我的理解是,如果没有值,就把缓冲区 设置 0.0。但是事实证明,数值0.0只被定义在从(Bars)(AtrPeriod) 的条形图上,而从AtrPeriod第0个条形图 没有任何东西被写入缓冲区。为什么?

我不明白这个代码片段的逻辑

在下一个街区。

//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----

在行。

if(i==Bars-1) TempBuffer[i]=high-low;

条件如果i==Bars-1。看起来,从左边的图表开始第1 考虑了...但这是非常遥远的,这个价值有什么用呢?