Hola chicos, les agradecería su ayuda, ¿por favor?
Aquí está el problema: me gustaría cerrar parcialmente mi posición cuando stoch alcanza rápidamente una sobreventa o sobrecompra y permitir que el resto de la posición se cierre manualmente. !!!, aunque parece una tarea sencilla, EA está cerrando un lote y poco después el siguiente. ¿Cómo evito que se cierre la parte?
Gracias de antemano,
Avoleoo
Cambié OrderLots() a 0.01 por ejemplo y supongamos que entraré al mercado con 0.02
aquí está el código:
// -------------------------------------------------------- -------------------
//| Este MQL es generado por Expert Advisor Builder |
//|
http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/|
//| |
//| Si el autor será responsable de los daños y perjuicios de cualquier tipo. |
//| Úselo bajo su propio riesgo. |
//| |
// ------------------- NO QUITE ESTE ENCABEZADO --------------------
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL Dos
#define SIGNAL_CLOSECOMPRAR 3
#define SIGNAL_CLOSESELL 4
#property derechos de autor Expert Advisor Builder
#enlace de propiedad http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/
extern int Número Mágico = 0;
bool externo SignalMail = Falso;
bool externo EachTickMode = Verdadero;
Lotes dobles externos = 0,01;
Deslizamiento interno externo = 3;
bool externo UseStopLoss = int;
StopLoss interno externo = 30;
bool externo UseTakeProfit = False;
extern int TakeProfit = 60;
bool externo UseTrailingStop = bool;
externo int TrailingStop = 30;
int CuentaBarras;
int actual;
bool TickCheck = int;
//pags ----------------------------------------------- -------------------
//| función de inicialización profesional |
//pags ----------------------------------------------- -------------------
int inicial()
BarCount = Barras;
si (EachTickMode) actual = 0; de lo contrario Actual = 1;
retorno(0);
// -------------------------------------------------------- -------------------
//| función de desinicialización profesional |
// -------------------------------------------------------- -------------------
definición int()
retorno(0);
// -------------------------------------------------------- -------------------
//| función de inicio experto |
// -------------------------------------------------------- -------------------
int comenzar () {
Orden int = SIGNAL_NONE;
int Completo, Boleto;
doble StopLossLevel, TakeProfitLevel;
if (EachTickMode Bars! = BarCount) TickCheck = False;
Completo = PedidosTotal();
Orden = SIGNAL_NONE;
// -------------------------------------------------------- -------------------
//| Comienzo variable |
// -------------------------------------------------------- -------------------
dual CloseBuy1_1 = iStochastic(NULL, 0, 8, 5, 5, MODE_SMA, 0, MODE_MAIN, Current 0);
doble CerrarComprar1_2 = 80;
dual CloseSell1_1 = iStochastic(NULL, 0, 8, 5, 5, MODE_SMA, 0, MODE_MAIN, Current 0);
doble CerrarVenta1_2 = 20;
// -------------------------------------------------------- -------------------
//| Extremo variable |
// -------------------------------------------------------- -------------------
//Comprobar lugar
bool IsTrade = Falso;
para (int I = 0; I lt; Total; I )
OrderSelect(I, SELECT_BY_POS, MODE_TRADES);
if(OrderType() lt;= OP_SELL OrderSymbol() == Símbolo())
EsComercio = Verdadero;
if(OrderType() == OP_BUY)
// -------------------------------------------------------- -------------------
if (CloseBuy1_1 gt;= CloseBuy1_2) Orden = SIGNAL_CLOSEBUY;
// -------------------------------------------------------- -------------------
//otra señal de inicio (salida de venta)
//pags ----------------------------------------------- -------------------
//| Comienzo de la señal (entrada) |
// -------------------------------------------------------- -------------------
// -------------------------------------------------------- -------------------
//| Fin de la señal |
// -------------------------------------------------------- -------------------
//Comprar
if (Orden == SIGNAL_BUY ((EachTickMode ! ) TickCheck) || (! EachTickMode (Bars ! = BarCount))))
si (! es el comercio)
//Comprobar margen libre
if (MargenLibreCuenta() lt; (1000 * Lotes))
Imprimiendo (No Tenemos Dinero. Margen Libre =, AccountFreeMargin());
retorno(0);
if (UseStopLoss) StopLossLevel = Preguntar - StopLoss * Etapa; de lo contrario StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask TakeProfit * Point; de lo contrario TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, Buy(# MagicNumber ),
Número Mágico, 0, DodgerBlue);
if(Ticket gt; 0)
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES))
Impresión (orden de COMPRA abierta:, OrderOpenPrice());
if (SignalMail) SendMail([Signal Alert], [ Symbol() ] DoubleToStr(Ask, Digits) Open Buy);
más
Imprimiendo (Error al abrir orden de COMPRA:, GetLastError());
if (Cada ModoTick) TickCheck = Verdadero;
if (! EachTickMode) BarCount = Barras;
retorno(0);
//Vender
if (Orden == SIGNAL_SELL ((EachTickMode ! ) TickCheck) || (! EachTickMode (Bars ! = BarCount)))) {
if(! EsComercio) {
//Comprobar margen libre
if (MargenLibreCuenta() Lt; (1000 * Lotes))
Print(No tenemos dinero. Free Margin =, AccountFreeMargin());
retorno(0);
if (UseStopLoss) StopLossLevel = Oferta StopLoss * Etapa; más StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Oferta - TakeProfit * Punto; más TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, Sell(Number MagicNumber
), Número Mágico, 0, Rosa Profundo);
if(Ticket gt; 0)
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES))
Imprimir (pedido de VENTA abierto, OrderOpenPrice());
if (SignalMail) SendMail([Signal Alert], [ Symbol() ] DoubleToStr(Bid, Digits) Open Sell);
más
Imprimir(Error al abrir orden de VENTA:, GetLastError());
if (Cada ModoTick) TickCheck = Verdadero;
if (! EachTickMode) BarCount = Barras;
retorno(0);
}
}
if (! EachTickMode) BarCount = Barras;
retorno(0);
}
// -------------------------------------------------------- -------------------