¿Ha leído la documentación?
Parameters
ticket
[in] Índice del pedido o ticket del pedido según el segundo parámetro.
seleccionar
[in] Banderas de selección. Puede ser cualquiera de los siguientes valores:
SELECT_BY_POS - índice de la cartera de pedidos,
SELECT_BY_TICKET - índice es el ticket de la orden.
pool=MODE_TRADES
[in] Índice de pool de órdenes opcional. Se utiliza cuando el parámetro seleccionado es SELECT_BY_POS. Puede ser cualquiera de los siguientes valores:
MODE_TRADES (por defecto) - orden seleccionada del pool de órdenes (órdenes abiertas y pendientes),
MODE_HISTORY - orden seleccionada del pool histórico (órdenes cerradas y canceladas).
bool OrderSelect( int index, // index or order ticket int select, // flag int pool=MODE_TRADES // mode );
boopa26 quiere cerrar órdenes abiertas por lo que boopa elige MODE_TRADES como tercer parámetro
¿boopa26 hace SELECT_BY_POS o SELECT_BY_TICKET? boopa26 no lo sabe
SELECT_BY_POS //index inside order pool, SELECT_BY_TICKET //index is order ticket.
https://docs.mql4.com/trading/orderclose
¿como hace boopa26 sin ciclos for o ciclos while pero con condiciones if para cerrar órdenes abiertas con la función order select?
la documentación de cierre de orden requiere que se encuentre el ticket de la orden pero boopa26 hace order select para encontrar la posición de la orden no el ticket
bool OrderClose( int ticket, // ticket double lots, // volume double price, // close price int slippage, // slippage color arrow_color // color );
1. seleccionar la orden
2. cerrar la orden
no sabe como
//+------------------------------------------------------------------+ //| Moving Average.mq4 | //| Copyright 2005-2014, MetaQuotes Software Corp. | //| http://www.mql4.com | //+------------------------------------------------------------------+ #property copyright "2005-2014, MetaQuotes Software Corp." #property link "http://www.mql4.com" #property description "Moving Average sample expert advisor" #define MAGICMA 20131111 //--- Inputs input double Lots =0.1; input double MaximumRisk =0.02; input double DecreaseFactor=3; input int MovingPeriod =12; input int MovingShift =6; //+------------------------------------------------------------------+ //| Calculate open positions | //+------------------------------------------------------------------+ int CalculateCurrentOrders(string symbol) { int buys=0,sells=0; //--- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA) { if(OrderType()==OP_BUY) buys++; if(OrderType()==OP_SELL) sells++; } } //--- return orders volume if(buys>0) return(buys); else return(-sells); } //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double LotsOptimized() { double lot=Lots; int orders=HistoryTotal(); // history orders total int losses=0; // number of losses orders without a break //--- select lot size lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1); //--- calcuulate number of losses orders without a break if(DecreaseFactor>0) { for(int i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; } if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue; //--- if(OrderProfit()>0) break; if(OrderProfit()<0) losses++; } if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1); } //--- return lot size if(lot<0.1) lot=0.1; return(lot); } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ void CheckForOpen() { double ma; int res; //--- go trading only for first tiks of new bar if(Volume[0]>1) return; //--- get Moving Average ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0); //--- sell conditions if(Open[1]>ma && Close[1]<ma) { res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red); return; } //--- buy conditions if(Open[1]<ma && Close[1]>ma) { res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue); return; } //--- } //+------------------------------------------------------------------+ //| Check for close order conditions | //+------------------------------------------------------------------+ void CheckForClose() { double ma; //--- go trading only for first tiks of new bar if(Volume[0]>1) return; //--- get Moving Average ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0); //--- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue; //--- check order type if(OrderType()==OP_BUY) { if(Open[1]>ma && Close[1]<ma) { if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White)) Print("OrderClose error ",GetLastError()); } break; } if(OrderType()==OP_SELL) { if(Open[1]<ma && Close[1]>ma) { if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White)) Print("OrderClose error ",GetLastError()); } break; } } //--- } //+------------------------------------------------------------------+ //| OnTick function | //+------------------------------------------------------------------+ void OnTick() { //--- check for history and trading if(Bars<100 || IsTradeAllowed()==false) return; //--- calculate open orders by current symbol if(CalculateCurrentOrders(Symbol())==0) CheckForOpen(); else CheckForClose(); //--- } //+------------------------------------------------------------------+media móvil que utiliza el asesor experto para el ciclo de cierre de las órdenes abiertas
Creo que "boopa26" necesita hacer lo siguiente:
- Primero, "boopa26" necesita aprender lo básico de la codificación (como en C).
- Luego, "boopa26" necesita leer y seguir el libro/tutorial (aunque sea viejo y esté desactualizado).
- Al mismo tiempo, "boopa26" necesita leer toda la documentación con especial atención a las actualizaciones de MQL4 que no se mencionan en el Libro/Tutorial.
- Luego "boopa26" necesita estudiar varios ejemplos de código para Indicadores, Asesores Expertos (EAs) y Scripts en la Base de Código del usuario.
- Entonces "boopa26" puede empezar a hacer sus propios Indicadores, pero muy simples, y poco a poco construir sobre ellos hasta que sea completamente capaz de entender y hacer Indicadores más complejos.
- Entonces "boopa26" puede empezar a hacer sus propios, pero muy simples EAs y poco a poco construir sobre ellos hasta que sea totalmente capaz de entender y hacer EAs más complejos.
"boopa26" también debe aprender una lección muy importante, que "boopa26" no debe saltarse todos los pasos necesarios, porque de lo contrario "boopa26" sólo estará perdiendo el tiempo de todos, y en lugar de un "hermoso pastel", todo "boopa26" tendrá es "carbón quemado".
Creo que "boopa26" necesita hacer lo siguiente:
- Primero, "boopa26" necesita aprender lo básico de la codificación (como en C).
- Luego, "boopa26" necesita leer y seguir el libro/tutorial (aunque sea viejo y esté desactualizado).
- Al mismo tiempo, "boopa26" necesita leer toda la documentación con especial atención a las actualizaciones de MQL4 que no se mencionan en el Libro/Tutorial.
- Luego "boopa26" necesita estudiar varios ejemplos de código para Indicadores, Asesores Expertos (EAs) y Scripts en la Base de Código del usuario.
- Entonces "boopa26" puede empezar a hacer sus propios Indicadores, pero muy simples, y poco a poco construir sobre ellos hasta que sea totalmente capaz de entender y hacer Indicadores más complejos.
- Entonces "boopa26" puede comenzar a hacer su propio, pero muy simple EAs y poco a poco construir sobre ellos hasta que plenamente capaz de entender y hacer más complejos EAs.
"boopa26" también debe aprender una lección muy importante, que "boopa26" no debe saltarse todos los pasos necesarios, porque de lo contrario "boopa26" sólo estará perdiendo el tiempo de todos, y en lugar de un "hermoso pastel", todo lo que tendrá es "carbón quemado".
1. no necesita conocimientos de c. mql4 es diferentes funciones
2. leer el libro ya
3. leer la documentación ya
4. código escrito ya
5. ?
6. ?
boopa26 no hace perder el tiempo a la gente
Profesor de la FMIC que enseña a "boopa26" a hacer pasteles de carbón
Clase de pastel de carbón FMIC
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
boopa26 puede escribir el código de envío de la orden pero no puede escribir la función de selección de la orden para cerrar las órdenes. quiere escribir la función de selección de la orden para cerrar las órdenes sin ciclos for o ciclos while. boopa26 quiere escribir la función de selección de la orden para cerrar las órdenes con condiciones if pero boopa26 no entiende cómo montar la función de selección de la orden para cerrar las órdenes
ejemplo de envio de orden de compra
if(OrdersTotal()==0)OrderSend(Symbol(),OP_BUY,.1,Ask,3,0,0,NULL,9,0,clrNONE);
ejemplo de order select. boopa26 no entiende
OrderSelect(int index,int select,int pool)
¿qué es int index?
¿qué es int select?
¿qué es int pool?
¿Cómo funciona OrderSelect?