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

 
Alexey Kozitsyn:
Beh... non credo sia necessario scavare così a fondo, ma la richiesta in un ciclo è davvero la prima cosa che salta all'occhio.

E se avesse bisogno di questi dati una sola volta, o una volta all'ora? Perché fare un ciclo inutile?

Nessuno di noi, tranne lo stesso interrogante, sa cosa vuole. Quindi possiamo solo consigliare quello che gli è stato consigliato di fare - andare a leggere in un club telepatico i suoi fallimenti nel formulare la domanda. E non offendetevi per coloro che hanno deciso di ridere un po'.

 
Alexey Kozitsyn:
Trollers:) Un suggerimento migliore sarebbe quello di mettere i prezzi in un ciclo. Di conseguenza, memorizzare in array.
Leggetelo a vostro piacimento).
 
Avresti dovuto semplicemente rispondere che la mia domanda non ti era chiara. E tu "sale e pepe..." Risentimento
 
STARIJ:

Secondo me, è più semplice così

L'allarme esce immediatamente sullo schermo. Questa è la fine della tabella


Avete letto la domanda? Sembra che vi sia sfuggito.
 
Romal001:
Avresti dovuto semplicemente rispondere che la mia domanda non ti era chiara. E tu "sale, pepe..." Offensivo

Leggi la mia prima risposta a te, era una domanda a te. Se tu avessi risposto chiaramente, la conversazione sarebbe stata diversa.

Che tipo di segnali stavi chiedendo?

E cosa c'entra questo con i dati delle candele?

 
#property indicator_chart_window
extern int boom = 1;
//=================================
void fishka(int ma,int mi,double map,double mip) // ф-ция
{
   ObjectCreate("Макс_Мин",OBJ_TRENDBYANGLE,0, Time[ma], map, Time[mi], mip);// Проводим линию
   ObjectSet("Макс_Мин",OBJPROP_RAY,false);     // Выключить свойство бесконечного луча
}

int deinit()
  {

 ObjectsDeleteAll();// Удалим все объекты
  return(0);
  }

void start()
{  
  string Символ = "GBPUSD";
  datetime Первый, Последний;
  int Период=PERIOD_H1;

  Последний = iTime(Символ, Период, 0);// Прежде всего узнаем дату и время последнего бара
 
if(boom){
   Alert("Последний бар на часовом  ",Последний);}
 
  
  MqlDateTime MqlПервый;              // Теперь получить начало суток, обнулив часы
  TimeToStruct(Последний,MqlПервый);  // Для этого преобразуем время последнего бара в структуру
  MqlПервый.hour=0;

  
  Первый=StructToTime(MqlПервый);            // Терерь надо обратно преобразовать во время
if(boom){
  Alert("Первый бар на часовом  ",Первый);}  // Смотрим начало первого бара суток
  
  int НомерПервого=iBarShift(Символ, PERIOD_H1,Первый);// По времени определим номер первого бара суток
if(boom){
   Alert("Первый бар на часовом под номером ",НомерПервого);}

// Можно было просто узнать время начала бара на D1

  // Теперь у нас есть НомерПервого бара, а номер послелнего = 0
  // Найдем на этом интервале номера баров, где макс и мин
  // iHighest и iLowest находят номер бара с макс и мин ценой
 int  БарМакс = iHighest(Символ,  // symbol = инструмента
                Период,           // timeframe = Период
                MODE_HIGH,        // Наибольшая цена бара
                НомерПервого+1,   // Количество баров
                0);               // Начальный бар

int  БарМин  = iLowest(Символ,Период,MODE_LOW,НомерПервого+1,0); // Наименьшая цена бара
                               
if(boom){
  Alert("Максимальный бар = ", БарМакс, "  Минимальный бар = ", БарМин);}
                                                                           

 
double max_price=iHigh(Символ, Период, БарМакс); // iHigh и iLow дают макс и мин цены указанного бара
double min_price=iLow (Символ, Период, БарМин);
   
    fishka(БарМакс,БарМин,max_price,min_price); // ф-ция
 if(boom){
   Alert("Максимум цены = ", max_price, "  Минимум цены = ", min_price);
 
   Alert("Угол = ", ObjectGetDouble(0,"Макс_Мин",OBJPROP_ANGLE));} // Теперь хорошо бы узнать угол               
}

come metterlo in un ciclo per visualizzare non solo un giorno ma la storia, tutto contorto come un serpente non funziona, l'interesse è tecnico, mi prude))

 

Come si può ottenere un prezzo corretto e più accurato per dove le due macchine si sovrappongono?


 
missha32:   Per favore consigliate come ottenere un prezzo corretto e più accurato dove due macchine si intersecano

L'intersezione è tra le barre, e il calcolo si basa sulle barre. O devi essere più preciso? Si può interpolare, ma è necessario? Il Ma lento ha lo stesso valore.

 
STARIJ:

Intersezione tra le barre, e il calcolo viene fatto barra per barra. O devi essere più preciso? Si potrebbe interpolare, ma si dovrebbe? Slow Ma ha lo stesso valore.

In questa figura, MA1(1)>MA2(1) e MA1(2)<=MA2(2) è il fatto dell'incrocio. La barra tra parentesi mostra la barra alla quale vengono presi MA1 e MA2
 

L'incrocio delle MA si verifica tra le barre - catturato un chiaro esempio

La MA sulle barre a sinistra e a destra dell'incrocio è diversa dal prezzo al punto di incrocio. Capisco che l'interrogante vuole il valore nel punto esatto di incrocio invece del valore su una delle barre adiacenti. Questo valore esatto può essere ottenuto usando l'interpolazione lineare - perché la MA tra le barre è costruita come segmenti di linea retta. Oppure prendere le coordinate di ogni MA su barre adiacenti. Costruisci analiticamente 2 rette e calcola il loro punto di intersezione. È possibile calcolare considerando 2 triangoli simili. Sorge una contro-domanda: perché ne abbiamo bisogno? I costi sono commisurati al valore del risultato? Dopotutto, i punti di intersezione si muoveranno se i parametri della MA vengono modificati minimamente. Molto probabilmente, è richiesto dal capo del progetto del corso

Motivazione: