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

 
Tenimagalon:
Veo que estamos teniendo una verdadera discusión. Alex, tú también estás involucrado en ella:)) Bueno, señor programador, ¿tiene usted un consenso? Mire, la función principal es cerrar órdenes del mismo tipo en función del beneficio total. Se abren 4 posiciones, 2 de ellas en EURUSD (compra y venta) y 2 de USDCHF (compra y venta).Si las órdenes de compra obtienen un beneficio las cierra, deja la orden de venta sola o deja la orden de venta sola.

Captura

double MyProfit=1000; // уровень профита
//+--------------------------------------------------------------------------------------------------------------------+
//| Expert tick function                                                                                               |
//+--------------------------------------------------------------------------------------------------------------------+
void OnTick()
  {
//---
   if(Open_Pr("",0)>MyProfit)DelOrders("",0); // закрываем покупки
   if(Open_Pr("",1)>MyProfit)DelOrders("",1); // закрываем продажи
//---
  }
//+--------------------------------------------------------------------------------------------------------------------+
//|  Суммарный профит в валюте депозита открытых позиций                                                               |
//| or_ty=0 - ордера типа BUY                                                                                          |
//| or_ty=1 - ордера типа SELL                                                                                         |
//+--------------------------------------------------------------------------------------------------------------------+
double Open_Pr(string sy="", int or_ty=0)
  { double p = 0;
   if (sy == "0") sy = Symbol();
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS)==true)
        {
         if(OrderSymbol() == sy || sy == "")
           {
            if(OrderType()==or_ty) {p+=OrderProfit()+OrderSwap()+OrderCommission();}
           }
        }
     }
   return(p);
  }
//+--------------------------------------------------------------------------------------------------------------------+
//| Функция удаления и закрытия ордеров                                                                                |
//| or_ty=0 - ордера типа BUY                                                                                          |
//| or_ty=1 - ордера типа SELL                                                                                         |
//+--------------------------------------------------------------------------------------------------------------------+
void DelOrders(string sy="", int or_ty=0)
  {
   while(true)
     {
      bool find_order=false;
      //----
      if (sy == "0") sy = Symbol();
      for(int pos=OrdersTotal()-1;pos>=0;pos--)
      if(OrderSelect(pos,SELECT_BY_POS)==true)
      if(OrderSymbol() == sy || sy == "")
        {
         find_order=true;
         //----
         if(OrderType()==or_ty)
           {
            RefreshRates(); int slip=(int)(((Ask-Bid)/Point)*2);
            if(OrderClose(OrderTicket(),OrderLots(),Bid,slip,clrBlue)==false){}
           }
         //----
         if(OrderType()==or_ty)
           {
            RefreshRates(); slip=(int)(((Ask-Bid)/Point)*2);
            if(OrderClose(OrderTicket(),OrderLots(),Ask,slip,clrRed)==false){}
           }
         Alert("Все ордера закрыты!");
        } 
      if(find_order==false) Alert("Нет ордеров!");break;
     } 
  }
//+--------------------------------------------------------------------------------------------------------------------+
 
Tenimagalon:
Veo que estamos teniendo una verdadera discusión. Alex, estás involucrado :)) Bueno, señores programadores, ¿tienen un consenso? Miren, el problema es cerrar órdenes del mismo tipo para un beneficio total. Se abren 4 posiciones, 2 de ellas en EURUSD (compra y venta) y 2 de USDCHF (compra y venta).Si las órdenes de compra obtienen un beneficio las cierra, deja la orden de venta sola o deja la orden de venta sola.

¿así? :)

1

 
MakarFX:

Captura

Ummm interesante. muchas gracias :)
 
Taras Slobodyanik:

¿así? :)


Si tiene 3 posiciones abiertas en diferentes pares, es decir, 2 Bai y una sit, entonces sí, en este caso el robot cerrará los pares cuando se alcance el beneficio total. Si intenta abrir 4 posiciones en 2 pares, nunca obtendrá el beneficio total en este caso, el experto cierra los pares de órdenes, ya sea de compra o de venta. Pero cierra la compra de EURUSD y compra de USDCHF o cualquier otro par seleccionado.
 
Taras Slobodyanik:

¿así? :)


¿Hicisteel cuadro de diálogo tú mismo o el SB?
 
Tenimagalon:
Si tiene 3 posiciones abiertas en diferentes pares, es decir, 2 de Bai y una de Venta, entonces sí, en este caso el robot cerrará las posiciones cuando se alcance el beneficio total. Si intenta abrir 4 posiciones en 2 pares, nunca obtendrá el beneficio total en este caso, el experto cierra los pares de órdenes, ya sea de compra o de venta. Pero cierra la compra de EURUSD y compra de USDCHF o cualquier otro par seleccionado.

aquí hay muchas bahías y selvas)

2

 
MakarFX:
¿Hiciste el cuadro de diálogo tú mismo o SB?

¿Hay paneles?

ps. a menos que haya objetos si lo hace

 
Taras Slobodyanik:

¿Hay paneles?

Sí, por eso lo pregunto.

Si lo ha hecho usted mismo, por favor comparta el código (colapsar, expandir, mover)

 
Taras Slobodyanik:

aquí hay muchas bahías y selvas)

Taras :) Deberías abrir 4 posiciones una por una en EUR, una por una en CHF, luego dos más, una de venta en EUR, una de venta en CHF. Y mira cuando la compra y la venta lleguen al beneficio común el bot cerrará ambas o no. Y en sus pantallas veo órdenes para un instrumento que no debería ser a priori.
 
Tenimagalon:
Taras :) Deberías abrir 4 posiciones en un solo paso. 1 larga en EUR, una larga en CHF, luego dos más, una de venta en EUR, una de venta en CHF. Y mira cuando la compra y la compra alcancen el beneficio total el bot cerrará ambas o no. Y en sus pantallas veo órdenes para un instrumento que no debería ser a priori.

agrupar los pares por compra o venta es un error

Por ejemplo, en un par (compra) podría haber una compra del dólar y en el otro par (venta) podría haber una venta del dólar.