[¡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 49

 
xruss >> :

Luego publicaré una sección de mi código, pero creo que quedaría más chulo con casillas de verificación. ¿cómo las escribo en mql4?

https://book.mql4.com/ru/variables/arrays

Al final de esta sección, el principio de utilización de las banderas está muy bien descrito por el ejemplo del hecho de formar una nueva barra. Del mismo modo, creamos dos variables de tipo bool que indicarán la posibilidad de abrir operaciones de un determinado tipo, por ejemplo Buy_Allowed y Sell_Allowed. Por defecto, asignamos valores de verdadero a estas variables. Si hay una señal de compra, en caso de apertura exitosa de la posición establecemos Buy_Allowed=false; en este caso antes de OrderSend() añadimos la condición de su ejecución para las operaciones de compra sólo si Buy_Allowed==true. Cuando se recibe una señal inversa, descartamos la bandera Buy_Allowed=true. El mismo esquema se utiliza para las operaciones de venta pero con la bandera Sell_Allowed.

 
Everlost >> :

https://book.mql4.com/ru/variables/arrays

Al final de esta sección se describe muy bien el principio de utilización de las banderas con el ejemplo del hecho de formar una nueva barra. Por analogía, creamos dos variables de tipo bool que indicarán la permisibilidad de abrir operaciones de un determinado tipo, por ejemplo Buy_Allowed y Sell_Allowed. Por defecto, asignamos valores de verdadero a estas variables. Si hay una señal de compra, en caso de apertura exitosa de la posición establecemos Buy_Allowed=false; en este caso antes de OrderSend() añadimos la condición de su ejecución para las operaciones de compra sólo si Buy_Allowed==true. Cuando se recibe una señal inversa, descartamos la bandera Buy_Allowed=true. El mismo esquema se utiliza para las operaciones de venta pero con la bandera Sell_Allowed.

Gracias. He publicado parte del código en el último post.

 

Ya he descargado mi EA de Daydream desde esta web.Cuando lo probé, el lote máximo tomado en la prueba fue de 0,1 y el saldo fue de 10.000. Lo probé con GBPUSD 15 en Meta Trader 4 222.

Segunda pregunta: ¿qué es el "error de concordancia" en el informe de la prueba?

La tercera pregunta, ¿por qué no puedo obtener una señal? Tengo la impresión de que esto está relacionado de alguna manera con la primera pregunta, es decir, algo está fallando en el programa. Estoy usando EURUSD M1 MACD Sample (que viene como estándar), disminuí el MACD OpenLevel a 1 y no obtuve nada.

No sé cómo usarlo.

 
xruss >> :

Gracias, me informaré. He publicado parte del código en el último post.

int    ORDtype=-1, ORDtime=0;
double ORDprofit;

for (int i=OrdersHistoryTotal()-1; i>=0; i--) {
  if (OrderSelect( i, SELECT_BY_POS, MODE_HISTORY)) {
    if (OrderSymbol()==Symbol()) {
      if (OrderCloseTime()!=0 && OrderCloseTime()> ORDtime) {
        ORDtime=OrderCloseTime();
        ORDtype=OrderType();
        ORDprofit=OrderProfit();
      }
    }
  }
}

//........

if ( ORDtype==-1)
{
  // В истории не нашлось подходящих ордеров
}

if ( ORDtype==OP_SELL)
{
  // Последним был закрыт Sell
}

if ( ORDtype==OP_BUY)
{
  // Последним был закрыт Buy
}
La variante de trabajo de su código. No debería haber eliminado la comprobación (OrderCloseTime()>time). Sin ella, todo el sentido se perdería - estamos eligiendo la última orden cerrada comparando la hora de cierre de cada orden con la hora de cierre más antigua de las órdenes encontradas anteriormente, que guardamos en la variable ORDtime. Pero usted acaba de pasar por todos los órdenes de la historia. También tenías una condición en ORDprofit, pero puedes añadirla tú mismo. :)
 
Everlost >> :
Versión de trabajo de su código. No debería haber eliminado la comprobación (OrderCloseTime()>time) porque sin ella se perdería todo el sentido - estamos eligiendo la última orden cerrada comparando la hora de cierre de cada orden que se busca con la hora más antigua de las órdenes encontradas anteriormente. También tenías una condición en ORDprofit, pero puedes añadirla tú mismo. :)

sí tenía una condición para prohibir la apertura en la misma dirección si la última orden tenía un beneficio :)

muchas gracias!!))

 
zas писал(а) >>

Segunda pregunta: ¿Qué son los "errores de discrepancia" en el informe de la prueba?

Se ha preguntado muchas veces, es más fácil que busques...

zas escribió >>

Traté de usar GBPUSD 15 en un Meta Trader 4 222. Lo que `s interesante, la prueba con 1 lote en otro equipo estaba bien. ¿Cuál es el truco?

Tal vez MT4 en el otro ordenador está conectado a la cuenta de otro corredor, diferentes corredores, diferentes condiciones de negociación... O tal vez el EA determina el lote al azar). Puede necesitar el código del Asesor Experto, las declaraciones, y obtendrá una respuesta precisa.

zas escribió(a) >>

Mi impresión es que está relacionado de alguna manera con la primera pregunta, es decir, algo está fallando en el programa. Intenté usar la muestra MACD del EURUSD M1 (que viene de serie), disminuí el MACD OpenLevel a 1 y no conseguí nada.

Mira el registro del probador, si se trata de un probador. Publica el conjunto de parámetros, y el resultado del EA de prueba (donde no hay señales). Parece que todos sus embragues por falta de experiencia, y no por fallos en el programa...

 
VladislavVG >> :

Una opción :

Establezca la variable bool NeedAlert a true cuando empiece a operar.


Gracias, y pensé que no funcionaría - como el bucle no funcionará - resulta que me olvidé de la llave))

 
Una pregunta: ¿Cómo puedo calcular el tamaño del lote para que el beneficio estimado para 20 pips sea el 4% del depósito actual?
 
xruss писал(а) >>

Gracias, me informaré. He publicado parte del código en el último post.

//+------------------------------------------------------------------+
// Проверка последнего ордера по условию                             |
//+------------------------------------------------------------------+
bool LastCloseOrd(string Sy = "",//Если Sy=="" на принадлежность символу не проверяем
                  int  Type = -1,//Если Typ==-1 любой тип ордера
                  int Magic = -1,//Если Magic=-1любой магик
                  int Pr_Ls =  0){//Если Pr_Ls =0 без проверки на профит, если <0 то фильтр лосевых , если >0 то фильтр профитных ордеров
                  int time=0;
if(OrdersHistoryTotal()<1){return(false);}//Если нет закрытых ордеров выходим 
  for(int i=0; i<OrdersHistoryTotal(); i++){//Перебираем закрытые ордера
    if(OrderSelect( i, SELECT_BY_POS, MODE_HISTORY)){//Выбираем ордер из истории
      if(OrderCloseTime()!=0){//Если ордер уже закрыт
        if( Sy==""||OrderSymbol()== Sy){//если совпадает символ, или нет проверки на символ
          if( Type==-1||OrderType()== Type){//если совпадает тип, или нет проверки на тип
            if( Magic==-1||OrderMagicNumber()== Magic){//если совпадает магик , или не проверки на магик
              if(OrderCloseTime()> time){//если время закрытия ордера больше чем предыдущее
                time=OrderCloseTime();//записываем время закрытия (в конце цикла у нас в ловушке булет сидеть последний закрытый ордер
              }                                                  //попадающий под все условия выставленных фильтров)
            }
          }
        }
      }
    }
  }  
if( Pr_Ls==0&&time!=0){return(true);}//если нет условия на профит-лосс подтверждаем наличие ордера
if( Pr_Ls<0&&OrderProfit()<0){return(true);}//если ордер лосевый подтверждаем наличие ордера
if( Pr_Ls>0&&OrderProfit()>0){return(true);}//если ордер профитный подтверждаем наличие ордера
return(false);//нет ни одного попадающего под выставленные условия ордера
} 
 

Se trata de los errores en el probador.........

Si alguien lo sabe, por favor, avise.....

')' - wrong parameters count	C:\Program Files\MetaTrader - Alpari\experts\expertCCI_WILLIAMS.mq4 (64, 37)
')' - wrong parameters count	C:\Program Files\MetaTrader - Alpari\experts\expertCCI_WILLIAMS.mq4 (65, 37)
¿Qué significan los números 64,37 y 65,37? ????????????