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

 
001:

No puedo entender la lógica del compilador. Tengo una función. Declaro una variable externa.

int inicio;

seguir con el cuerpo de la función

doble B()
{

int=0, k=OrdersHistoryTotal();
for (i=k-1; i<=k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)!=false) {
if(OrderType()==OP_SELL) {
if(OrderProfit()< 0) {start=1;}

}

}

}

}

El valor de la variable de inicio debe ser memorizado y equiparado a cero cuando sea necesario. Pero en este caso, si OrderProfit()<0 , entonces start=1, y si OrderProfit()> 0 , entonces automáticamente start=0.

no

si OrderProfit()> 0, la variable almacenará el mismo valor

 
Tantrik:
¿Puede decirme dónde encontrarlo? Está todo en inglés.
Si no puede configurar el MetaEditor en ruso, utilice el enlace Documentación
 
ilunga:

no

Si OrderProfit()> 0, lo que había en la variable sigue siendo


Esta es la función .

//+------------------------------------------------------------------+
double Balans()
{

int=0, k=OrdersHistoryTotal();
for (i=k-1; i<=k; i++) {
//------------------------------------------------------------
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)!=false) {
if (OrderType()==OP_SELL) {
if(OrderProfit()<0) {start=true;}
}
}

//-----------------------------------------------------------
}
Print(" start= ",start);
if(lots<0.01) lots=0.01;
lots=NormalizeDouble(lots,2);
return(lots);
}
//+------------------------------------------------------------------+

Aquí está el registro.

16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: open #1 sell 0.01 GBPUSD a 2.03190 tp: 2.03100 ok
16:01:36 2007.07.12 04:01 Bars_Trader GBPUSD,M1: close #1 sell 0.01 GBPUSD at 2.03190 tp: 2.03100 at price 2.03210
16:01:36 2007.07.07.13 04:04 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.13 04:04 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.13 04:04 Bars_Trader GBPUSD,M1: open #2 sell 0.01 GBPUSD a 2.02860 tp: 2.02770 ok
16:01:36 2007.07.13 08:00 Bars_Trader GBPUSD,M1: close #2 sell 0.01 GBPUSD at 2.02860 tp: 2.02770 at price 2.02890
16:01:36 2007.07.07.16 20:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1: open #3 sell 0.01 GBPUSD a 2.03640 tp: 2.03550 ok
16:01:36 2007.07.17 00:05 Bars_Trader GBPUSD,M1: close #3 sell 0.01 GBPUSD at 2.03640 tp: 2.03550 at price 2.03630
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: open #4 sell 0.01 GBPUSD a 2.04880 tp: 2.04790 ok
16:01:36 2007.07.18 20:00 Bars_Trader GBPUSD,M1: close #4 sell 0.01 GBPUSD at 2.04880 tp: 2.04790 at price 2.05430
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: open #5 sell 0.01 GBPUSD a 2.05140 tp: 2.05050 ok
16:01:36 2007.07.19 08:00 Bars_Trader GBPUSD,M1: close #5 sell 0.01 GBPUSD at 2.05140 tp: 2.05050 at price 2.05200
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: open #6 sell 0.01 GBPUSD at 2.04840 tp: 2.04750 ok
16:01:36 2007.07.19 17:33 Tester: take profit #6 at 2.04750 (2.04760 / 2.04790)
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: open #7 sell 0.01 GBPUSD at 2.04810 tp: 2.04720 ok
16:01:36 2007.07.20 08:00 Bars_Trader GBPUSD,M1: close #7 sell 0.01 GBPUSD at 2.04810 tp: 2.04720 at price 2.04900
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: start=1
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: open #8 sell 0.01 GBPUSD at 2.06160 tp: 2.06070 ok
16:01:36 2007.07.25 02:12 Probador: toma de beneficios #8 a 2.06070 (2.06040 / 2.06070)
16:01:36 2007.07.26 08:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.26 08:00 Bars_Trader GBPUSD,M1: start= 0

 
001:


Esta es la función .

//+------------------------------------------------------------------+
double Balans()
{

int=0, k=OrdersHistoryTotal();
for (i=k-1; i<=k; i++) {
//------------------------------------------------------------
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)!=false) {
if(OrderType()==OP_SELL) {
if(OrderProfit()<0) {start=true;}
}
}

//-----------------------------------------------------------
}
Print(" inicio= ",inicio);
si(lotes<0,01) lotes=0,01;
lotes=NormalizarDoble(lotes,2);
return(lots);
}
//+------------------------------------------------------------------+

Aquí está el registro.

16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.12 00:01 Bars_Trader GBPUSD,M1: open #1 sell 0.01 GBPUSD at 2.03190 tp: 2.03100 ok
16:01:36 2007.07.12 04:01 Bars_Trader GBPUSD,M1: close #1 vender 0.01 GBPUSD a 2.03190 tp: 2.03100 al precio 2.03210
16:01:36 2007.07.13 04:04 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.13 04:04 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.13 16:04 Bars_Trader GBPUSD,M1: open #2 sell 0.01 GBPUSD at 2.02860 tp: 2.02770 ok
16:01:36 2007.07.13 08:00 Bars_Trader GBPUSD,M1: close #2 sell 0.01 GBPUSD at 2.02860 tp: 2.02770 at price 2.02890
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.16 20:00 Bars_Trader GBPUSD,M1: open #3 sell 0.01 GBPUSD at 2.03640 tp: 2.03550 ok
16:01:36 2007.07.17 00:05 Bars_Trader GBPUSD,M1: close #3 sell 0.01 GBPUSD at 2.03640 tp: 2.03550 at price 2.03630
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.18 16:00 Bars_Trader GBPUSD,M1: open #4 sell 0.01 GBPUSD at 2.04880 tp: 2.04790 ok
16:01:36 2007.07.18 20:00 Bars_Trader GBPUSD,M1: cerrar #4 vender 0.01 GBPUSD a 2.04880 tp: 2.04790 al precio 2.05430
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 04:00 Bars_Trader GBPUSD,M1: open #5 sell 0.01 GBPUSD at 2.05140 tp: 2.05050 ok
16:01:36 2007.07.19 08:00 Bars_Trader GBPUSD,M1: cerrar #5 vender 0.01 GBPUSD a 2.05140 tp: 2.05050 al precio 2.05200
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.19 16:00 Bars_Trader GBPUSD,M1: open #6 sell 0.01 GBPUSD at 2.04840 tp: 2.04750 ok
16:01:36 2007.07.19 17:33 Probador: toma de ganancias #6 en 2.04750 (2.04760 / 2.04790)
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.20 04:00 Bars_Trader GBPUSD,M1: open #7 sell 0.01 GBPUSD at 2.04810 tp: 2.04720 ok
16:01:36 2007.07.20 08:00 Bars_Trader GBPUSD,M1: cerrar #7 vender 0.01 GBPUSD a 2.04810 tp: 2.04720 al precio 2.04900
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: start= 1
16:01:36 2007.07.25 00:00 Bars_Trader GBPUSD,M1: open #8 sell 0.01 GBPUSD at 2.06160 tp: 2.06070 ok
16:01:36 2007.07.25 02:12 Probador: toma de ganancias #8 en 2.06070 (2.06040 / 2.06070)
16:01:36 2007.07.26 08:00 Bars_Trader GBPUSD,M1: start= 0
16:01:36 2007.07.26 08:00 Bars_Trader GBPUSD,M1: start= 0

Muestra el código de forma más completa. Por ejemplo, ahora mismo no puedes ver dónde está declarada esta variable.

 
ilunga:

mostrar el código de forma más completa. Por ejemplo, ahora mismo no puedes ver dónde está declarada esta variable.


extern int TF;
extern int TP;
extern int BARS;
extern int BarrierMinute;
extern int Paso=0;
//--------
extern double ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ;
extern double Decrease=2;
extern inttern Wait=2;
externo inttern Repetir;
extern int MA_Sell;
extern int Precio_Aplicado_Venta;
//extern int MAPeriod_1;
//extern int Calc=8;
extern double Lots=5;
//----
static int PrevTime=0;
lotes dobles;
int espera,inicio,paso,repetición;
datetime openTime=0;
doble lote=0,1;
 
sergovan 26.01.2012 07:27 | prohibido | borrar

Hola, ¿podríais decirme cómo cambiar las órdenes OP_ BUYSTOP y OP_SELLSTOP de mi EA por OP_SELLLIMIT y OP_BUYLIMIT? Lo he intentado y mis órdenes BUYLIMIT se colocan, pero las SELLLIMIT ni se inmutan, ¿quizá estoy haciendo algo mal?


Archivos adjuntos:
Expertd10.mq4 (5.82 KB) borrar
 

Hola amigos, ¿podéis ayudarme con este problema?

Estoy escribiendo un Asesor Experto con software stoploss, el esquema básico del algoritmo es el siguiente:


int start()
{double x, PreProfit, TekProfit;
for (x=0; x<1; x++) //El operador del bucle For (en teoría) debe ejecutarse 1 vez
{PreviousProfit=(-20);}// ¡Asigna 1 valor de tiempo (en teoría)!

TextProfit=OrderProfit();//encuentra el beneficio de la orden seleccionada
if (PredPreviousProfit<TekProfit)//si el beneficio actual es mayor que el anterior, entonces...
{WeakProfit=TekProfit;}// ¡Asigna a la variable PredCompetitive un nuevo valor!
¡//entonces la variable PredCompanyProfit debería tener el valor de beneficio más alto de todos los tiempos!
}


El problema es que el valor de la variable "x" se pone a cero con un nuevo tick y el valor (-20) se asigna a la variable "PredPreCompetition" con cada nuevo tick. Así, ¡se pierde todo el sentido del algoritmo! La variable "PrevPreprofit" ha sido diseñada para mantener constantemente el valor máximo de la ganancia de la orden hasta que se vea obligada a "volcar" este valor cuando se cierre la orden.

¿Cuál es el error? ¿Tal vez haya otras soluciones para este problema? Se lo agradezco de antemano.

 
bis:

¡La trampa es que el valor de la variable "x" con un nuevo tick se pone a cero y la asignación del valor (-20) a la variable "PredPreprofit" se realiza cada nuevo tick! Así, ¡se pierde todo el sentido del algoritmo! La variable "PrevPreprofit" ha sido diseñada para mantener el valor de la ganancia máxima de la orden de forma permanente hasta el "reinicio" forzoso de este valor cuando se cierra la orden.

¿Cuál es el error? ¿Tal vez haya otras soluciones para este problema? Gracias de antemano.

Ver https://docs.mql4.com/ru/basis/variables/static
 
FAQ:
sergovan 26.01.2012 07:27 | prohibido | borrar

Hola, ¿pueden decirme cómo cambiar las órdenes OP_ BUYSTOP y OP_SELLSTOP en mi EA por OP_SELLLIMIT y OP_BUYLIMIT? Intenté cambiar las órdenes BUYLIMIT pero SELLLIMIT ni siquiera lo piensa, ¿tal vez estoy haciendo algo mal?


Expertd10.mq4 (5.82 KB) Eliminar


¿No te olvidaste del Bid and Ask cuando lo cambiaste?
 

¿Quién sabe cómo hacer visible un indicador estándar en el probador de estrategias?