Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 229

 
splxgf:
No veo problemas en esta área, excepto para restablecer BuyCount a cero.


Lo pongo a cero justo por encima. No se indica en la sección copiada.

Pero los EAs de todos los pares apilan sus órdenes allí y elaboran su lógica a partir de la cantidad.

No puedo entender por qué mis variables ***Count funcionan como globales.

La lógica funciona correctamente en el Probador de Estrategias.

Funciona correctamente en la demo. Dos pares y más y todos juntos ejecutan la misma lógica.

 
Sepulca:


Faltan los paréntesis....


Los soportes parecen estar bien.

La sección completa tiene este aspecto:

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:


Todo parece estar bien con los soportes.

La sección completa tiene el siguiente aspecto:

¡if(OrderType()==OP_BUY) lo tienes funcionando para pedidos de cualquier personaje y para cualquier mago! ¡Te dije que no hay suficientes soportes!

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



 

Gracias

Arreglémoslo

 
Buenas tardes. Puede aconsejar a alguien que entienda de estadística, estoy confundido. Necesito convertir la serie de precios actual a una escala logarítmica. Para esto necesito hacer sólo este cálculo y eso es todo?
for(int i=0; i<Bars-1; i++)
      {
      NewPrice[i]=MathLog(Close[i]);
      }
El motivo de la pregunta es que he leído en todas partes: mira el gráfico del Dow Jones de toda la historia y comprueba cómo difiere la visión en la escala logarítmica de la absoluta. Y conmigo son visualmente casi iguales, es decir, hay diferencias por supuesto, pero no tanto como en los ejemplos.
 
Desead:
Buenas tardes. Por favor, avisen a quien entienda de estadísticas porque estoy confundido. Necesito convertir la serie de precios actual a escala logarítmica. ¿Necesito hacer este cálculo solamente y todo? El motivo de la pregunta es que he leído en todas partes: mira el gráfico del Dow Jones de toda la historia y comprueba cómo difiere la visión en la escala logarítmica de la absoluta. Y conmigo son visualmente casi iguales, es decir, hay diferencias por supuesto, pero no tanto como en los ejemplos.


del manual - MathLog es el logaritmo natural- pero parece que necesitas el decimal????

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


del manual - MathLog es el logaritmo natural - pero necesitas el decimal????


El decimal no ayuda. No cambiará la vista.
 

Por favor, ayúdenme a encontrar un código (creo que no soy el primero en plantear este problema), o un algoritmo para calcular los siguientes parámetros:

El problema es el siguiente: en el Asesor Experto es necesario calcular el nivel de beneficios (tanto de las órdenes abiertas como de las pendientes, que se abrirán más tarde) en un determinado nivel de precios (por ejemplo, en los niveles de soporte, resistencia), tanto en un determinado símbolo, como para todas las posiciones abiertas (para los tipos de cambio cruzados, el beneficio está previsto que se calcule en los precios actuales).

Me encontré con los siguientes problemas:

Resultó que el tamaño del lote es diferente para las distintas empresas de corretaje (por ejemplo, instaforex tiene 10 000 unidades de moneda base, no 100 000 como se considera). De ahí la pregunta: ¿cómo puedo saber el tamaño del lote en unidades de moneda?

Por esta razón, no encuentro ninguna fórmula clara para calcular el valor de un pip (y el beneficio correspondiente) y para convertir el beneficio de la moneda base (para las tasas cruzadas) a la moneda del depósito.

Me encantaría leer un artículo sobre el cálculo de los beneficios y su previsión (envíenme un enlace), porque siento que me faltan conocimientos sobre el tema (tengo la cabeza hecha un lío .... valor de pip... tasas cruzadas... dónde multiplicar por el valor de un pip y dónde dividir... brrrr... horrible)

 
no importa cuál. El logaritmo traduce valores absolutos en valores relativos, y no importa cuál sea su base, según tengo entendido. Lo principal es entender cómo hacerlo correctamente para ver el cambio porcentual del precio en el indicador.
 

Hoy, al utilizar el abanico de Fibonacci, el terminal 4 se ha cerrado solo.

No hay errores, no se cuelga, sólo fue el terminal - sólo desapareció al segundo siguiente.

Pregunta, ¿cómo puedo averiguar la causa de este milagro? ¿Se registran los errores críticos en alguna parte?