[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 375

 
artmedia70:
时间[number_bar]。

谢谢你!我会试着开药的 :)
 
nemo811:
你是否考虑过你的订单开盘的价格(卖价或买价)?

我告诉你以相同的价格开单,但却晚开了1-2个点。
 
myrzila:

我告诉你,我规定一个订单以相同的价格开盘,但它晚开1-2点。

是的,一些经纪公司可能使用带有滑点的头寸。我自己也不相信,直到我亲眼看到它。当时我和我的朋友在一家经纪公司做黄牛。这笔交易在市场上持续了不超过一分钟,并立即被关闭。由于绝大多数的交易都是在加上完成的,所以对经纪公司来说是无利可图的。这家经纪公司向我们支付了我们所赚的钱,并引入了挂单的滑点和触发止损单的滑点,从而扼杀了我们所有的交易。事情就是这样发生的。因此,联系你的经纪公司,问他们为什么不在设定的价格上开单。
 

下午好!

回到我自己想不出来的问题。我如何以编程方式确定特定时期的存款/提款?

也就是说,如果你以11月25日的交易期为例,通过这段时间的所有订单,你可以确定这段时间的存款/取款。而问题就在这里:你是如何计算的?

extern string            DayX="25.11.2011 00:00";   

if(TimeCurrent()>StrToTime(DayX)) //если текущее время старше момента начала периода
     {
      for(i=0; i<StrToTime(OrdersHistoryTotal()); i++)
       {
         if(OrderOpenTime()<StrToTime(DayX)) continue;
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderType()==6)
          {
            jjjj=+ //а вот здесь загвоздка, что-же суммировать? профит по OrderType()==6????????
          }
       }
     }
 
forexnew:

下午好!

回到我自己想不出来的问题。我如何以编程方式确定特定时期的存款/提款?

也就是说,如果你以11月25日的交易期为例,通过这段时间的所有订单,你可以确定这段时间的存款/取款。而问题就在这里:你是如何计算的?


如果OrderProfit()大于零--增加,小于零--撤回
 
Vinin:

如果OrderProfit()大于零 - 填补,小于零 - 撤回

谢谢你!即有可能确定哪些填充物和提取物是分开的?

extern string            DayX="25.11.2011 00:00";   

if(TimeCurrent()>StrToTime(DayX)) //если текущее время старше момента начала периода
     {
      for(i=0; i<StrToTime(OrdersHistoryTotal()); i++)
       {
         if(OrderOpenTime()<StrToTime(DayX)) continue;
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderType()==6 && OrderProfit()>0)
          {
            Profit1=+OrderProfit(); //доливки
          }

         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderType()==6 && OrderProfit()<0)
          {
            Profit2=+OrderProfit(); //снятия          
          }
       }
     }
 

为什么最大手数计算功能对仪器#DD返回 "0"?这并不总是发生。

double MaxmaxLots(int cmd) 
{
    double result = 0;
    double lotStep = MarketInfo(SymbolMax[nnnn], MODE_LOTSTEP);
    double v = MarketInfo(SymbolMax[nnnn], MODE_MINLOT);
    double mult = 100;
    
    while (true) {
        if (AccountFreeMarginCheck(SymbolMax[nnnn], cmd, v + lotStep * mult) > 0) { 
            v = v + lotStep * mult;
        } else {
            mult = mult / 10;
            
            if (mult < 1) {
                if (AccountFreeMarginCheck(SymbolMax[nnnn], cmd, v) > 0) {  
                    result = v;
                }
                break;
            }
        }
    }
    
    return(result);
}    
 
forexnew:

谢谢你!也就是说,有可能识别哪些补货和撤货是单独进行的!


extern string            DayX="25.11.2011 00:00";   

if(TimeCurrent()>StrToTime(DayX)) //если текущее время старше момента начала периода
     {
      for(i=0; i<StrToTime(OrdersHistoryTotal()); i++)
       {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)=false) continue;
         if(OrderOpenTime()<StrToTime(DayX)) continue;
         if(OrderType()!=6) continue;

         if(OrderProfit()>0)
          {
            Profit1=+OrderProfit(); //доливки
          }
         else 
          {
            Profit2=+OrderProfit(); //снятия          
          }
       }
     }
 
int start()

  {
  DrowDownAlert=iCustom(NULL, 0, "Equity_v7",4,0);  
   

 double a=TotalLots(0);
 double b=TotalLots(1);
  Comment (a,b);
  return(0);
  }

//----------------------- подсчёт объема позиций----------------------------//
void TotalLots(bool zet)
{
   double total=0,total1=0;
   int slippage=20;
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
      if (OrderType()==OP_BUY ) total=total+OrderLots();
      if (OrderType()==OP_SELL) total1=total1+OrderLots();
   }
 if (zet==0) return (total); else return (total1) ;  
 
}
为什么errork输出说函数返回有一个空的结果,错误是什么?
 
nikelodeon:
为什么errork输出说函数返回有一个空的结果,错误是什么?

//----------------------- подсчёт объема позиций----------------------------//
int TotalLots(bool zet)
{
   double total=0,total1=0;
   int slippage=20;
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
      if (OrderType()==OP_BUY ) total=total+OrderLots();
      if (OrderType()==OP_SELL) total1=total1+OrderLots();
   }
 if (zet==0) return (total); else return (total1) ;  
 
}
原因: