Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 229

 
splxgf:
Não vejo problemas nesta área, exceto para repor a BuyCount a zero.


Eu estou zerando logo acima. Não é indicado na seção copiada.

Mas os EAs de todos os pares empilham suas ordens lá e trabalham sua lógica a partir da quantidade.

Não consigo entender por que minhas variáveis ***Count funcionam como globais.

A lógica está funcionando no Testador de Estratégia.

Ele está trabalhando corretamente na demonstração. Dois pares e mais e todos juntos executam a mesma lógica.

 
Sepulca:


Os parênteses estão faltando....


parênteses parecem estar OK.

A seção completa se parece com isto:

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:


Tudo parece estar bem com parênteses.

A seção completa se parece com isto:

se(OrderType()==OP_BUY) você o tem trabalhando para pedidos em qualquer personagem e para qualquer mágico! Eu lhe disse que não há parênteses suficientes!

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



 

Obrigado

Vamos consertar isso

 
Boa tarde. Você pode aconselhar alguém que entenda de estatísticas, estou confuso. Preciso converter as séries de preços atuais para uma escala logarítmica. Para isso preciso fazer apenas este cálculo e é tudo?
for(int i=0; i<Bars-1; i++)
      {
      NewPrice[i]=MathLog(Close[i]);
      }
A razão da pergunta é que eu leio em todos os lugares - olhe o gráfico Dow Jones para toda a história e veja como a visão na escala logarítmica difere da absoluta. E comigo eles são visualmente quase os mesmos, ou seja, há diferenças, é claro, mas não tanto quanto nos exemplos.
 
Desead:
Boa tarde. Por favor, avise quem entende de estatísticas porque estou confuso. Preciso converter as séries de preços atuais para a escala logarítmica. Preciso fazer este cálculo apenas e todos ? A razão da pergunta é que eu leio em todos os lugares - olhe o gráfico Dow Jones para toda a história e veja como a visão na escala logarítmica difere da absoluta. E comigo eles são visualmente quase os mesmos, ou seja, há diferenças, é claro, mas não tanto quanto nos exemplos.


do manual - MathLog é o logaritmo natural- mas você parece precisar do decimais????

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


do manual - o MathLog é o logaritmo natural - mas você precisa do decimal????


Decimal não ajuda. Isso não mudará a visão.
 

Por favor, ajude-me a encontrar um código (acho que não sou o primeiro a perguntar este problema), ou um algoritmo para calcular os seguintes parâmetros:

O problema é o seguinte: no Expert Advisor é necessário calcular o nível de lucro (tanto em ordens abertas como pendentes, que serão abertas mais tarde) a um certo nível de preço (por exemplo, em níveis de suporte, resistência), tanto a um certo símbolo, como para todas as posições abertas (para taxas cruzadas, o lucro é planejado para ser calculado a preços atuais).

Eu enfrentei os seguintes problemas:

Como se viu, o tamanho do lote é diferente para diferentes corretoras (por exemplo, o Instaforex tem 10 000 unidades de moeda base, não 100 000 como é considerado). Daí a pergunta: como saber o tamanho do lote em unidades monetárias?

Por esta razão, não consigo encontrar nenhuma fórmula clara para calcular o valor de um pip (e lucrar de acordo) e para converter o lucro da moeda base (para taxas cruzadas) para a moeda de depósito.

Eu adoraria ler um artigo sobre cálculo de lucro e sua previsão (envie-me um link), porque sinto que tenho falta de conhecimento sobre o assunto (minha cabeça está uma bagunça .... valor do pip... taxas cruzadas... onde multiplicar pelo valor de uma tubulação e onde dividir. brrrrrr... horrível)

 
não importa qual deles. O logaritmo traduz valores absolutos em valores relativos, e não importa qual seja sua base, como eu o entendo. O principal é entender como fazê-lo corretamente para ver a variação percentual do preço no indicador.
 

Hoje, ao utilizar o ventilador Fibonacci Fan, o terminal 4 fechou-se sozinho.

Nenhum erro, nenhum desligamento, apenas era o terminal - apenas desapareceu no segundo seguinte.

Pergunta, como posso descobrir a causa deste milagre? Os erros críticos estão registrados em algum lugar????