[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 64

 
alsu:
Você se preocupa em procurar no terminal, o RSI "em código" está lá como padrão.
Se você não o tem, aqui está.
Arquivos anexados:
rsi.mq4  3 kb
 

Como faço para bloquear o menu no MetaTrader4? Às vezes fica tão espalhado por toda a tela que é assustador. Bem, a forma como a barra de tarefas é fixada no Windows, talvez as janelas também sejam fixadas aqui?

 

Olá, você poderia me dizer, por favor

Eu tenho este código agora:

         if(M_1<NizUroven && M_0 >=NizUroven)
                {
 for(int i=OrdersTotal()-1;i>=0;i--)
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
     {     CloseOrder();
     }
   Lot2=GetLot(MaxRisk);
NewOrder(OP_SELL,Lot2);
}


             if(M_1>VerhUroven && M_0<=VerhUroven)
               {
 for(int j=OrdersTotal()-1;j>=0;j--)
   if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES))
     {    CloseOrder();
     }
Lot2=GetLot(MaxRisk);
 NewOrder(OP_BUY,Lot2);
}



como posso simplificá-lo assim?

 for(int i=OrdersTotal()-1;i>=0;i--)
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
     {     CloseOrder(); 
     }
   Lot2=GetLot(MaxRisk);

         if(M_1<NizUroven && M_0 >=NizUroven) 
                { NewOrder(OP_SELL,Lot2);
}
             if(M_1>VerhUroven && M_0<=VerhUroven)
               {  NewOrder(OP_BUY,Lot2);
}

 

E outra pergunta, há seis meses eu venho otimizando e obtive estes resultados. Não está claro por que muitos passes têm zeros (sem acordos)?

 
monopolie:

Como faço para bloquear o menu no MetaTrader4? Às vezes fica tão espalhado por toda a tela que é assustador. Bem, a forma como a barra de tarefas é fixada no Windows, talvez as janelas também sejam fixadas aqui?

Eles dizem que não é um bug, mas uma característica))
 
monopolie:

Como faço para bloquear o menu no MetaTrader4? Às vezes fica tão espalhado por toda a tela que é assustador. Bem, a forma como a barra de tarefas é fixada no Windows, talvez as janelas também sejam fixadas aqui?


Clique com o botão direito do mouse no menu - "Colunas de tamanho automático" e mova-se como quiser.
 
griha:

Olá, você poderia, por favor

meu código é assim:



como simplificá-lo por este princípio?


esta parte:

for(int j=OrdersTotal()-1;j>=0;j--)
   if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES))
     {    CloseOrder();
     }
Lot2=GetLot(MaxRisk);
 NewOrder(OP_BUY,Lot2);

colocar em uma função:

ff(int cmd)
{
   for(int j=OrdersTotal()-1;j>=0;j--)
      if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES))
      {
         CloseOrder();
      }
   double Lot2=GetLot(MaxRisk);
   NewOrder(cmd,Lot2);
}

e depois:

if(M_1<NizUroven && M_0 >=NizUroven)
{
   ff(OP_SELL);
}

if(M_1>VerhUroven && M_0<=VerhUroven)
{
   ff(OP_BUY);
}

é como um exemplo, com visibilidade ou transferência para a função da variável MaxRisk - descubra você mesmo

 
Boa tarde!
Encontrei um problema ao abrir um certo número(definido pelo usuário) de pedidos.
Eu escrevi um pequeno código para resolver este problema.
Mas há momentos em que um número arbitrário de ordens é aberto, geralmente perto do final do teste.

Abaixo está o próprio código.

extern string Kolichestvo_orderov = "Количество единовременно открытых ордеров";
extern int OrederBuy = 1;
extern int OrederSell = 1;


int OrdS=1,OrdB=1,ticketBuy,ticketSell,lastticketSell=0,lastticketBuy=0;

//========================================================================================================//     
                                  //---- Открытие ордеров SELL ----//
//========================================================================================================//

if(OrdS<=OrederSell)
  { //----- start
 
if(trendDn==true && SthFast>88.2 && SthSlow<38.2)
     {
ticketSell=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,0,magick,0,Blue);OrdS++; //--- Если ордер открыт параметр OrdS увеличиваю 
     }
   } //-----end
          
//========================================================================================================//  
                                   //----Открытие ордеров BUY ----//
//========================================================================================================//  

if(OrdB<=OrederBuy)
  { //-----start

if(trendUp==true && SthFast<11.8 && SthSlow>61.8)
      {
ticketBuy=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,0,magick,0,Red);OrdB++; //--- Если ордер открыт параметр OrdB увеличиваю
      }

  } //------end
  

//------------------------------- Подсчет количества ордеров BUY & SELL ----------------------------------//
   
  if(ticketBuy<=OrdersHistoryTotal()) //------ проверка тикетов тех  ордеров которые уже закрыты
   {
  for(int ordBuy=lastticketBuy;ordBuy<=OrdersHistoryTotal();ordBuy++) //--- перебор новых закрытых ордеров
    {
     if(OrderSelect(ordBuy,SELECT_BY_POS,MODE_HISTORY)==true){if(OrderType()==OP_BUY)OrdB--;lastticketBuy=ticketBuy;} //--- если добавился новый закрытый ордер бай, то параметр OrdB уменьшаю
    }
   }
  
  //-----
    
 if(ticketSell<=OrdersHistoryTotal()) //------ проверка тикетов тех  ордеров которые уже закрыты
  {
 for(int ordSell=lastticketSell;ordSell<=OrdersHistoryTotal();ordSell++) //--- перебор новых закрытых ордеров
     {
     if(OrderSelect(ordSell,SELECT_BY_POS,MODE_HISTORY)==true){if(OrderType()==OP_SELL)OrdS--;lastticketSell=ticketSell;} //--- если добавился новый закрытый ордер селл, то параметр OrdS уменьшаю

Se você tem uma solução mais simples, eu ficaria feliz em receber comentários.

 

Olá a todos!

Você pode me dizer se é possível exibir texto em um gráfico, como

   string mytext = "Hello from programmer!";
   ObjectSetText("mycomment", mytext, 10, "Arial", Gray);
     if (ObjectFind("mycomment") == -1) {
         ObjectCreate("mycomment", OBJ_LABEL, 0, 0, 0);
         ObjectSet("mycomment", OBJPROP_CORNER, 2);
         ObjectSet("mycomment", OBJPROP_XDISTANCE, 5);
         ObjectSet("mycomment", OBJPROP_YDISTANCE, 7);}

saída como uma função separada para que possa ser chamada de alguma forma:

mycomment("Hello from programmer!")