Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1342

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

Qualcuno può aiutarmi?

Per non preoccuparsi dei nomi delle figure, si può trovare la figura con le date dei punti più recenti. E poi, quando questo dato viene trovato, la domanda è per voi: quale evento deve essere tracciato? Intersezione di orizzontale, verticale, top-down, bottom-up.

L'evento da guardare è OnChartEvent.

 

Buon pomeriggio!

Una volta potevo mettere un limite nel codice per visualizzare i valori dell'indicatore sul monitor. Ma con questo indicatore non funziona nulla. Forse potete aiutarmi a mettere un limite nel codice? Ma per favore!

Grazie!

File:
Tipu_MACD.mq4  18 kb
 

Salve. Potreste dirmi come calcolare il prezzo dell'offerta?

Come posso calcolare un prezzo di offerta che diverse posizioni BUY avranno un profitto totale nullo per coppie di valute, dove la valuta di base (prima) è il dollaro, e il valore del pip non è costante e dipende dai prezzi?

Per le coppie in cui il dollaro è la valuta quotata (seconda) e il valore del pip è costante ho derivato questa funzione,

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:

Puoi darmi un suggerimento? Ho disegnato un segmento di linea su un grafico. Ho bisogno di sapere i prezzi di inizio e fine del segmento. Si può fare?

Ho trovato un esempio. L'ho fatto così.

//+------------------------------------------------------------------+
//|                                                        линия.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);
        }
     }
  }
//+------------------------------------------------------------------+

Per favore, aiutatemi a fare un altro segmento che sarebbe orizzontale al centro del primo. Cambierò la lunghezza del primo segmento, quindi anche la posizione del secondo segmento dovrebbe cambiare. Disegno da PRICE2 10 candele avanti.

File:
EURUSDM12.png  25 kb
 
Forallf:

Ho trovato un esempio. Fatto così.

Per favore, aiutatemi a fare un altro segmento che sia orizzontale al centro del primo segmento. Cambierò la lunghezza del primo segmento, quindi la posizione del secondo segmento dovrebbe cambiare di conseguenza. Disegno da PRICE2 10 candele avanti.

come questo.


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

ecco qui -


Quindi.
 
Forallf:
Giusto.

questa bicicletta è una caratteristica standard del terminale
chiamata linee di Fibonacci

 
Iurii Tokman:

questa bicicletta è una caratteristica standard del terminale
chiamata linee di Fibonacci

Quella di mezzo è per me come esempio. Ci sarà un livello diverso, calcolato.
 
Forallf:
Il centro è per me come esempio. Ci sarà un altro livello calcolato.

Si può trovare qualsiasi punto su una linea conoscendone le coordinate. Nel vostro caso conosciamo i prezzi e le date di inizio e fine del segmento. Possiamo anche trovare il prezzo del mezzo = (prezzo iniziale + prezzo finale)/2. O qualsiasi altra formula che usi.

Ora possiamo usare la prima funzione per trovare il tempo di un punto su un 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:

Beh, se non ha senso, allora devo darti un suggerimento:

Penso di aver capito, grazie!!!