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'.
#property indicator_chart_windowexternint 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))
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.
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
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'.
Trollers:) Un suggerimento migliore sarebbe quello di mettere i prezzi in un ciclo. Di conseguenza, memorizzare in array.
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.
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?
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?
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.
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.
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