任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 229

 
splxgf:
除了将BuyCount重置为零,我没有看到这方面的问题。


我在正上方调零。在复制的部分中没有说明。

但所有货币对的EA都在那里堆积订单,并从数量上找出它们的逻辑。

我不明白为什么我的*********************************的变量会作为全局变量工作。

逻辑学在策略测试器中工作正常。

它在演示中工作正常。两对和更多,而且都在一起,它们都执行相同的逻辑。

 
Sepulca:


大括号内的内容是:....


托架似乎没有问题。

全节看起来是这样的。

void FindOrders()  
{
//--------------------------Стартовые данные---------------------------------------------
//Обьемы ордеров     //Количество ордеров   //Средение цены ордеров  //Прибыль ордеров
BuyLots =0;          BuyCount = 0;          BuyAP = 0;               BuyProfit = 0;
SellLots = 0;        SellCount = 0;         SellAP = 0;              SellProfit = 0; 
SellStopLots = 0;    SellStopCount = 0;     SellStopAP = 0;          SellStopProfit = 0; 
BuyStopLots = 0;     BuyStopCount = 0;      BuyStopAP = 0;           BuyStopProfit = 0; 
SellLimitLots = 0;   SellLimitCount = 0;    SellLimitAP = 0;         SellLimitProfit = 0; 
BuyLimitLots = 0;    BuyLimitCount = 0;     BuyLimitAP = 0;          BuyLimitProfit = 0; 
LotLastBuy = 0;      LotLastSell = 0;       BuyFirst =0;             SellFirst=0;
//--------------------------Окончание блока----------------------------------------------

//--------------------------Поиск ордеров------------------------------------------------
RefreshRates();
for(int cnt = 0; cnt < OrdersTotal(); cnt ++)                  //Для всехоткрытых ордеров
 {
  OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);      // Выбираем со всего масива ордеров
  if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)//Выбирам ордера експерта
   CommonProfit += OrderProfit()+OrderSwap();              // Подсчет совокупного профита
   if(OrderType()==OP_BUY)                                              
    {
     BuyTicket = OrderTicket();                                      // Сохранение тикета
     BuyLots += OrderLots();                                  // Общий обьем Всех позиций  
     BuyAP += OrderOpenPrice()*OrderLots();          // Средневзвешаная цена всех позиций  
     BuyLow = MathMin(BuyLow,OrderOpenPrice());                             // Нижний BUY     
     BuyFirst = MathMin(BuyFirst, OrderOpenTime());          // нахождение первой позиции 
     BuyLast = MathMax(BuyLast, OrderOpenTime());        // нахождение последнего позиции      
     BuyHigh = MathMax(BuyHigh, OrderOpenPrice());                         // Верхний BUY
     BuyProfit += OrderProfit()+OrderSwap();                           // Подсчет профита
     BuyCount++;                                                    // Количество ордеров
     LotLastBuy = MathMax(LotLastBuy, OrderLots());       // Поиск наибольшего объема BUY   
    }
   if (OrderType() == OP_SELL)
    {
     SellTicket = OrderTicket();                                     // Сохранение тикета
     SellLots += OrderLots();                                           // Подсчет объема
     SellAP += OrderLots()*OrderOpenPrice();                   // Вычисление средней цены
     SellFirst = MathMin(SellFirst, OrderOpenTime());        // нахождение первой позиции 
     SellLast = MathMax(SellLast, OrderOpenTime());         // нахождение позднего ордера
     SellHigh = MathMax(SellHigh, OrderOpenPrice());                      // Верхний SELL
     SellLow = MathMin(SellLow, OrderOpenPrice());                         // Нижний SELL
     SellProfit += OrderProfit()+OrderSwap();                          // Подсчет профита
     SellCount++;                                                   // Количество ордеров
     LotLastSell = MathMax(LotLastSell, OrderLots());    // Поиск наибольшего объема SELL   
    }           
   if (OrderType() == OP_SELLSTOP)
    {
     SellStopTicket  = OrderTicket();                                // Сохранение тикета
     SellStopLots += OrderLots();                                       // Подсчет объема
     SellStopAP += OrderLots()*OrderOpenPrice();               // Вычисление средней цены
     SellStopLast = MathMax(SellStopLast,OrderOpenTime());  // нахождение позднего ордера
     SellStopHigh = MathMax(SellStopHigh,OrderOpenPrice());               // Верхний SELL
     SellStopLow = MathMin(SellStopLow,OrderOpenPrice());                  // Нижний SELL
     SellStopProfit += OrderProfit()+OrderSwap();                      // Подсчет профита
     SellStopCount++;                                               // Количество ордеров
    }             
   if (OrderType() == OP_BUYSTOP)
    {
     BuyStopTicket = OrderTicket();                                  // Сохранение тикета
     BuyStopLots += OrderLots();                                        // Подсчет объема
     BuyStopAP += OrderLots()*OrderOpenPrice();                // Вычисление средней цены
     BuyStopLast = MathMax(BuyStopLast,OrderOpenTime());     //нахождение позднего ордера
     BuyStopHigh = MathMax(BuyStopHigh,OrderOpenPrice());                  // Верхний BUY
     BuyStopLow = MathMin(BuyStopLow, OrderOpenPrice());                    // Нижний BUY
     BuyStopProfit += OrderProfit()+OrderSwap();                       // Подсчет профита
     BuyStopCount++;                                                // Количество ордеров
    }             
   if (OrderType() == OP_SELLLIMIT)
    {
     SellLimitTicket = OrderTicket();                                // Сохранение тикета
     SellLimitLots += OrderLots();                                      // Подсчет объема
     SellLimitAP += OrderLots()*OrderOpenPrice();              // Вычисление средней цены
     SellLimitLast = MathMax(SellLimitLast,OrderOpenTime()); //нахождение позднего ордера
     SellLimitHigh = MathMax(SellLimitHigh,OrderOpenPrice());             // Верхний SELL
     SellLimitLow = MathMin(SellLimitLow, OrderOpenPrice());               // Нижний SELL
     SellLimitProfit += OrderProfit()+OrderSwap();                     // Подсчет профита
     SellLimitCount++;                                              // Количество ордеров
    }             
   if (OrderType() == OP_BUYLIMIT)
    {
     BuyLimitTicket = OrderTicket();                                 // Сохранение тикета
     BuyLimitLots += OrderLots();                                       // Подсчет объема
     BuyLimitAP += OrderLots()*OrderOpenPrice();               // Вычисление средней цены
     BuyLimitLast = MathMax(SellLimitLast,OrderOpenTime());  //нахождение позднего ордера
     BuyLimitHigh = MathMax(SellLimitHigh,OrderOpenPrice());               // Верхний BUY
     BuyLimitLow = MathMin(SellLimitLow, OrderOpenPrice());                 // Нижний BUY
     BuyLimitProfit += OrderProfit()+OrderSwap();                      // Подсчет профита
     BuyLimitCount++;                                               // Количество ордеров
    }
 }
//--------------------------Окончательное вычисление средних цен-------------------------

if (BuyLots != 0)       // Если есть ордера BUY, то вычисляется их средняя цена открытия
    BuyAP /= BuyLots;      

if (SellLots != 0)     // Если есть ордера SELL, то вычисляется их средняя цена открытия
    SellAP /= SellLots;      

 if (NormalizeDouble(MathAbs(BuyLots - SellLots), 3) != 0)// Если есть совокупная позиция
   {                                          // то вычисляется ее уровень безубыточности
    APrice = (BuyAP*BuyLots - SellLots*(SellAP - Spread))/(BuyLots - SellLots);  
    if (BuyLots > SellLots)                                   // Поправка для BUY - вверх
      APrice = MathCeil(APrice/Tick)*Tick;
     else                                                     // Поправка для SELL - вниз
      APrice = MathFloor(APrice/Tick)*Tick;
    if (BuyCount == 0)       // Если присутствуют только BUY, то совокупная цена равна их
      APrice = SellAP;                                                   //  средней цене
    if (SellCount == 0)     // Если присутствуют только SELL, то совокупная цена равна их
      APrice = BuyAP;                                                    //  средней цене
   }

}
//--------------------------Окончание блока----------------------------------------------
 
Limita:


大括号的一切似乎都很好。

全节看起来是这样的。

如果(OrderType()==OP_BUY),你就可以对任何角色和任何魔术师的订单进行操作了!我告诉过你没有足够的托架!

  if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)//Выбирам ордера експерта ДЛЯ ДАННОГО IF
   CommonProfit += OrderProfit()+OrderSwap();              // Подсчет совокупного профита  СРАБАТЫВАЕТ ТОЛЬКО ЭТОТ ОПЕРАТОР
   if(OrderType()==OP_BUY)                                                              А ЭТО СРАБОТАЕТ БЕЗ УЧЁТА SYMBOL() И MAGIC



 

谢谢你

让我们来解决这个问题

 
下午好。你能给懂统计学的人建议吗,我很困惑。我需要将当前的价格 系列转换为对数刻度。为此,我只需要做这个计算,就可以了?
for(int i=0; i<Bars-1; i++)
      {
      NewPrice[i]=MathLog(Close[i]);
      }
提出这个问题的原因是,我到处读到--看看整个历史上的道琼斯图表,看看对数尺度上的观点与绝对尺度上的观点有什么不同。而对我来说,它们在视觉上几乎是一样的,也就是说,当然有差异,但不像例子中那么多。
 
Desead:
下午好。请告知谁了解统计学,因为我很困惑。我需要将当前的价格系列转换为对数刻度。我只需要做这个计算,所有的?提出这个问题的原因是,我到处读到--看看整个历史上的道琼斯图表,看看对数尺度上的观点与绝对尺度上的观点有什么不同。而对我来说,它们在视觉上几乎是一样的,也就是说,当然有差异,但不像例子中那么多。


从手册上看--MathLog 自然对数--但你似乎需要小数对数????。

for(int i=0; i<Bars-1; i++)
      {
      NewPrice[i]=MathLog(Close[i])/MathLog(10);
      }
 
ALXIMIKS:


从手册上看--MathLog 是自然对数--但你需要小数点一????


十进制没有帮助。它不会改变观点。
 

请帮助我找到一个代码(我想我不是第一个提出这个问题的人),或者一个计算以下参数的算法。

问题如下:在专家顾问中,有必要在某一价格水平(例如,在支撑位、阻力位)计算利润水平(包括未结订单和待定订单,这些订单将在以后开启),既包括某一符号,也包括所有未结头寸(对于交叉利率,计划按当前价格计算利润)。

我面临以下问题。

事实证明,不同的经纪公司的手数是不同的(例如,instaforex有10 000个基本货币单位,而不是人们认为的100 000)。因此,问题是:我如何知道以货币为单位的手数。

由于这个原因,我找不到任何明确的公式来计算一个点的价值(和相应的利润),以及将利润从基础货币(用于交叉汇率)转换为存款货币。

我很想读一篇关于利润计算及其预测的文章(给我发个链接),因为我觉得自己在这方面的知识很匮乏(我的脑子里一片混乱....点值...交叉率...在哪里乘以一个点的值,在哪里除以...brrrr...可怕的)。

 
哪一个都不重要。对数将绝对值 转化为相对值,按我的理解,它的基础是什么并不重要。主要是要了解如何正确操作,以便在指标中看到价格的百分比变化。
 

今天,在使用斐波那契扇形图时,终端4号自行关闭。

没有错误,没有挂断,只是终端 - 下一秒就消失了。

问题是,我怎样才能找出这个奇迹的原因?是否在某处记录了关键错误