[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 926

 
gheka:

Por más que lo intento, he reescrito todo, pero sigue el error 130, ayuda ¿dónde está mal?

No creo que sea necesario un nivelador de paradas aquí, ¿son y paradas a 1000?

Prueba con

extern double StopLoss=1000.0;
extern double TakeProfit=1000.0;
extern double Lots=1.0;
extern int total;


int start() {

int dg;
double Price_1,Price_2,min,max,pa,pb,pt;

pt=MarketInfo(Symbol(),MODE_POINT);
dg=MarketInfo(Symbol(),MODE_DIGITS);
pa=MarketInfo(Symbol(),MODE_ASK);
pb=MarketInfo(Symbol(),MODE_BID);
Price_1=pb;
Price_2=pa;
min=iLow(NULL,0,2);
max=iHigh(NULL,0,2);
total=OrdersTotal();

double slB=NormalizeDouble(pa-StopLoss*pt,dg);
double tpB=NormalizeDouble(pa+TakeProfit*pt,dg);
double slS=NormalizeDouble(pb+StopLoss*pt,dg);
double tpS=NormalizeDouble(pb-TakeProfit*pt,dg);

  if(total<1) 
  {
   if(Price_1>max)
      OrderSend(Symbol(),OP_BUY,Lots,pa,2,slB,tpB,"My order#",16384,0,Green);

   if(Price_2<min)
      OrderSend(Symbol(),OP_SELL,Lots,pb,2,slS,tpS,"My order#",16384,0,Green);
  }

}
 
¡Hola, ¿alguien tiene un probador Exp - Multi Tester para Mt4 si no le importa compartir por favor!
 
Hola chicos, no puedo entender mql4(( Quiero escribir un pequeño EA basado en dos EMA's (medias móviles) Que dan un pitido después de cruzar? ¿Puede decirme algo sobre este programa? ¡¡¡Gracias de antemano !!!
 

¿existe una función que devuelva el valor de una orden de cierre(stop loss)?

por ejemplo para que el EA sepa si se activa un stop loss

No lo he encontrado en la documentación, quizá esté ahí, pero la he releído unas diez veces en un mes y no me acuerdo

no me acordaba de encontrar esa función

 
silmin85:
Hola! Chicos, no puedo entender mql4(( Quiero escribir un pequeño EA basado en dos EMA's (promedios móviles) Que dan un pitido después de cruzar? ¿Puede decirme algo sobre este programa? ¡¡¡Gracias de antemano !!!

La próxima vez escribamos en un solo lugar. El spam no es bueno.
 
gheka:

¿existe una función que devuelva el valor de una orden de cierre (stop loss)?

por ejemplo para que el EA sepa si se activa un stop loss

No lo he encontrado en la documentación, quizá esté ahí, pero la he releído unas diez veces en un mes y no me acuerdo

No lo recuerdo.

Busque la orden en el historial y si la encuentra, compare su precio de cierre OrderClosePrice() con su nivel de StopLoss OrderStopLoss()

Si son iguales, entonces la posición se ha cerrado en un stop.

 
artmedia70:

Busque la orden en el historial, y si la encuentra, compare su precio de cierre OrderClosePrice() con su nivel de StopLoss OrderStopLoss()

Si son iguales, significa que la posición se cerró con el Stop Loss.

Kim tiene una función que toma la última orden cerrada...
 
OlegTs:
Kim tiene una función que toma la última orden cerrada...

Lo sé. Mucha gente está empezando a aprender de estas funciones. Hace poco di un enlace a su hilo aquí, pero el hombre persiste en preguntar. Probablemente sea demasiado vago para buscarlo... :)

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по стопу.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByStop(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, osl;
  int      dg, i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    osl=NormalizeDouble(OrderStopLoss(), dg);
    if (ocp==osl) return(True);
  }
  return(False);
}
 
Hola chicos, podríais aconsejar: deslizamiento - El valor del deslizamiento máximo en pips. ¿Qué es y para qué sirve? Siempre lo pongo a cero. Tal vez tenga sentido cambiarlo. ¿Puede ser modificado por mi empresa de corretaje? Gracias de antemano.
 
RekkeR:

¿Puede decirme, por favor, si hay varios indicadores superpuestos en una ventana adicional, si puede eliminar la línea que está encima de ellos con los nombres y los parámetros? Estoy harto de este teletexto.




Se puede, pero hay que eliminarlo en cada indicador. Editar el código
Razón de la queja: