Link_x: Hola! ¿Existe una función de este tipo en la función "Kim" que calcule la cantidad de beneficios de la última orden abierta?
No lo he encontrado, ahora estoy desconcertando con una función casera que calcula el margen de beneficio de la última orden abierta.
OrderProfit()
Si necesita exactamente la última orden abierta, entonces recorra todas las órdenes y elija la que sea la más reciente, luego utilice la función anterior, que le devolverá el beneficio neto de esta orden
Si necesita exactamente la última orden en abrirse, entonces recorra todas las órdenes y elija la que tenga la última hora de apertura, luego utilice la función anterior, que le devolverá el beneficio neto de esta orden
Cómo consigo una respuesta justo a tiempo, justo en el momento en que encuentro una solución. :)
Ekburg К сожалению времени и возможности написать Вам готовый код нет, так как я на работе нахожусь))
No se busca por el historial, sino por las posiciones actuales, aquí hay una cadena lógica en la que se puede intentar escribir código:
[bloque de trabajo con muwings y realización de un pedido]
1 recordar el billete y el número mágico del pedido realizado
2 . controlar el número de órdenes y si no hay órdenes en el mercado (significa que nuestra orden se ha cerrado), entonces pasamos al punto3 o controlamos esta orden concreta hasta que su hora de cierre sea superior a cero, en cuyo caso excluimos los puntos 3 y 4
3 encontrar nuestra orden
4 averiguar si está cerrado
5 averiguar cómo se cerró
6 si se cerró a través de un stop, establecer otra orden diferente a ésta en la dirección
//+------------------------------------------------------------------+//| 123.mq4 |//| Copyright 2014, MetaQuotes Software Corp. |//| http://www.metaquotes.net |//+------------------------------------------------------------------+#property copyright"Copyright 2014, MetaQuotes Software Corp."#property link"http://www.metaquotes.net"externdouble Lots = 0.1;
externdouble TakeProfit = 100;
externdouble StopLoss = 100;
externdouble TrailingStop = 50;
externdouble Margincutoff = 100;
externdouble MagicNumber = 12345;
externdouble TradeSizePercent = 5;
externint Slippage = 10;
//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
int Crossed (double line1, double line2)
{
staticint last_direction=0;
staticint current_direction=0;
if (line1>line2)current_direction=1;// пересечение вверхif (line1<line2)current_direction=2;// пересечение внизif (current_direction!=last_direction)//изменения произошли
{
last_direction=current_direction;
return(last_direction);
}
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
int cnt, ticket, total, totalhistory, memoryticket;
double shortEMA, longEMA;
if(Bars<100)
{
Print("Bars less than 100");
return(0);
}
shortEMA=iMA(NULL,0,8,0,MODE_EMA,PRICE_CLOSE,0);
longEMA=iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);
int isCrossed=Crossed(shortEMA, longEMA);
//----
total=OrdersTotal();
if(total<1)
{
// нет открытых ордеровif(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
// проверяем пересечение МА для открытия позиции на покупкуif(isCrossed==1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,"МА",12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
memoryticket= OrderTicket();// запомнили тикетPrint("BUY order opened : ",OrderOpenPrice());
}
elsePrint("Error opening BUY order : ",GetLastError());
return(0);
}
//проверяем пересечение МА для открытия позиции на продажуif(isCrossed==2)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,"MA",12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
memoryticket= OrderTicket();// запомнили тикетPrint("SELL order opened : ",OrderOpenPrice());
}
elsePrint("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
//----начинаем искать закрытые ордера//инициализация параметровint old_order_type;
RefreshRates();
//нет открытых ордеров - ищем в истории закрытых ордеров последний закрытый именно этим советником ордер for ( totalhistory = OrdersHistoryTotal() - 1; totalhistory >= 0; totalhistory-- )
{
if ( OrderSelect(totalhistory, SELECT_BY_TICKET, MODE_HISTORY) && OrderTicket() == memoryticket && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() )
{
old_order_type = OrderType();
if ( OrderProfit()<0 ) //последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком
{
break; //прекращаем поиск
}
}
}
//если раньше покупали, то теперь продаемif ( old_order_type == OP_BUY )
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,"MA",12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
memoryticket= OrderTicket();// запомнили тикетPrint("SELL order opened : ",OrderOpenPrice());
}
elsePrint("Error opening SELL order : ",GetLastError());
return(0);
}
//если раньше продавали, то теперь покупаемif ( old_order_type == OP_SELL )
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,"МА",12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
memoryticket= OrderTicket();// запомнили тикетPrint("BUY order opened : ",OrderOpenPrice());
}
elsePrint("Error opening BUY order : ",GetLastError());
return(0);
}
return(0);
}
//+------------------------------------------------------------------+
Esto es lo que tengo. Realmente abre 3 lotes. Estoy realmente jodido. ¿Puede corregir el código? ¿Qué pasa?
Estoy harto de hacer estas preguntas (increíblemente nerviosas, pi****, lo siento (malditas variables que no puedo encontrar (sobre todo molesto, lo que no puedo encontrar yo mismo)).
¿Qué variable es la responsable del valor del precio actual? He buscado en la documentación, no hay nada excepto Bid, Ask, POINT_HIGH, POINT_LOW. ¿Existe esa variable?
Link_x: Estoy harto de hacer estas preguntas (increíblemente nerviosas, pi****, lo siento (malditas variables que no puedo encontrar (sobre todo molesto, lo que no puedo encontrar yo mismo)).
¿Qué variable es la responsable del valor del precio actual? He buscado en la documentación, no hay nada excepto Bid, Ask, POINT_HIGH, POINT_LOW. ¿Existe esa variable?
¿Se ha dado cuenta de cómo cambia el precio en la ventana "Market Watch"? Allí puede ver los precios de compra y venta. El primero se utiliza para vender y el segundo para comprar.
khorosh: ¿Se ha fijado en cómo cambia el precio en la ventana de Market Watch? Allí puede ver la oferta y la demanda, que son los precios actuales. El primero se utiliza para vender y el segundo para comprar.
Quizá deberías intentar responder a las preguntas de los demás en lugar de hacer las tuyas propias. Los beneficios son mucho mayores (hasta cierto punto), ciertamente los beneficios para uno mismo
Hola!
¿Existe una función de este tipo en la función "Kim" que calcule la cantidad de beneficios de la última orden abierta?
No lo he encontrado, ahora estoy desconcertando con una función casera que calcula el margen de beneficio de la última orden abierta.
OrderProfit()
Si necesita exactamente la última orden abierta, entonces recorra todas las órdenes y elija la que sea la más reciente, luego utilice la función anterior, que le devolverá el beneficio neto de esta orden
OrderProfit()
Si necesita exactamente la última orden en abrirse, entonces recorra todas las órdenes y elija la que tenga la última hora de apertura, luego utilice la función anterior, que le devolverá el beneficio neto de esta orden
Cómo consigo una respuesta justo a tiempo, justo en el momento en que encuentro una solución. :)
¡Pero gracias de todos modos!
Ekburg К сожалению времени и возможности написать Вам готовый код нет, так как я на работе нахожусь))
No se busca por el historial, sino por las posiciones actuales, aquí hay una cadena lógica en la que se puede intentar escribir código:
[bloque de trabajo con muwings y realización de un pedido]
1 recordar el billete y el número mágico del pedido realizado
2 . controlar el número de órdenes y si no hay órdenes en el mercado (significa que nuestra orden se ha cerrado), entonces pasamos al punto3 o controlamos esta orden concreta hasta que su hora de cierre sea superior a cero, en cuyo caso excluimos los puntos 3 y 4
3 encontrar nuestra orden
4 averiguar si está cerrado
5 averiguar cómo se cerró
6 si se cerró a través de un stop, establecer otra orden diferente a ésta en la dirección
Esto es lo que tengo. Realmente abre 3 lotes. Estoy realmente jodido. ¿Puede corregir el código? ¿Qué pasa?
¿Qué variable es la responsable del valor del precio actual?
He buscado en la documentación, no hay nada excepto Bid, Ask, POINT_HIGH, POINT_LOW.
¿Existe esa variable?
Estoy harto de hacer estas preguntas (increíblemente nerviosas, pi****, lo siento (malditas variables que no puedo encontrar (sobre todo molesto, lo que no puedo encontrar yo mismo)).
¿Qué variable es la responsable del valor del precio actual?
He buscado en la documentación, no hay nada excepto Bid, Ask, POINT_HIGH, POINT_LOW.
¿Existe esa variable?
Qué oportuno es obtener una respuesta, justo cuando encuentro una solución. :)
¿Se ha fijado en cómo cambia el precio en la ventana de Market Watch? Allí puede ver la oferta y la demanda, que son los precios actuales. El primero se utiliza para vender y el segundo para comprar.
¡Olvida una cosa tan pequeña!
La solución es: "No te apresures a preguntar". Y, teniendo en cuenta que no siempre se obtienen respuestas competentes... :)))
¡¡¡Así es!!!
¡¡¡Olvidé una cosa tan pequeña!!!
Sí, sí. :)
Quizá deberías intentar responder a las preguntas de los demás en lugar de hacer las tuyas propias. Los beneficios son mucho mayores (hasta cierto punto), ciertamente los beneficios para uno mismo