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

 
Порт-моне тв:

Alguém pode me ajudar?

Para não se preocupar com os nomes das figuras, você pode encontrar a figura com as datas dos pontos mais recentes. E então, quando esta figura for encontrada, a questão é para você: que evento deve ser rastreado? Intersecção de horizontal, vertical, de cima para baixo, de baixo para cima.

O evento a ser assistido é o OnChartEvent.

 

Boa tarde!

Eu costumava ser capaz de colocar um limite no código para exibir os valores indicadores no monitor. Mas com este indicador, nada funciona. Talvez você possa me ajudar a colocar um limite no código? Por favor!

Obrigado!

Arquivos anexados:
Tipu_MACD.mq4  18 kb
 

Olá. Você poderia me dizer como calcular o preço da Licitação?

Como calcular um preço Bid que várias posições COMPRAR terão um lucro total zero para pares de moedas, onde a moeda base (primeira) é o dólar, e o valor do pip não é constante e depende dos preços?

Para pares onde o dólar é a moeda cotada (segunda) e o valor do pip é constante, eu derivei esta função,

double Null_BUY(){ 
   double null=0; double summ_count=0; double lots_count=0; double position_count=0;
   for (int i=OrdersTotal()-1; i>=0; i--){
     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
        if (OrderSymbol() == Symbol() ){
            if(OrderType()==OP_BUY ){
               position_count=Bid-((OrderProfit()+OrderSwap()+OrderCommission()) / OrderLots()*MarketInfo(Symbol(), MODE_TICKVALUE))*Point; 
               summ_count+=position_count*OrderLots();
               lots_count+=OrderLots();
            }
         }
      }
   }
   if(lots_count!=0) null=NormalizeDouble(summ_count/lots_count, Digits);
   return(null);
}
 
Forallf:

Você pode me dar uma dica? Eu desenhei um segmento de linha em um gráfico. Preciso conhecer os preços inicial e final do segmento. Isso pode ser feito?

Eu encontrei um exemplo. Eu o fiz assim.

//+------------------------------------------------------------------+
//|                                                        линия.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {  
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   //Проверим что есть трендовая линия и она в единственном экземпляре:
   if(ObjectsTotal(OBJ_TREND)!=1)
   {Comment("Нарисуйте 1 трендовую линию!");}

   //Получим ИМЯ трендовой линии:
   for(int i=0;i<ObjectsTotal();i++)
     {
      string name=ObjectName(i);
      if(ObjectType(name)==OBJ_TREND)
        {
         datetime t1=ObjectGet(name,OBJPROP_TIME1);
         datetime t2=ObjectGet(name,OBJPROP_TIME2);
         double p1=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE1),Digits);
         double p2=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE2),Digits);
         Comment(p1,"   ",p2);
        }
     }
  }
//+------------------------------------------------------------------+

Por favor, ajude-me a fazer mais um segmento que seria horizontal até o meio do primeiro. Vou mudar o comprimento do primeiro segmento, portanto, a localização do segundo segmento também deve mudar. Desenho das velas PRICE2 10 à frente.

Arquivos anexados:
EURUSDM12.png  25 kb
 
Forallf:

Encontrei um exemplo. Fez com que fosse assim.

Por favor, ajude-me a fazer outro segmento que seria horizontal até o meio do primeiro segmento. Vou mudar o comprimento do primeiro segmento, portanto, a localização do segundo também deve mudar. Desenho das velas PRICE2 10 à frente.

assim.


369
369
  • 2021.01.07
  • www.youtube.com
лин
 
Iurii Tokman:

lá vai você -


Portanto.
 
Forallf:
Certo.

esta bicicleta é uma característica padrão do terminal
chamado linhas Fibonacci

 
Iurii Tokman:

esta bicicleta é uma característica padrão do terminal
chamado linhas Fibonacci

O do meio é para mim um exemplo. Haverá um nível diferente, calculado.
 
Forallf:
O meio é para mim como um exemplo. Haverá outro nível, calculado.

Você pode encontrar qualquer ponto em uma linha, conhecendo as coordenadas. No seu caso, conhecemos os preços de início e fim e as datas do segmento. Também podemos encontrar o preço do meio = (preço inicial + preço final)/2. Ou qualquer outra fórmula que você utilize.

Agora podemos usar a primeira função para encontrar o tempo de um ponto em um segmento.

//находит дату точки (координату X) на прямой, на заданную цену (координата Y)
datetime GetPointTimeOnStraight(datetime eTime1, double ePrice1, datetime eTime2, double ePrice2, double ePrice3, string eSymbol, int eTimeFrame)
   {
   if(ePrice2-ePrice1==0) return(0.0);
   //индекс бара соответствующий заданному времени, возможно задавать будующее время
   int eIndex1=(eTime1>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime1)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime1);
   int eIndex2=(eTime2>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime2)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime2);
   int eIndex3=eIndex1+(int)((eIndex2-eIndex1)*(ePrice3-ePrice1)/(ePrice2-ePrice1));
   return(iTime(eSymbol,eTimeFrame,eIndex3));
   }

//находит цену точки (координату Y) на прямой, на заданное время (координата X)
double GetPointPriceOnStraight(datetime eTime1, double ePrice1, datetime eTime2, double ePrice2, datetime eTime3, string eSymbol, int eTimeFrame)
   {
   //индекс бара соответствующий заданному времени, возможно задавать будующее время
   int eIndex1=(eTime1>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime1)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime1);
   int eIndex2=(eTime2>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime2)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime2);
   if(eIndex2-eIndex1==0) return(0.0);
   int eIndex3=(eTime3>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime3)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime3);
   return(ePrice1+(ePrice2-ePrice1)*(eIndex3-eIndex1)/(eIndex2-eIndex1));
   }
 
Aleksei Stepanenko:

Bem, se você não estiver fazendo sentido, terei que lhe dar uma dica:

Acho que consegui, obrigado!!!

Razão: