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

 
Roman Shiredchenko:

não é uma brincadeira e não é assim que eu troço.

Veja a foto cuidadosamente antes de publicar heresias.

O tema é tão banal que é repugnante lê-lo... depois faltam as imagens, depois a otimização.

Amplie a janela e você ficará feliz. Não confundir qual janela expandir.

 
ilvic:

O problema é a resolução da tela.

Muito obrigado, começou a adivinhar olhando as fotos...

 
ilvic:

O problema é a resolução da tela.

Mais uma vez, obrigado. Tudo funciona, o problema estava na exibição do tamanho do texto (fonte)


 
Boa tarde, ajude a encontrar um bug no código do indicador , os comentários estão no código , azul não quer desenhar como eu quero escrever. Idéia para encontrar o menor valor de Baixo valor no tempo, desde a última atualização até a última atualização Linha verde alta. Obrigado.
{

if(prev_calculated<1) limit=rates_total-1;
if(prev_calculated>0)limit=rates_total-prev_calculated;
for(i=limit; i>=0; i--)
{
yesterday_weekday = TimeDayOfWeek(iTime(Symbol(),0,i+1))-TimeDayOfWeek(iTime(Symbol(),0,i));
if (yesterday_weekday !=0) // находим открытие нового дня
{

BH=open[i];BL=open[i]; // переменные ХАЙ ЛОУ  
Closebar=open[i]; // искомая переменная 
NHT=time[i]; // переменная время последнего обновления ХАЙ
PHT=time[i]; // переменная время предпоследнего обновления хай
}
CloseD[i]=Closebar; // буфер отрисовки искомая переменная СИНИЙ ЦВЕТ
HD[i]=BH;  // буфер отрисовки ХАЙ
LD[i]=BL; // буфер отрисовки ЛОУ

if (Fun_New_Bar==false)  // находим закрытие бара                             
    {                                             
     if (Prev_Time==0) 
     {
        Prev_Time=time[i];
        Fun_New_Bar=false;
     }
   if(Prev_Time!=time[i])                        
     {
      Prev_Time=time[i];

if(iHigh(NULL,0,i+1)>BH) // проверяем есть ли обновление Хай
{
C=PHT; // присвоим переменной время предыдущего бара обновления Хай 
NHT=iTime(NULL,0,i+1); // находим время обновления Хай
Pshift=iBarShift(NULL,0,C); // находим индекс бара предыдущего обновления Хай 
P=iLow(NULL,0,iLowest(NULL,0,MODE_LOW,Pshift,i+1)); // находим наименьшее значение Лоу от обновления Хай настоящего до предыдущего (искомая величина) 
BH=iHigh(NULL,0,i+1); // прорисовываем Хай новый
Closebar=P; // прорисовываем искомую величину 
PHT=NHT; // сохраняем время последнего обновления Хай
} 
     
                             
      Fun_New_Bar=false; // ждем закрытие нового бара                           
     }
     }

Comment( NHT, C , Pshift ); // проверка

if(low[i]<BL)  BL=low[i]; // в процессе

}
   return(rates_total);
  }


 
Boa tarde! Ajuda na EA! Preciso fazer uma parada de trilha normal, que funciona em etapas, e move SL para Breakeven!!! Isto é: Uma ordem é aberta e depois de 25 (figurativamente falando) pontos na direção certa, SL éimediatamente ajustado aopreço de abertura!

eu tenho este código, mas ele segue o preço e pára ao preço aberto!


bool tkt;
  for (int i = 0; i < OrdersTotal(); i++) 
  {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
      if (OrderType() == OP_BUY)
      {
      if(NormalizeDouble(OrderStopLoss(), Digits) < NormalizeDouble(OrderOpenPrice(), Digits) && 
      NormalizeDouble(Ask - OrderStopLoss(), Digits) > NormalizeDouble(TrailingStop * Point, Digits))
      tkt = OrderModify(OrderTicket(), 0, Ask - TrailingStop * Point, OrderTakeProfit(), OrderExpiration(), clrNONE);
      Print("Error setting Buy trailing stop: ", GetLastError());
      }
         
      if (OrderType() == OP_SELL)
      {
      if(NormalizeDouble(OrderStopLoss(),Digits) > NormalizeDouble(OrderOpenPrice(), Digits) && 
      NormalizeDouble(OrderStopLoss() - Bid, Digits) > NormalizeDouble(TrailingStop * Point, Digits))
      tkt = OrderModify(OrderTicket(), 0, Bid + TrailingStop * Point, OrderTakeProfit(), OrderExpiration(), clrNONE);
      Print("Error setting Sell trailing stop: ", GetLastError());
      }  
           }
   } 
Há uma semana que estou batendo minha cabeça contra a parede!
 
ponochka:
Boa tarde! Ajuda na EA! Preciso fazer uma parada de trilha normal, que funciona em etapas, e move SL para Breakeven!!! Isto é: Uma ordem é aberta e depois de 25 (figurativamente falando) pontos na direção certa, SL éimediatamente ajustado aopreço de abertura!

eu tenho este código, mas ele segue o preço e pára ao preço aberto!


Há uma semana que estou batendo minha cabeça contra a parede!

Por favor, escreva por mim mesmo e use-os também.

//======= Глобальные переменные

extern bool   UseBreakeven       = true;          //Использование безубытка
extern int    Breakeven          = 20;            //Профит безубытка
extern int    ValueBreak         = 3;             //Безубыток
extern bool   UseTrailingStop    = true;          //использование трейлинг стопа
extern int    TrailingStop       = 40;            //Величина трала
extern int    TrailingStep       = 3;             //Шиг трала 

double SL, TP;

//нннннннннннн Функция перевода в безубыток нннннннннннннннннннннннннннннннннннннннннннн
void BreakevenModify()
{ 
   int    i;
   double sl;
   
   int total = OrdersTotal();
   
   if(UseBreakeven)
   {
      for(i = total-1; i >= 0; i--)
      {
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         { 
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) 
            {
               if(OrderType() == OP_BUY)
               {
                  if(OrderStopLoss() < OrderOpenPrice() && (OrderOpenPrice() + Breakeven*point) <= Bid)
                  {   
                     sl = NormalizeDouble(OrderOpenPrice() + ValueBreak*point, Digits);
                     
                     OrderModifyX(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, 0);
                  } 
               }
            }
         }
      
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         { 
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) 
            { 
               if(OrderType() == OP_SELL)
               {
                  if(OrderStopLoss() > OrderOpenPrice() && (OrderOpenPrice() - Breakeven*point) >= Ask)
                  { 
                     sl = NormalizeDouble(OrderOpenPrice() - ValueBreak*point, Digits);
                     
                     OrderModifyX(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, 0);
                  } 
               }
            }
         }
      }
   }
}
//нннннннннннн Функция трейлинг стопа ннннннннннннннннннннннннннннннннннннннннннннннннннннн
void TrailingStopLoss()
{   
   int    i;
   double sl;
   
   int total = OrdersTotal();
   
   if(UseTrailingStop)
   {
      for(i = total-1; i >= 0; i--)
      {
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
            {
               if(OrderType() == OP_BUY) 
               {
                  if((OrderOpenPrice() + TakeProfit3*point) <= Bid)
                  {
                     if(OrderStopLoss() > OrderOpenPrice() && OrderStopLoss() + (TrailingStop + TrailingStep)*point <= Bid)
                     {
                        sl = NormalizeDouble(OrderStopLoss() + TrailingStep*point, Digits);
                        
                        OrderModifyX(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, 0);
                     } 
                  }  
               }
            }
         }
      
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
            {     
               if(OrderType() == OP_SELL)
               {
                  if((OrderOpenPrice() - TakeProfit3*point) >= Ask)
                  {
                     if(OrderStopLoss() < OrderOpenPrice() && OrderStopLoss() - (TrailingStop + TrailingStep)*point >= Ask)
                     {
                        sl = NormalizeDouble(OrderStopLoss() - TrailingStep*point, Digits);
                        
                        OrderModifyX(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, 0);
                     } 
                  }  
               } 
            }
         }
      }
   }
}


Escrevi para mim mesmo e os utilizo.

 
Youri Lazurenko:

Por favor, eu o escrevi para mim mesmo e o utilizo para mim mesmo.

isto é somente para o testador :-)

Na vida real, é muito perigoso arrastá-la com base no Bid, Ask

 
Rustam Bikbulatov:
Oi, pessoal. Você pode me dizer por que tenho algumas dúzias de pedidos que estão fechados em ordem escalonada ou de outra forma? Como devo consertá-lo? Existe um método para fechá-los todos de uma só vez?

Fechar no final, não no início.

for(int i=OrdersTotal()-1; i>=0; i--)
Ou eu tenho que fazer minha própria lista e usá-la para fechar?
 
Taras Slobodyanik:

fechar no final, não no início

ou você faz sua própria lista e a utiliza para fechar?

como você faz uma lista?

 
Oi, pessoal. Você pode me dizer por que tenho algumas dúzias de pedidos fechando em ordem escalonada ou de outra forma? Como posso consertá-lo? Existe um método para fechá-los todos de uma só vez?
void CloseOrdB(){  
     for(int i=0;i<OrdersTotal();i++){
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
     if(OrderSymbol()==Symbol() && OrderMagicNumber()==456){    
if(OrderClose(OrderTicket(),OrderLots(),Bid,3,clrBlue)){CloseOrdB();}}}} }
Razão: