¿Cómo codificar? - página 58

 

Pensé que lo había arreglado pero no.

Lo que estoy tratando de hacer es tener un comentario en el gráfico y en el diario indicando qué condición de entrada se utilizó para abrir la posición actual.

Se ha hecho esto antes y cómo se hace porque llevo un tiempo intentándolo pero no hay suerte y no es tan fácil como pensaba.

Abajo está mi último intento.

cualquier ayuda seria genial

buysig = Largo || Long2 || Long3 | Long4;

sellsig = Short || Short2 || Short3 | Short4;

closebuy=sellsig;

closesell=buysig;

si (curprof>=CuentaPatrimonio()*ProfitExit/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) {

if ( Short == true)Print(" Señal de venta tomada ");

si ( Short2 == true)Print(" Señal corta2 tomada ");

si ( Short3 == true)Print(" Señal corta3 tomada ");

si ( Short4 == true)Print(" Señal corta4 tomada ");

co=CalcularOrdenesactuales(Símbolo());

si (co==0) {

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

}

lastsig=-1;

last=Tiempo[0];

return;

}

//---- condiciones de compra

co=CalcularOrdenesactuales(Símbolo());

if(buysig && lastsig!=1) {

if ( Long == true) Print(" Señal de compra tomada ");

if ( Long2 == true)Print(" Señal larga2 tomada ");

if ( Long3 == true) Print(" Señal Long3 tomada ");

si ( Long4 == true)Print(" Señal Long4 tomada ");

co=CalcularOrdenesactuales(Símbolo());

si (co==0) {

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

}

last=Tiempo[0];

last=1;

return;

}

}

bool CloseAtMarket(int ticket,double lot) {

//cierre de orden de mercado tolerante a fallos

bool bres=false; int tr;

tries=0;

while (!bres && tries<OrderTriesNumber) {

RefreshRates();

bres=OrderClose(ticket,lot,OrderClosePrice(),slippage,White);

intentos++;

tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(2000); }

}

if (!bres) Print("Error al cerrar la orden : ",ErrorDescription(GetLastError()));

}

int OpenStop(int modo,double lote, double prc, int SL, int TP) {

int res,tr,col;

cadena de correo;

double openprice,sl,tp,stlev;

intentos=0;

stlev=(1+MarketInfo(Symbol(),MODE_STOPLEVEL))*Punto;

while (res<=0 && tries<OrderTriesNumber) {

tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(2000); }

RefreshRates();

if (mode==OP_SELLSTOP) {

si (prc<=Bid-stlev) openprice=prc;

si no, openprice=Bid-stlev;

si (SL>0) sl=precio abierto+SL*Punto;

si (TP>0) tp=precio abierto-TP*Punto;

col=Rojo;

} si no

si (mode==OP_BUYSTOP) {

si (prc>=Ask+stlev) openprice=prc;

si no, openprice=Ask+stlev;

si (SL>0) sl=precio abierto-SL*Punto;

si (TP>0) tp=precio abierto+TP*Punto;

col=Azul;

} else return;

Print(Ask," ",Bid," ",Symbol()," ",mode," ",lot," ",openprice," ",sl," ",tp," ");

res=EnviarOrden(Símbolo(),modo,lote,precio de apertura,deslizamiento,sl,tp,EAName+"_"+NúmeroMágico, NúmeroMágico,0,col);

intenta++;

}

if (res<=0) Print("Error al abrir una orden pendiente: ",ErrorDescription(GetLastError()));

return(res);

 

Este EA ni siquiera compilar, stoploss debe ser el menor de sus preocupaciones. ¡Hay 5 Variables que tienen espacios al azar en ellos o la primera letra no es mayúscula!

 
jturns23:
Este EA ni siquiera compila, el stoploss debería ser la menor de sus preocupaciones. ¡Hay 5 variables que tienen espacios al azar en ellos o la primera letra no está en mayúsculas!

Aquí está la versión corregida.

Pero esto todavía no puede abrir cualquier posición porque no hay lógica en el código para decidir cómo abrir posiciones largas / cortas.

Archivos adjuntos:
 
 

Ayuda con este EA

Michel:
¿Quién es este CHinGsMAroonCLK?

Según recuerdo, este EA no es otra cosa que 10p3 de elCactus, pero tal vez me equivoque...

Revisa su hilo, probablemente encontrarás lo que buscas: https://www.mql5.com/en/forum/174975

El problema es que no puedo poner un stoploss para este EA... ¿cuál es el código?

 

zona de no comercio - ayuda con el código

Hola a todos,

Estoy tratando de ajustar un código pero después de mucho esfuerzo todavía no pude hacerlo bien... si alguno de ustedes no le importa puede echar un vistazo a esto... agradezco...

La idea es detener la siguiente operación si el rango de precios está en la misma zona que la operación anterior. La operación larga comprobará la zona de la última operación larga de POSICIÓN ABIERTA, y la operación corta comprobará la zona de la última operación corta de POSICIÓN ABIERTA.

Por ejemplo, si la primera operación larga está en 1.4000, entonces la segunda operación larga sólo se activará si el precio se mueve fuera de la zona (zona de 20 pips) menos de 1.3990 y más de 1.4010.

Gracias a todos...

//+------------------------------------------------------------------------------------------------------------------------+

//| Filtro para el mercado lateral - evitar el comercio múltiple en el rango de precios similares y crear una zona de no comercio |.

//+------------------------------------------------------------------------------------------------------------------------+

extern int Zona1 = -10; // (zona inferior)

extern int Zona2 = 10; // (zona superior)

// zona de no comercio entre -10 y +10 de la operación anterior

bool CheckZone(int type)

{

int cnt = OrdersTotal();

for (int i=0; i < cnt; i++)

{

if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;

if (OrderSymbol() != Symbol()) continue;

si (OrderMagicNumber() != Magic) continuar;

si (OrderType() != tipo) continuar;

si (tipo == OP_BUY)

{

if( (Bid - OrderOpenPrice()) > Zone1*Point && (Bid - OrderOpenPrice()) < Zone2*Point ) return(false);

}

if (type == OP_SELL)

{

if( (OrderOpenPrice()-Ask) > Zone1*Point && (OrderOpenPrice()-Ask) < Zone2*Point ) return(false);

}

}

return(true);

}

 

Resolver el problema de EA

Hola a todos los programadores de MQL,

Por favor, compruebe el siguiente código y dime por qué esto no es la colocación de los oficios en mi cuenta de demostración. Es un buen EA en GJ 1m pero desafortunadamente no funciona. ¿Puede alguien arreglarlo por favor y hacerlo utilizable como un EA libre de errores.

¡Estoy agradecido de antemano!

Saludos cordiales.

//+------------------------------------------------------------------+

extern int Longitud1 = 3;

extern int Length2 = 10;

extern int Length3 = 16;

double Histo[];

double MaHisto[];

double up[];

double dn[];

double upMode[];

double dnMode[];

int alertBar;

int init()

{

return(0);

}

int deinit()

{

return(0);

}

int inicio()

{

int límite;

int barras_contadas=IndicadorContado();

if(counted_bars<0) counted_bars=0;

if(counted_bars>0) counted_bars--;

limit=Barras_contadas;

for(int i = 0 ;i <= límite ;i++)Histo = iMA(Símbolo(),0,Longitud1,0,MODO_EMA,PRECIO_CIERRE,i) - iMA(Símbolo(),0,Longitud2,0,MODO_EMA,PRECIO_CIERRE,i);

for(int j = 0 ;j <= limit ;j++)MaHisto[j] = iMAOnArray(Histo,0,Length3,0,MODE_EMA,j);

for(int m = 0 ;m <= límite ;m++)

{

if(MaHisto[m+1] 0)

{

up[m] = Open[m]-(5*Punto);

if(Bares > alertBar && m == 0)

{

//Alerta(Símbolo()+""+Periodo()+" KI LONG ",Ask);

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,25,15,0,0,0,Red);

alertBar = Bares;

}

}

else if(MaHisto[m+1] >= 0 && MaHisto[m]< 0)

{

dn[m] = Open[m]+(5*Punto);

if(Bares > alertBar && m == 0)

{

OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,Red);

alertBar = Bars;

}

}

si no

{

up[m] = EMPTY_VALUE;

dn[m] = EMPTY_VALUE;

}

if( MaHisto[m] > 0 )

{

upMode[m] = High[m];

dnMode[m] = Low[m];

}

else if( MaHisto[m] < 0 )

{

dnMode[m] = High[m];

upMode[m] = Low[m];

}

}

return(0);

}

//+------------------------------------------------------------------+

 
arsenic786:
Hola a todos los programadores de MQL,

Por favor, compruebe el siguiente código y dime por qué esto no es la colocación de los oficios en mi cuenta de demostración. Su buena EA en GJ 1m, pero por desgracia su no trabajo. ¿Puede alguien arreglarlo por favor y hacerlo utilizable como un EA libre de errores.

¡Estoy agradecido de antemano!

Saludos.

//+------------------------------------------------------------------+

extern int Longitud1 = 3;

extern int Length2 = 10;

extern int Length3 = 16;

double Histo[];

double MaHisto[];

double up[];

double dn[];

double upMode[];

double dnMode[];

int alertBar;

int init()

{

return(0);

}

int deinit()

{

return(0);

}

int inicio()

{

int límite;

int barras_contadas=IndicadorContado();

if(counted_bars<0) counted_bars=0;

if(counted_bars>0) counted_bars--;

limit=Barras_contadas;

for(int i = 0 ;i <= límite ;i++)Histo = iMA(Símbolo(),0,Longitud1,0,MODO_EMA,PRECIO_CIERRE,i) - iMA(Símbolo(),0,Longitud2,0,MODO_EMA,PRECIO_CIERRE,i);

for(int j = 0 ;j <= limit ;j++)MaHisto[j] = iMAOnArray(Histo,0,Length3,0,MODE_EMA,j);

for(int m = 0 ;m <= límite ;m++)

{

if(MaHisto[m+1] 0)

{

up[m] = Open[m]-(5*Punto);

if(Bares > alertBar && m == 0)

{

//Alerta(Símbolo()+""+Periodo()+" KI LONG ",Ask);

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,25,15,0,0,0,Red);

alertBar = Bares;

}

}

else if(MaHisto[m+1] >= 0 && MaHisto[m]< 0)

{

dn[m] = Open[m]+(5*Punto);

if(Bares > alertBar && m == 0)

{

OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,Red);

alertBar = Bars;

}

}

si no

{

up[m] = EMPTY_VALUE;

dn[m] = EMPTY_VALUE;

}

if( MaHisto[m] > 0 )

{

upMode[m] = High[m];

dnMode[m] = Low[m];

}

else if( MaHisto[m] < 0 )

{

dnMode[m] = High[m];

upMode[m] = Low[m];

}

}

return(0);

}

//+------------------------------------------------------------------+

"OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,R ed);"

Está vendiendo al precio Ask, debería ser Bid.

El campo Comentario debería ser "", no 0.

25 como SL debe ser Bid+25*Punto.

15 como TP debe ser Bid-15*Punto.

"R ed" no es un color.

 
Michel:
"OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,R ed);"

Usted está vendiendo al precio Ask, debería ser Bid.

El campo Comentario debería ser "", no 0.

25 como SL debe ser Bid+25*Punto.

15 como TP debe ser Bid-15*Punto.

"R ed" no es un color.

Muchas gracias por su apoyo.

Pero, todavía estoy enfrentando problemas cero conocimiento de MQL. Puede por favor copiar y pegar el código en el archivo mq4 y probarlo en la demo y luego decirme si funciona bien. Su apoyo será contado como la ayuda más amable Michel.

Saludos cordiales,

Kashif.

 

No, lo siento, no tengo suficiente tiempo por ahora.

En pocas horas cojo un barco para volver con mi familia por Navidad... y no más pc...

Razón de la queja: