¿Cómo codificar? - página 54

 

Otra pregunta

ahora mi EA como este

if(FastMA2 SlowMA1)

{

CerrarPosiciones();

OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-SLpips*Point,Ask+(45*Point),"",MAGIC,0,Blue);

return(0);

Quiero cambiar así

1. 15minutus timeflame suceder signo de compra

2. si entonces 5minutos timeflame MA cruzar signo de compra ya, también

ClosePosition. y obtener una nueva posición

3. si entonces 5minutos timeflame MA cambiar vender signo ya

esperar 5minutos timeflame cambiar signo de compra ,

entonces ClosePosition. y obtener nueva posición

Por favor, dígame cómo escribir este programa.

 
Archivos adjuntos:
 

Hola

Estoy buscando un poco de ayuda Tengo un EA que estoy usando en la demo y también aprender a código con. Estoy tratando de averiguar cómo agregar un comentario al sistema para mostrarme cuál de los 4 criterios de entrada se utilizó para abrir la posición. por ejemplo, si se utilizó long2 entonces mostrar la señal de long2

cualquier ayuda seria genial

saludos

Beno

 
Beno:
Hola

Estoy buscando un poco de ayuda Tengo un EA que estoy usando en la demo y también aprender a código con. Estoy tratando de averiguar cómo añadir un comentario al sistema para mostrarme cuál de los 4 criterios de entrada se utilizó para abrir la posición. por ejemplo, si se utilizó long2 entonces mostrar la señal de long2

cualquier ayuda seria genial

Saludos

Beno

Después de que se cumpla su condición y utilice el comando Ordersend(), sólo tiene que insertar una declaración Comment(), Alert(), o Print(). Cualquiera que quieras usar.

Algo como esto

if ( long2 == true)

{

Ordersend();

{

Print(" señal long2 tomada ");

}

}

Espero que eso ayude.

 

Gracias Wolfe

He tenido que reírme, he puesto lo que has sugerido y ha funcionado más o menos, pero ahora sólo tengo el comentario y ninguna posición abierta.

bool Long = MAofRSI11>MAofRSI21 && MAofRSI12VolHL && RSIndex1HL2 && TrStop0.0 && SDLL && ma<Close[shift];

bool Short = MAofRSI11=MAofRSI22 && VolCH>VolHL && RSIndex1HLM && TrStop>Close[shift] && MOMClose[shift];

bool Long2 = MAofRSI11>HLM && MAofRSI12HLM && MAofRSI22VolHL && TrStop0.0 && SDLL && ma<Close[shift];

bool Short2 = MAofRSI11=HLM && MAofRSI21=HLM && VolCH>VolHL && TrStop>Close[shift] && MOMClose[shift];

bool Long3 = RSIndex1-RSIndex2>20<HL2 && TrStop0.0 && SDLL && ma<Close[shift];

bool Short3 = RSIndex2-RSIndex1>20>HL1 && TrStop>Close[shift] && MOMClose[shift];

bool Long4 = zscore>0,0 && ma<Close[shift];

bool Short4 = zscoreClose[shift];

buysig = Long || Long2 || Long3 | Long4;

sellsig = Short || Short2 | Short3 | Short4;

closebuy=sellsig;

closesell=buysig;

si (curprof>=SaldoDeCuenta()*SalidaDeBeneficio/100.0) {

exit=true;

}

if (last>0 && (Time[0]-last)/(Period()*60)>=CancelOrderBars) {

remorder=true;

}

}

void CheckForOpen() {

int res,tr;

//---- condiciones de venta

co=CalcularOrdenesactuales(Symbol());

if(sellsig && lastsig!=-1) {

co=CalcularOrdenesActual(Símbolo());

si (co==0) {

if ( Short == true)

si ( Short2 == true)

si ( Short3 == true)

res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1);

Print(" Señal de venta tomada ");

Print(" Señal corta2 tomada ");

Print(" Señal corta3 tomada ");

Print(" Señal corta4 tomada ");

}

lastsig=-1;

last=Tiempo[0];

devolver;

}

//---- condiciones de compra

if(buysig && lastsig!=1) {

co=CalcularOrdenesactuales(Símbolo());

if (co==0) {

if ( Long == true)

si ( Long2 == true)

si ( Long3 == true)

si ( Long4 == true)

res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1);

Print(" Señal larga tomada ");

Print(" Señal larga2 tomada ");

Print(" Señal Long3 tomada ");

Print(" Señal Long4 tomada ");

}

last=Tiempo[0];

lastsig=1;

devolver;

}

}

Corregido Gracias

 

Depuración de código

¿Cómo y dónde utilizarías un trozo de código como este? Tengo un error de división a cero que no encuentro cómo solucionar.

extern bool DEBUGGING = true

...

if(DEBUGGING && variableName == 0) Print("CodePoint 1 -- Esta variable es ahora ", variableName);

... más código

if(DEBUGGING && variableName == 0) Print("CodePoint 2 -- Esta variable es ahora ", variableName);

... más código

if(DEBUGGING && variableName == 0) Print("CodePoint 3 -- Esta variable es ahora ", variableName);

...

 

me pueden ayudar? ¿por qué hay muchos errores en el código?

esto es para calcular el SMMA:

for(j=0;j<Bars;j++)

{

for(i=0,sum=0;i<ma_period;i++)

{

suma=suma+Cierre[j+i];

// buffer[j]=(suma/ma_periodo+Cerrar[j+i])/ma_periodo;

}

buffer[j]=(suma/ma_periodo+Cerrar[j])/ma_periodo;

}

esto es para calcular LWMA

for(j=0;j<Bars;j++)

{

for(i=0,sum=0,sum1=0;i<ma_period;i++)

{

sum=suma+Cierre[j+i];

sum1=sum1+Close[j+i]*(j+i);

// buffer[j]=suma/ma_periodo;

}

buffer[j]=suma1/suma;

}

¿y cómo se calcula la EMA?

 

pregunta sobre los indicadores

Hola a todos.

Estoy atascado en una cuestión de programación. ¿Alguien sabe cómo utilizar el resultado de un indicador para cambiar otra configuración? Por ejemplo, si el stockasti diario estuviera por encima de 20, querría una media móvil de (x). He tratado de conseguir el código de trabajo a continuación, pero para saber infructuoso. Parece que no soy capaz de conseguir el interruptor o el comando if else para trabajar eithor.

double fourhrUP;

double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,1);

double daystoch20 = 20;

si (daystoch1 > daystoch20) four_hrUP = 5 ;

double iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift)

 
ajk:
Hola a todos.

Estoy atascado en un tema de programación. ¿Alguien sabe cómo utilizar el resultado de un indicador para cambiar otra configuración? Por ejemplo, si el stockasti diario estuviera por encima de 20, querría una media móvil de (x). He tratado de conseguir el código de trabajo a continuación, pero para saber en vano. Parece que no soy capaz de conseguir el interruptor o el comando if else para trabajar eithor.

double fourhrUP;

double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,1);

double daystoch20 = 20;

si (daystoch1 > daystoch20) four_hrUP = 5 ;

double iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift)

¿Dónde está la variable de su MA?

Tal vez esto podría ayudar

double ma4hr=iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift);

si el cálculo de stoch está en el mismo bucle, digamos "for(int shift=limit-1; shift>=0; shift--)", el código de stoch debería ser

double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,shift+1);

CMIIW

 

Un poco de ayuda con un indicador - Coder's Please Look

Estoy probando la plataforma de un corredor MT4 que utiliza pips fraccionarios (pipetas) en sus cotizaciones de precios: Por ejemplo en el EURJPY se cotiza como 164.381 en lugar de 164.38 - Esto significa que el spread tiene un decimal como 4.1 pips (en lugar de 4).

¿Puede alguien decirme cómo MODIFICAR el siguiente código para que el Spread se lea correctamente? Ahora mismo un spread de 4.1 pips se leería como 41.0 en el Indicador. Se agradece cualquier ayuda.

Dan

//---- spread

Spread=NormalizeDouble((Ask-Bid)/Point,1);

ObjectSetText("Spread Monitor1", "Spread:", 10, "Arial", labelColor);

ObjectSetText("Spread Monitor2",DoubleToStr(Spread,1),10, "Arial", clockColor);