¿Cómo codificar? - página 176

 

Código Atr decresing ???

Atr decresing - ¿cuál es el código mql4?

--------------------------------------------------------------------------------

Atr decresing

¿cuál es el código mql4?

Me gustaría que mi ea no abriera posiciones si

el ATR d1 es > ATR d1 (-1)

 

Cómo codificar 3 niveles de Trailing Stops

TrailingStop = 50;

TrailingStop_Over100 =30;

TrailingStop_Over150 = 20;

Nivel 1: 0-100 pip de beneficio - TS es de 50 pips

Nivel 2: 101-150 pip de beneficio - el TS cambia a 30 pips

Nivel 3: 151+ pip de beneficio - TS cambia a 20 pips

¿Cómo codifico esto( movimiento dedirección positiva ) para que el TS cambie una vez que la ganancia de pips aumente?

Dave

<<<

Realmente apreciaría la experiencia de un codificador.

 

después de la primera cruz establecer varias barras de distancia

Hola a todos los gurús de la programación aquí soy un novato en la programación de mql4 y me quedé atascado en un problema,

por lo que es la siguiente :

Tengo 2 EMA 5 y 20 PERIOD_15 y respectivamente 5 y 20 EMA en PERIOD_H1.

Así que cuando entro en una posición con el primer cruce PERIOD_M15, el asesor cierra la posición inmediatamente en la misma barra si el precio se mueve en sentido contrario y hace un cruce inverso. Esto es programáticamente correcto, pero mi problema real es esperar a las siguientes 1-2 o más barras y luego cerrar la posición si se encuentra el cruce.

Si hay algún tema relacionado con el mismo problema aquí, puede enviarme un enlace.

y los moderadores pueden eliminar el post .

¡Gracias de antemano!

-- si ya tiene una posición abierta

-- si se producen demasiados cruces

--espera un poco antes de salir de esta posición

--esto debería resolver los cruces repetidos en una barra

if(firstCross == 1)

{

---------------------------//Close, comprueba si se imprimen las siguientes barras después de OpenOrderPrise()-----------------------------------

if(openbar <= closebar)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Red); // cerrar posición

return(0); // salir

}si no

return(0);

}

bueno he encontrado una solución espeluznante que ya he adjuntado

Si usted tiene algunas ideas de optimización para el cambio de tiempo o ideas de optimización en el código en absoluto, voy a apreciar cualquier sugerencia thx de antemano

Archivos adjuntos:
 

Necesito su ayuda

Hola traders,

Realmente apreciaré si alguien puede ayudarme a desarrollar una alerta para este indicador ( MT4-LevelStop-Reverse-vB0-3).

Quiero que la alerta suene inmediatamente cuando la flecha aparezca.

Gracias de antemano.

Archivos adjuntos:
 
chiwing:
Hola,

uso su lucky v2, y quiero saber el código de añadir texto en el gráfico que no está usando el objeto--label-->ver la imagen ~~

y el usuario no puede del texto~ ~

el texto está siendo así-- "Your lucky es gratis y aún está en desarrollo..."

¿como codificarlo?

gracias

Utilice el comando Comment()

Comentario - Documentación MQL4

 

como codificar un texto ineliminable en un gráfico

hola

uso su lucky v2, y quiero saber el código de añadir texto en el gráfico que no está usando el objeto--label-->ver la imagen ~~

y el usuario no puede borrar el texto~ ~

el texto es asi-- "Your lucky v2 EA es gratis y aun esta en desarrollo..."

¿como se puede codificar?

gracias

Archivos adjuntos:
how_to_code.jpg  134 kb
 

Orden múltiple y trailing múltiple

En mi Ea uso múltiples órdenes, una a mercado y otra con límite de compra/venta

Cuando obtengo las 3 entradas como en el ejemplo, quiero que el trailing comience y funcione conjuntamente.

Un ejemplo

1 entrada a 1.50

2entrada a 1.4950

3 entradas a 1.4930

el trailing es de 50 puntos, pero quiero que empiece cuando llegue a 1.5050 no antes, si utilizo el trailing normal cuando el precio llegue a 1.5001 la segunda entrada (si se llena) empieza a seguir pero no quiero eso... quiero que el trailing empiece con 50 pip y todo al mismo precio así que a 1.5050

entonces es mejor guardar la entrada para entender que orden utilizo?

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-Point*StopLoss,Ask+TakeProfit*Point,0,0,Green);

LastClosedBar = Time[0];

RefreshRates();

OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);

entratalong= OrderOpenPrice( );

ticket2=OrderSend(Symbol(),OP_BUYLIMIT,Lots_2ingresso,entratalong-Point*Secentrata-2*Point,3,entratalong-Point*StopLoss-2*Point,entratalong+TakeProfit*Point,NULL,1,0,Magenta); // NULL, c'e il null in + //

ticket3=OrderSend(Symbol(),OP_BUYLIMIT,Lots_3ingresso,entratalong-Point*Terzentrata-2*Point,3,entratalong-Point*StopLoss-2*Point,entratalong+TakeProfit*Point,NULL,2,0,Magenta); // buono dei test //

[/CODE]

Here the trailign stop, it don't work the trail 1 e trail 2 with at the same time i control the ticket!!!

[CODE]

int TrailStop ()

{

int cnt,result,total=OrdersTotal();

double gain2=Lots_2ingresso;

double gain3=Lots_2ingresso;

int ticket,ticket2,ticket3;

for(cnt = total-1; cnt >= 0; cnt--)

{

RefreshRates();

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if ((OrderSymbol() == Symbol()) && (OrderProfit() > 0.00))

{

if (OrderType()==OP_BUY && OrderTicket()==ticket )

{

if(Bid - OrderOpenPrice() > Point * TrailingStop )

{

if(OrderStopLoss() < Bid - Point * TrailingStop)

{

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

for(cnt = total-1; cnt >= 0; cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if( OrderType()!=OP_SELL && OrderType()!=OP_BUY) //&& trail==1 && OrdersTotal() > 1 )

result =OrderDelete(OrderTicket());

}

Alert("sta facendo trail");

}

}

}

// trailing 2 parte X pip dopo

if (OrderType()==OP_BUY && OrderTicket()==ticket2)

{

if(Bid - OrderOpenPrice() > Point * Trailing2)

{

if(OrderStopLoss() < Bid - Point * TrailingStop)

{

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

}

}

}

// trailing 3 parte X pip dopo

if (OrderType()==OP_BUY )

{

if(Bid - OrderOpenPrice() > Point * Trailing3)

{

if(OrderStopLoss() < Bid - Point * TrailingStop)

{

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

}

}

}// fine trailing

 

Por favor, cambie este código EMA

Este es un excelente código de: Coders Guru. ¿Puede alguien por favor cambiar para mí. Necesito que sólo cerrar las operaciones abiertas. He creado un sistema que me dice cuando abrir las operaciones y no quieren sentarse en el equipo todo el día

con el fin de cerrar las operaciones. Gracias equipo.

 

Cambia el código por favor

Calvon:
Este es un excelente código de: Coders Guru. Puede alguien por favor cambiarlo para mí. Necesito que solo cierre las operaciones abiertas. He creado un sistema que me dice cuando abrir operaciones y no quiero sentarme en la computadora todo el día con el fin de cerrar las operaciones. Gracias equipo.

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

//| EMA_6_12.mq4 |||

//| Gurú de los codificadores ||||||||||||||||||||||

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

#property copyright "Coders Guru"

#property link "https://www.forex-tsd.com"

//---- Incluye

#include

//---- Límites de las operaciones

extern double TrailingStop = 40;

extern double TakeProfit = 1000; //cualquier número grande

extern double Lotes = 1;

extern int Slippage = 5;

//--- Opciones externas

extern int CurrentBar = 1;

extern bool UseClose = true;

//--- Configuración de los indicadores

extern int MaMode = 1; /* MODE_SMA 0 MODE_EMA 1 MODE_SMMA 2 MODE_LWMA 3 */

extern int ShortEma = 4

extern int LongEma = 8;

//--- Variables globales

int NúmeroMágico = 123430;

string ComentarioExperto = "EMA_4_8";

bool LimitPairs = false

bool LimitFrame = false

int TimeFrame = 60;

string LP[] = {"EURUSD", "USDJPY", "AUDUSD", "GBPUSD", "EURGBP", "USDCHF"}; // añadir/eliminar los paris que desea limitar.

bool Optimizar = false;

int NumberOfTries = 5;

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

int init()

{

return(0);

}

int deinit()

{

return(0);

}

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

bool isNewSymbol(string current_symbol)

{

//recorrer todos los pedidos abiertos y comparar los símbolos

int total = OrdersTotal();

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

string símbolo_seleccionado = OrderSymbol();

if (current_symbol == selected_symbol && OrderMagicNumber()==MagicNumber)

return (False);

}

return (True);

}

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

int Cruzado()

{

double EmaLongPrevious = iMA(NULL,0,LongEma,0,MaMode, PRICE_CLOSE, CurrentBar+1);

double EmaLongCurrent = iMA(NULL,0,LongEma,0,MaMode, PRICE_CLOSE, CurrentBar);

double EmaShortPrevious = iMA(NULL,0,ShortEma,0,MaMode, PRICE_CLOSE, CurrentBar+1);

double EmaShortCurrent = iMA(NULL,0,ShortEma,0,MaMode, PRICE_CLOSE, CurrentBar);

if (EmaShortPreviousEmaLongCurrent ) return (1); //tendencia alcista

if (EmaShortPrevious>EmaLongPrevious && EmaShortCurrent<EmaLongCurrent ) return (2); //tendencia a la baja

return (0); //en caso contrario

}

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

int inicio()

{

int cnt, ticket, total,n

double trend ;

if(Bars<100) {Print("barras menores de 100"); return(0);}

if(LimitFrame)

{

if(Period()!=TimeFrame) {Print("¡Este AE no funciona con este TimeFrame!"); return(0);}

}

if(LimitPairs)

{

if(AllowedPair(Symbol()) == false) {Print("¡Este AE no funciona con esta Divisa!"); return(0);}

}

//--- Condiciones de negociación

bool BuyCondition = false , SellCondition = false , CloseBuyCondition = false , CloseSellCondition = false ;

if (Crossed() == 1 )

BuyCondition = false

si (Crossed()== 2 )

SellCondition = false;

si (Cruzado ()== 1)

CloseBuyCondition = true;

si (Cruzado ()== 1)

CloseSellCondition = true;

total = OrdersTotal();

if(total < 1 || isNewSymbol(Symbol()))

{

if(BuyCondition) //<-- Condición de COMPRA

{

ticket = OpenOrder(OP_BUY); //<-- Abrir orden de COMPRA

CheckError(ticket, "BUY");

return(0);

}

if(SellCondition) //<-- Condición de VENTA

{

ticket = OpenOrder(OP_SELL); //<-- Abrir orden de VENTA

CheckError(ticket, "SELL");

return(0);

}

return(0);

}

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) //<-- Se abre una posición larga

{

if(UseClose)

{

if(CloseBuyCondition) //<-- ¡Cierre la orden y salga!

{

CloseOrder(OrderType()); return(0);

}

}

TrailOrder(OrderType()); return(0); //<-- Trailling the order

}

if(OrderType()==OP_SELL) //<-- Pasar a posición corta

{

if(UseClose)

{

if(CloseSellCondition) //<-- ¡Cierre la orden y salga!

{

CloseOrder(OP_SELL); return(0);

}

}

TrailOrder(OrderType()); return(0); //<-- Trailling the order

}

}

}

return(0);

}

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

int AbrirOrden(int tipo)

{

int ticket=0;

int err=0;

int c = 0;

if(type==OP_BUY)

{

for(c = 0 ; c < NumberOfTries ; c++)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,Ask+TakeProfit*Point,ExpertComment,MagicNumber,0,Green);

err=GetLastError();

if(err==0)

{

romper;

}

else

{

if(err==4 || err==137 ||err==146 || err==136) //Error de ocupación

{

Sleep(5000);

continuar;

}

else //error normal

{

romper;

}

}

}

}

if(type==OP_SELL)

{

for(c = 0 ; c < NumberOfTries ; c++)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,Bid-TakeProfit*Point,ExpertComment,MagicNumber,0,Red);

err=GetLastError();

if(err==0)

{

romper;

}

else

{

if(err==4 || err==137 ||err==146 || err==136) //Error de ocupación

{

Sleep(5000);

continuar;

}

else //error normal

{

romper;

}

}

}

}

return(ticket);

}

bool CerrarOrden(int tipo)

{

if(OrderMagicNumber() == MagicNumber)

{

if(type==OP_BUY)

return (OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet));

si(type==OP_SELL)

return (OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Violet));

}

}

void OrdenDeTrabajo(int type)

{

if(TrailingStop>0)

{

if(OrderMagicNumber() == MagicNumber)

{

if(type==OP_BUY)

{

if(Bid-OrderOpenPrice()>Punto*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

}

}

}

if(type==OP_SELL)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

}

}

}

}

}

}

void CheckError(int ticket, string Type)

{

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(Type + " orden abierta : ",OrderOpenPrice());

}

else Print("Error al abrir " + Type + " la orden : ", ErrorDescription(GetLastError());

}

bool AllowedPair(string pair)

{

bool result=false;

for (int n = 0 ; n < ArraySize(LP); n++)

{

if(Symbol() == LP[n])

{

result = true;

}

}

return (resultado);

}