Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1396

 
Tenimagalon:
Vejo que estamos tendo uma discussão real. Alex, você também está envolvido nisso:) Bem, Sr. programadores, vocês têm um consenso? Olhe, a função principal é fechar ordens do mesmo tipo com base no lucro total. 4 posições são abertas, 2 delas em EURUSD (compra e venda) e 2 de USDCHF (compra e venda).Se as ordens de compra tiverem lucro, ela as fecha, deixa a ordem de venda em paz ou deixa a ordem de venda em paz.

Apanhe

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:
Vejo que estamos tendo uma discussão real. Alex, você está envolvido :)) Bem, senhores programadores, vocês têm um consenso? O problema é fechar pedidos do mesmo tipo para um lucro total. 4 posições estão abertas, 2 de EURUSD (compra e venda) e 2 de USDCHF (compra e venda).Se as ordens de compra tiverem lucro, ela as fecha, deixa a ordem de venda em paz ou deixa a ordem de venda em paz.

como esta? :)

1

 
MakarFX:

Apanhe

Ummm interessante. muito obrigado :)
 
Taras Slobodyanik:

como esta? :)


Se você tiver 3 posições abertas em pares diferentes, ou seja, 2 Bai e uma sentada, então sim, neste caso o robô fechará os pares quando o lucro total for alcançado. Se você tentar abrir 4 posições em 2 pares, nunca obterá o lucro total neste caso, o especialista fecha os pares de pedidos, seja comprando ou vendendo. Mas ele fecha a compra de EURUSD e compra USDCHF ou qualquer outro par selecionado.
 
Taras Slobodyanik:

como esta? :)


Você mesmo feza caixa de diálogo ou a SB?
 
Tenimagalon:
Se você tiver 3 posições abertas em pares diferentes, ou seja, 2 Bai e uma Sell, então sim, neste caso o robô fechará as posições quando o lucro total for alcançado. Se você tentar abrir 4 posições em 2 pares, nunca obterá o lucro total neste caso, o especialista fecha os pares de pedidos, seja comprando ou vendendo. Mas ele fecha a compra de EURUSD e compra USDCHF ou qualquer outro par selecionado.

aqui há muitas baías e eus)

2

 
MakarFX:
Você mesmo fez a caixa de diálogo ou a SB?

Existem painéis?

ps., a menos que haja objetos se você fizer

 
Taras Slobodyanik:

Existem painéis?

Sim, é por isso que eu estou perguntando.

Se você mesmo fez isso, por favor, compartilhe o código (colapso, expansão, mudança)

 
Taras Slobodyanik:

aqui há muitas baías e eus)

Taras :) Você deve abrir 4 posições uma por uma em EUR, uma por uma em CHF, depois mais duas, uma venda em EUR, uma venda em CHF. E veja quando comprar e vender atingir o lucro comum o bot fechará as duas ou não. E em suas telas eu vejo ordens para um instrumento que não deveria ser a priori.
 
Tenimagalon:
Taras :) Você deve abrir 4 posições em uma etapa. 1 longo em EUR, 1 longo em CHF, depois mais duas, uma venda em EUR, uma venda em CHF. E olhe quando comprar e comprar atingir o lucro total o bot fechará as duas ou não. E em suas capturas de tela vejo ordens para um instrumento, que não deve ser a priori.

agrupar pares por compra ou venda é errado

Por exemplo, em um par (comprar) poderia haver uma compra do dólar e em outro par (vender) poderia haver uma venda do dólar.

Razão: