[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 130

 

Hola. ¿Podría ayudarme, por favor? El código debe mostrar una línea en el nivel global de TakeProfit . No encuentro el error.

Gracias de antemano.

void Drawline_Per_B (int Drawline_Per, double Balans, double Free, double Global_TakeProfit)  {
    Balans=AccountBalance();//Баланс счёта
    Free=AccountEquity();//Текущее количество денег в статье "Средства"
    double q;
    double SchBuyLs=SchBuyLs_b(); сумма лот для баев
    double SchSellLs=SchSellLs_b(); сумма лот для сейлов  
    double ad.QuotePoint   = MarketInfo ( Symbol () , MODE_POINT     );
    double ad.QuoteTick    = MarketInfo ( Symbol () , MODE_TICKSIZE  );
    double ad.NominalTick  = MarketInfo ( Symbol () , MODE_TICKVALUE );
    double ad.NominalPoint = ad.NominalTick  * ad.QuotePoint / ad.QuoteTick ; // Цена 1 пункта для стандартного лота в валюте депозита
    q =  NormalizeDouble(Bid + (Balans-Free+Balans/100*Global_TakeProfit)/ad.NominalPoint*(SchBuyLs-SchSellLs)*Point,Digits);
    Drawline_Per("%_LINE");
    ObjectSet( "%_LINE", OBJPROP_PRICE1, q);
  }
 
No sé qué estás contando ahí, pero el número de puntos es un número entero. Hazlo de tipo int y no necesitarás la normalización.
q =  (Balans-Free+Balans/100*Global_TakeProfit)/PP*(SchBuyLs-SchSellLs);  //число пунктов до наступления условия  Global_TakeProfit
 

Gracias por los consejos.

Encontré las fallas, todo funciona.

 

Por favor, ayuda con los fractales

maxF = NormalizeDouble (iFractals(NULL, 0, MODE_UPPER,1),5);
minF = NormalizeDouble (iFractals(NULL, 0, MODE_LOWER,1),5);

¿Por qué no veo
maxF > Bid o minF > Bid ejecutándose?

Si <, se ejecutará.

Sin NormalizeDouble, lo mismo. ¿Hay algo que no entiendo sobre los fractales?

 
lia:

Por favor, ayuda con los fractales.

maxF = NormalizeDouble (iFractals(NULL, 0, MODE_UPPER,1),5);
minF = NormalizeDouble (iFractals(NULL, 0, MODE_LOWER,1),5);

¿Por qué no puedo ver la ejecución de
¿MaxF > Oferta o minF > Oferta?

Si <, se ejecuta.

Sin NormalizeDouble es lo mismo. ¿No entiendo algo de los fractales?


Consulte esta página y la siguiente: muestre sus condiciones de forma similar.
 

¿Podría sugerir una función para un EA en MT4 que devuelva el beneficio de la última orden cerrada, o si la última orden cerró con beneficios o con pérdidas?

PS No he encontrado tal función en Kim.

 
Sancho77:

¿Puede sugerir una función que devuelva el beneficio de la última orden cerrada, o si la última orden cerró con beneficios o con pérdidas?

PS Kim no encontró tal función.

Igor Kim tiene esas funciones. Pero sus funciones son un poco exageradas para la versatilidad. Puedo preparar rápidamente una función de este tipo para usted aquí.
Pregunta: ¿En qué consiste el beneficio? ¿En puntos o en la moneda del depósito?
 
artmedia70:
Igor Kim tiene esas características. Sin embargo, sus funciones son un poco excesivas para la versatilidad. Puedo preparar rápidamente una función de este tipo para usted aquí.
Pregunta: ¿En qué consiste el beneficio? ¿En puntos o en la moneda del depósito?
Le agradecería que me lo dijera. No importa si la ganancia es en puntos o en moneda, el hecho importante: una operación se cerró con ganancias o con pérdidas. En lo que a mí respecta, da igual que sea en moneda o en pips.
 
Sancho77:
Le agradecería que lo escribiera. No importa si el beneficio es en puntos o en moneda, lo importante es el hecho de que la operación se haya cerrado con beneficios o con pérdidas. En mi opinión, no hay diferencia en cuanto a la moneda o los pips.
//+----------------------------------------------------------------------------+
bool LossLastPose(string sy, int op, int mn) {
   datetime t;
   int      i, j;
   for (i=0; i<OrdersHistoryTotal(); i++) {
      if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
         if (OrderType()!=op)          continue;
         if (OrderSymbol()!=sy)        continue;
         if (OrderMagicNumber()!=mn)   continue;
         if (OrderCloseTime()>t) {
            t=OrderCloseTime();
            j=i;
            }
         }
      }
   if (OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)) 
      if (OrderProfit()<0) return(true);
   return(false);
}
//+----------------------------------------------------------------------------+

Lo llamamos así:

Para comprobar la última posición de compra cerrada en el símbolo actual. La función devolverá true si hay pérdidas y false si hay beneficios...

if (LossLastPose(Symbol(), OP_BUY, Magic)) {код, если последняя позиция закрылась с убытком}
else {Код, если последняя позиция закрылась с прибылью}

La variable Magic es una magia del EA, se escribe en las variables globales del EA.

 
artmedia70:

Lo llamamos así:

Para comprobar la última posición de compra cerrada en el símbolo actual. La función devolverá true si hay pérdidas y false si hay beneficios...

La variable Magic es el magik del EA, escrito en las variables globales del EA.



¡Muchas gracias!
Razón de la queja: