Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1521 1...151415151516151715181519152015211522152315241525152615271528...1953 Nuovo commento jarikn 2021.07.01 12:05 #15201 MakarFX:Stai confrontando l'rsi sbagliato invece del "per". Quindi è tutto qui? int Signal(int i) { // Снимем показания индикатора double Current = iRSI(NULL, 0, per, PRICE_CLOSE, i); double Previous = iRSI(NULL, 0, per, PRICE_CLOSE, i+1); double SCurrent = iRSI(NULL, 0, per, PRICE_CLOSE, i); // Для предыдущего бара double SPrevious = iRSI(NULL, 0, per, PRICE_CLOSE, i+1); // А теперь проверим всловия для наличия сигналов // есть сигнал на покупку? if(Current <= niz && Close[1]>Open[1]) return(BUY); if(Current >= verx && Close[1]<Open[1]) return(SELL); // Сигнала нет return(-1); Tretyakov Rostyslav 2021.07.01 12:19 #15202 jarikn:Quindi è tutto qui? Sì, ma non si può riscrivere un indicatore in un altro. Costruisci la logica dell'indicatore e poi scrivilo. In questo caso, non tutta la logica è chiara o ci sono dati extra che non vengono utilizzati. Area di accumulazione e Caratteristiche del linguaggio mql5, [Scrivere un consulente gratis jarikn 2021.07.01 12:35 #15203 MakarFX:Sì, ma non si può riscrivere un indicatore in un altro. Costruisci la logica dell'indicatore e poi scrivilo. In questo caso, non tutta la logica è chiara o ci sono dati extra che non vengono utilizzati. vedere sullo screenshot quello che ho ottenuto. la mia idea è questa. se l'rsi è sopra il livello 70 e la candela chiude sotto l'apertura - ci dovrebbe essere un segnale di vendita Ho un'idea: se l'rsi è inferiore a 30 e la candela chiude sopra l'apertura - un segnale di acquisto. Non giudicare, sto solo cercando di imparare un po' )))) Ora ditemi cosa ho fatto di sbagliato. File: Screenshot_13.png 29 kb Indicatore di ipercomprato/ipervenduto [Qualsiasi domanda da principiante, Scriverò un EA gratuitamente Tretyakov Rostyslav 2021.07.01 13:18 #15204 jarikn:Guarda lo screenshot di quello che ho. la mia idea è questa. Se l'rsi è superiore a 70 e la candela chiude sotto l'apertura - ci dovrebbe essere un segnale di vendita. Se l'rsi è sotto 30 e la candela chiude sopra l'apertura - un segnale di acquisto. Non giudicare, sto solo cercando di imparare un po' )))) L'unica cosa che sto cercando di imparare è questa. 1) usa il pulsante per incollare gli screenshot 2) secondo la sua condizione - è corretto. //+------------------------------------------------------------------+ //| jarikn_RSI.mq4 | //| Copyright 2020, DrMak. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, DrMak." #property link "https://www.mql5.com" #property version "1.00" #property strict #property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 2 //--- plot Покупаем #property indicator_label1 "Продаём" #property indicator_type1 DRAW_LINE #property indicator_color1 clrGreen #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- plot Продаём #property indicator_label2 "Покупаем" #property indicator_type2 DRAW_LINE #property indicator_color2 clrRed #property indicator_style2 STYLE_SOLID #property indicator_width2 1 //--- input parameters input int RSI_Period =14; //Период рассчета RSI input int AlertLevUp =70; //Уровень для покупок input int AlertLevDn =30; //Уровень для продаж //--- indicator buffers double Buy[]; // Буфер для покупок double Sell[]; // Буфер для продаж //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,Buy); SetIndexBuffer(1,Sell); // Устанавливаем нулевые значения для индикатора, при которых не будет сигнальных стрелок SetIndexEmptyValue (0, 0); SetIndexEmptyValue (1, 0); //Определяем стиль отображения индикаторных линий - стрелка SetIndexStyle (0, DRAW_ARROW); SetIndexStyle (1, DRAW_ARROW); // Установим значки "стрелки" для буферов SetIndexArrow(0, 234); //Стрелка "вниз" для продаж SetIndexArrow(1, 233); //Стрелка "вверх" для покупок //Устанавливаем текст описания стрелок индикатора для отображения информации в всплывающей подсказке. SetIndexLabel(0, "Продаём"); SetIndexLabel(1, "Покупаем"); //Определяем разрядность значений индикаторных линий - приравниваем разрядности фин. инструмента IndicatorDigits (Digits); //Строка с кратким названием индикатора выводится в сплывающей подсказке при наведении указателя мыши на стрелку IndicatorShortName ("Мой первый индикатор"); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- int limit=rates_total-prev_calculated-1; if(limit<1) return(0); for(int i=limit;i>=0;i--) { // Снимем показания индикатора double RSI = iRSI(NULL,0,RSI_Period,PRICE_CLOSE,i); if(RSI>AlertLevUp&&open[i]>close[i]) Buy[i]=high[i]; if(RSI<AlertLevDn&&open[i]<close[i]) Sell[i]=low[i]; } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ jarikn 2021.07.01 13:34 #15205 MakarFX:1) usa il pulsante per inserire gli screenshot 2) secondo la sua condizione - questo è corretto. Grazie, ci darò un'occhiata. jarikn 2021.07.01 16:22 #15206 MakarFX:1) usa il pulsante per inserire gli screenshot 2) secondo la vostra condizione - proprio così come scrivere la condizione * se rsi attraversa dal basso verso l'alto AlertLevDn allora comprare? è possibile o ho bisogno di un ulteriore slider? { //--- int limit=rates_total-prev_calculated-1; if(limit<1) return(0); for(int i=limit;i>=0;i--) { // Снимем показания индикатора double RSI = iRSI(NULL,0,RSI_Period,PRICE_CLOSE,i); if(RSI>AlertLevUp) Buy[i]=high[i]; if(RSI<AlertLevDn) Sell[i]=low[i]; } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ Tretyakov Rostyslav 2021.07.01 16:36 #15207 jarikn:come scrivere questa condizione * se rsi attraversa AlertLevDn dal basso verso l'alto allora compra? è possibile o hai bisogno di un ulteriore slider? La tua domanda ti dà la risposta... Se l'rsi attraversa dal basso verso l'alto - significa che il valore attuale è più alto e quello precedente è più basso. valore corrente double RSI = iRSI(NULL,0,RSI_Period,PRICE_CLOSE,i); il valore precedente dovrebbe essere fatto double RSI2 = iRSI(NULL,0,RSI_Period,PRICE_CLOSE,i+1); dopo di che confrontare se RSI2 è minore di AlertLevDn e RSI è maggiore di AlertLevDn hai un acquisto) [Matematica pura, fisica, chimica, [Qualsiasi domanda da principiante, ORO, Gold e XAUUSD jarikn 2021.07.01 16:40 #15208 MakarFX:La tua domanda ti dà la risposta... Se l'rsi attraversa dal basso verso l'alto, significa che il valore attuale è più alto e il valore precedente è più basso. valore corrente il valore precedente deve essere fatto dopo di che confrontare se RSI2 è minore di AlertLevDn e RSI è maggiore di AlertLevDn Hai un acquisto) Capito. Grazie) Tretyakov Rostyslav 2021.07.01 16:50 #15209 jarikn:Capito, grazie). corretto int limit=rates_total-prev_calculated-2; Andrei Sokolov 2021.07.01 21:21 #15210 Saluti, potreste darmi un suggerimento? MT5. Ho bisogno di ottenere i valori delle Bande di Bollinger. Scrivo #property strict #include <Indicators\Trend.mqh> CiBands m_bands; input int Magic = 778871; int OnInit(){//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////////OnInit() Print(m_bands.Create(Symbol(), PERIOD_CURRENT, 20, 0, 2, PRICE_CLOSE)); Print((string)m_bands.MaPeriod()); Print((string)m_bands.Base(Bars(NULL, PERIOD_CURRENT))); return(INIT_SUCCEEDED); } Emette qualcosa di simile a double_max. Allo stesso tempo, ottiene il periodo, l'offset e tutto il resto in modo corretto. Intelligenza artificiale 2020 - Qualsiasi domanda da principiante, Domande dai principianti MQL5 1...151415151516151715181519152015211522152315241525152615271528...1953 Nuovo commento
Stai confrontando l'rsi sbagliato invece del "per".
Quindi è tutto qui?
Quindi è tutto qui?
Sì, ma non si può riscrivere un indicatore in un altro.
Costruisci la logica dell'indicatore e poi scrivilo.
In questo caso, non tutta la logica è chiara o ci sono dati extra che non vengono utilizzati.Sì, ma non si può riscrivere un indicatore in un altro.
Costruisci la logica dell'indicatore e poi scrivilo.
In questo caso, non tutta la logica è chiara o ci sono dati extra che non vengono utilizzati.vedere sullo screenshot quello che ho ottenuto.
la mia idea è questa.
se l'rsi è sopra il livello 70 e la candela chiude sotto l'apertura - ci dovrebbe essere un segnale di vendita
Ho un'idea: se l'rsi è inferiore a 30 e la candela chiude sopra l'apertura - un segnale di acquisto.
Non giudicare, sto solo cercando di imparare un po' ))))
Ora ditemi cosa ho fatto di sbagliato.
Guarda lo screenshot di quello che ho.
la mia idea è questa.
Se l'rsi è superiore a 70 e la candela chiude sotto l'apertura - ci dovrebbe essere un segnale di vendita.
Se l'rsi è sotto 30 e la candela chiude sopra l'apertura - un segnale di acquisto.
Non giudicare, sto solo cercando di imparare un po' ))))
L'unica cosa che sto cercando di imparare è questa.
1) usa il pulsante per incollare gli screenshot
2) secondo la sua condizione - è corretto.
1) usa il pulsante per inserire gli screenshot
2) secondo la sua condizione - questo è corretto.
Grazie, ci darò un'occhiata.
1) usa il pulsante per inserire gli screenshot
2) secondo la vostra condizione - proprio così
come scrivere la condizione * se rsi attraversa dal basso verso l'alto AlertLevDn allora comprare? è possibile o ho bisogno di un ulteriore slider?
{ //--- int limit=rates_total-prev_calculated-1; if(limit<1) return(0); for(int i=limit;i>=0;i--) { // Снимем показания индикатора double RSI = iRSI(NULL,0,RSI_Period,PRICE_CLOSE,i); if(RSI>AlertLevUp) Buy[i]=high[i]; if(RSI<AlertLevDn) Sell[i]=low[i]; } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+come scrivere questa condizione * se rsi attraversa AlertLevDn dal basso verso l'alto allora compra? è possibile o hai bisogno di un ulteriore slider?
La tua domanda ti dà la risposta...
Se l'rsi attraversa dal basso verso l'alto - significa che il valore attuale è più alto e quello precedente è più basso.
valore corrente
il valore precedente dovrebbe essere fatto
dopo di che confrontare
se RSI2 è minore di AlertLevDn e RSI è maggiore di AlertLevDn
hai un acquisto)
La tua domanda ti dà la risposta...
Se l'rsi attraversa dal basso verso l'alto, significa che il valore attuale è più alto e il valore precedente è più basso.
valore corrente
il valore precedente deve essere fatto
dopo di che confrontare
se RSI2 è minore di AlertLevDn e RSI è maggiore di AlertLevDn
Hai un acquisto)
Capito. Grazie)
Capito, grazie).
corretto
Saluti, potreste darmi un suggerimento? MT5.
Ho bisogno di ottenere i valori delle Bande di Bollinger.
Scrivo
#property strict #include <Indicators\Trend.mqh> CiBands m_bands; input int Magic = 778871; int OnInit(){//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////////OnInit() Print(m_bands.Create(Symbol(), PERIOD_CURRENT, 20, 0, 2, PRICE_CLOSE)); Print((string)m_bands.MaPeriod()); Print((string)m_bands.Base(Bars(NULL, PERIOD_CURRENT))); return(INIT_SUCCEEDED); }Emette qualcosa di simile a double_max.
Allo stesso tempo, ottiene il periodo, l'offset e tutto il resto in modo corretto.