Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1618

 
Vitaly Muzichenko #:

Puede hacerlo de esta manera, sin utilizar las bibliotecas

Gracias.

 
MakarFX #:
El mercado está cerrado, TimeCurrent() no cambia. Comprueba en crypto, funciona los fines de semana

¿Por qué hacerla depender de las garrapatas? El botón no debe depender de ellos.

 

Hola.

Quiero probar algunas estrategias, nadie las tiene desde hace más de 2 meses.

Entiendo que los volúmenes son grandes, por eso los brokers no permiten descargar. Sólo los pares básicos.

¿Tal vez alguien tiene algo en las carpetas del servidor? Al menos durante un año.

 
La cuestión está resuelta.
 
Hola! Me decidí a escribir aquí ... tal vez alguien responda!!! En CodeBase ... hace mucho tiempo fue ... fue puesto el indicador ... ni el nombre no recuerdo ... ni el autor. La esencia de la misma era esta ... Establecer manualmente la línea horizontal ... y muestra cuántas veces el precio cruzó la línea en una y otras direcciones ... y muestra las estadísticas en este precio ... Piped dos veces 66 páginas, pero no pudo encontrarlo ... ¿alguien recuerda o tiene alguna!!! ¡¡¡POR FAVOR, lo necesito mucho!!!
 
Sinax #:
Hola! Me decidí a escribir aquí ... tal vez alguien responda!!! En CodeBase ... hace mucho tiempo fue ... fue puesto el indicador ... ni el nombre no recuerdo ... ni el autor. La esencia de la misma era esta ... Establecer manualmente la línea horizontal ... y muestra cuántas veces el precio cruzó la línea en una y otras direcciones ... y muestra las estadísticas en este precio ... Piped dos veces 66 páginas, pero no pudo encontrarlo ... ¿alguien recuerda o tiene alguna!!! ¡¡¡POR FAVOR, lo necesito mucho!!!
Esto no:
?

 
Sergey Gridnev #:
Ese no:
?

No lo es... el de MT4 lo era... Gracias)))

 

¡¡¡¡Buenos días a todos!!!!

Puede por favor ayudarme a escribir el código para la rejilla EA, el principio de cierre de la rejilla es simple todas las órdenes con un beneficio en todas las órdenes con una pérdida más un beneficio del precio de equilibrio.

Estoy intentando realizar una idea para promediar y cerrar sólo las órdenes mínimas y máximas en la parrilla a un determinado nivel de drawdown, reduciendo así el nivel de drawdown.

Aquí está una parte del código para abrir órdenes de grupo:

si (CountTrade() < MaxOrders)

{

int tipo_pedido = FindLastOrderType();

if (order_type == OP_BUY)

{

precio = FindLastOrderPrice(OP_BUY);

if(Ask<= precio - (NormalizeDouble(ATR/ DivisorVolatilidad/Punto, 0)*Punto))

{

lastlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2);

ticket = OrderSend(Symbol(), OP_BUY, lastlot, Ask, slip, 0, 0, "Group Order", Magic, 0, Blue);

si (billete < 1)

Imprimir ("Error en la orden de compra");

ModificarPedidos(OP_BUY);

}

}

if (order_type == OP_SELL)

{

precio = FindLastOrderPrice(OP_SELL);

if(Oferta>= precio + (NormalizeDouble(ATR/ DivisorVolatilidad/Punto, 0)*Punto))

{

lastlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2);

ticket = OrderSend(Symbol(), OP_SELL, lastlot, Bid, slip, 0, 0, "Group Order", Magic, 0, Red);

si (billete < 1)

Imprimir ("¡Error de orden de venta!");

ModificarPedidos(OP_SELL);

}

}

}

Aquí estála parte del código donde entra el comando para modificar las órdenes. Aquí he cruzado la modificación de las órdenes por "Todas las órdenes con ganancias y todas las órdenes con pérdidas" y "Promedio de las órdenes mínimas y máximas".

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

//| Modificación de la orden |

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

void ModifyOrders(int otype)

{

doble

BuyPriceMax = 0, BuyPriceMin = 0, BuyPriceMaxLot = 0, BuyPriceMinLot = 0,

SelPriceMin = 0, SelPriceMax = 0, SelPriceMinLot = 0, SelPriceMaxLot = 0;


int

BuyPriceMaxTic = 0, BuyPriceMinTic = 0, SelPriceMaxTic = 0, SelPriceMinTic = 0;


doble

op = 0, lt = 0, order_lots = 0;


int

tk = 0, b = 0, s = 0;

precio = 0;tp = 0;


for(int i = OrdersTotal() - 1; i >= 0; i--)

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if(OrderMagicNumber() == Magic)

if(OrderSymbol() == Symbol() && OrderType() == otype)

{

op = NormalizeDouble(OrderOpenPrice(), Digits())

lt = NormalizeDouble(OrderLots(), 2);

tk = OrderTicket();

if(otype == OP_BUY)

{

b++;

if(op > BuyPriceMax || BuyPriceMax == 0)

{

BuyPriceMax = op;

ComprarPrecioMaxLote = lt;

ComprarPrecioMaxTic = tk;

}

if(op < BuyPriceMin || BuyPriceMin == 0)

{

BuyPriceMin = op;

ComprarPrecioMinLote = lt;

ComprarPrecioMinTic = tk;

}

}

if(otype == OP_SELL)

{

s++;

if(op > SelPriceMax || SelPriceMax == 0)

{

SelPriceMax = op;

SelPriceMaxLot = lt;

SelPriceMaxTic = tk;

}

if(op < SelPriceMin || SelPriceMin == 0)

{

SelPriceMin = op;

SelPriceMinLot = lt;

SelPriceMinTic = tk;

}

}

if (otype = OP_BUY || otype = OP_SELL)

{

precio += OrderOpenPrice() * OrderLots();

order_lots += OrderLots();

}

}

//*************************************************************//

double AwerageBuyPrice = 0, AwerageSelPrice = 0, avg_price = 0;

if(b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

PrecioDeCompra = NormalizeDouble((PrecioDeCompraMax*PrecioDeCompraMaxLote + PrecioDeCompraMin*PrecioDeCompraMinLote)/

(BuyPriceMaxLot + BuyPriceMinLot) + TakeProfitMinMaxOrder* Point(), Digits());

if(s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

PrecioSel = NormalizarDoble((PrecioSelMax * LoteSelMax + PrecioSelMin * LoteSelMin)/

(SelPriceMaxLot + SelPriceMinLot) - TakeProfitMinMaxOrder* Point(), Digits());

si (Reducción < ReducciónMinOrdenMax)

avg_price = NormalizeDouble(price / order_lots, Digits);

//*************************************************************//

for(int i = OrdersTotal() - 1; i >= 0; i--)

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if(OrderMagicNumber() == Magic)

if(OrderSymbol() == Symbol())

{

op = NormalizeDouble(OrderOpenPrice(), Digits())

tp = NormalizeDouble(OrderTakeProfit(), Digits())

lt = NormalizeDouble(OrderLots(), 2);

tk = OrderTicket();


if(otype == OP_BUY && b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

{

if(tk == BuyPriceMaxTic || tk = BuyPriceMinTic)

if(Oferta < Precio de compra de la oferta && tp != Precio de compra de la oferta)

if(!OrderModify(tk, op, OrderStopLoss(), AwerageBuyPrice, 0, clrRed))

Print("Error de modificación del pedido #", GetLastError());


if(tk != BuyPriceMaxTic && tk != BuyPriceMinTic && tp != 0)

if(!OrderModify(tk, op, 0, 0, 0, clrRed))

Print("Error de modificación del pedido #", GetLastError())

}

if(otype == OP_SELL && s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

{

if(tk == SelPriceMaxTic || tk = SelPriceMinTic)

if(Ask > AwerageSelPrice && tp != AwerageSelPrice)

if(!OrderModify(tk, op, OrderStopLoss(), AwerageSelPrice, 0, clrRed))

Print("Error de modificación del pedido #", GetLastError());


if(tk != SelPriceMaxTic && tk != SelPriceMinTic && tp != 0)

if(!OrderModify(tk, op, 0, 0, 0, clrRed))

Print("Error de modificación del pedido #", GetLastError());

}

si (Reducción < ReducciónMinOrdenMax)

if (otype == OP_BUY) tp = NormalizeDouble (avg_price + TakeProfitGroupOrder*Point, Digits);

if (otype == OP_SELL) tp = NormalizeDouble (avg_price - TakeProfitGroupOrder*Point, Digits);

{

if(OrderModify(OrderTicket(), OrderOpenPrice(), 0, tp, 0))

Print("¡Pedidos modificados con éxito!");

else Print("¡Error de modificación del pedido!");

}

}

}

El resultado es el siguiente: la modificación de las órdenes de grupo hasta el nivel de reducción admis ible se realiza de forma normal y después del nivel de reducción admisible se promedian y se cierran mínimas y máximas como se espera,

Pero cuando el drawdown ha disminuido, el nuevo TakeProfit no quiere ser fijado.

Aquí está el registro con los códigos de error.

Si no sabes qué hacer con este error, no te preocupes, ¡te ayudaré!

 
EVGENII SHELIPOV #:

¡¡¡¡Buenos días a todos!!!!

Utilice

 
MakarFX #:

Utilice

¿Puede ser más específico?

Razón de la queja: