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

 
Alexey Viktorov:

Infatti non tutte le tastiere hanno quello di cui ho scritto... Forse dovresti cambiare la tua tastiera.



Ci sono troppi "esperti" qui :) Così ho pensato di prenderti in giro. Invece di rispondere alle domande, iniziano a dare lezioni.

 
Luchezar Shalomaev:

Ci sono troppi "esperti" qui :) Così ho deciso di prenderli in giro. Invece di rispondere alle domande, inizia a dare lezioni.

Allora non aspettatevi risposte normali da persone che sono occupate a fare le loro cose e sono distratte dall'aiutarvi, se vi mettete nella posizione di prendere in giro chi dà.

Questo non è un circo.

 
Artyom Trishkin:

Allora non aspettatevi in futuro da persone che sono occupate con i loro affari, e distratte per aiutarvi, risposte normali, se vi mettete nella posizione di prendere in giro chi dà.

Questo non è un circo.



Caro moderatore, se questo non è un circo, potresti gentilmente portare i clown che hanno risposto alle mie domande dietro le quinte? Grazie.

 
Luchezar Shalomaev:


Caro moderatore, se questo non è un circo, saresti così gentile da portare i clown che hanno risposto alle mie domande dietro le quinte? Grazie.

È questo il modo di mandarti dietro le quinte?

Tu:

Forum sul trading, sistemi di trading automatico e test di strategia

Tutte le domande dei principianti su MQL4, aiuto e discussione su algoritmi e codici

Luchezar Shalomaev, 2017.09.20 22:25

Salve. Ho scaricato il file di quotazione EUR USD 1 minuto da Ducascopy, cercando di importare in MT4 Alpari, non succede nulla. Solo una finestra di conversione vuota. Lo stesso su Instaforex. Cosa può essere?

Risposta:

Forum sul trading, sistemi di trading automatico e test di strategia

Tutte le domande dei principianti su MQL4, aiuto e discussione su algoritmi e codici

Vitaly Muzichenko, 2017.09.20 22:32

Hai intenzione di fare trading in Dukascopy? No? Allora perché avete bisogno dei loro preventivi?

Tu:

Risposta:

Tu:

Risposta:

Tu:

Tu:

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Tutte le domande dei principianti su MQL4, aiuto e discussione su algoritmi e codici

Alexey Viktorov, 2017.09.21 09:34

Davvero non tutte le tastiere hanno quello di cui ho scritto... Forse la tastiera dovrebbe essere cambiata?


Tu:

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Tutte le domande dei neofiti su MQL4, aiuto e discussione su algoritmi e codici

Luchezar Shalomaev, 2017.09.21 21:10


Ci sono troppi "esperti" qui :) Così ha deciso di prenderli in giro. Invece di rispondere alle vostre domande, iniziano a predicare.


La tua domanda ha avuto una risposta - premi F2, che fa apparire la finestra di download della citazione.

Ma tu hai iniziato a scherzare e hai avuto le battute in risposta.

Cosa volevi? Quello con cui sei venuto, come si dice...

 
Artyom Trishkin:

Quindi dovrei mandarti nel backstage?

Tu:

Risposta:

Tu:

Risposta:

Tu:

Risposta:

Tu:

Tu:

Tu:


Ti è stata data una risposta alla tua domanda - premi F2, che fa apparire la finestra di download del preventivo.

Ma lei ha iniziato a scherzare, al che ha ricevuto una battuta in risposta.

Che cosa vuoi? Quello con cui sei venuto, come si dice...













Beh, voi dite che non è un circo.

 
Aleksey Vyazmikin:
Il modo più semplice per scrivere la logica è renderla più chiara - non capisco quale sia la logica... può descriverlo a parole?

Ho trovato un difetto nella logica. L'ho aggiustato e funziona.

int Doji()
{

//Параметры Дожи
   double Open1 = NormalizeDouble (iOpen(Symbol(), PERIOD_H4,1),Digits);
   double Close1 = NormalizeDouble (iClose(Symbol(), PERIOD_H4,1),Digits);
   double High1 = NormalizeDouble (iHigh(Symbol(), PERIOD_H4,1),Digits);
   double Low1 = NormalizeDouble (iLow(Symbol(), PERIOD_H4,1),Digits);
   
//Параметры предыдущей свечи
   double Open2 = NormalizeDouble (iOpen(Symbol(), PERIOD_H4,2),Digits);
   double Close2 = NormalizeDouble (iClose(Symbol(), PERIOD_H4,2),Digits);
   double High2 = NormalizeDouble (iHigh(Symbol(), PERIOD_H4,2),Digits);
   double Low2 = NormalizeDouble (iLow(Symbol(), PERIOD_H4,2),Digits);
   
//Параметры индикатора волотильности ATR для нахожденя относительно большой свечи перед Доджи
   double ATR = iATR(Symbol(),PERIOD_H4,21,1);
   
   
//Математическое описание патерна Дожи
   if(Close1 < High1 -0.3*(High1-Low1) && 
      Open1 < High1 -0.3*(High1-Low1) && 
      Close1 > High1 -0.7*(High1-Low1) && 
      Open1 > High1 -0.7*(High1-Low1) && 
      MathAbs(Close1-Open1) < 0.2*(High1-Low1)&&
      MathAbs(Close2-Open2) > 0.7*ATR)
      {
         if((Close2 - Open2) > 0 && New_Bar == true)
         { 
            Print ("Down"); return(-1);// Условие для продаж
         }
         if((Close2 - Open2) < 0 && New_Bar == true)
         {
            Print ("Up"); return(1);// Условие для покупок
         }
      }
      return(0);
}
L'errore era nella descrizione matematica del modello Doji.
 

Ora il compito è il seguente. Abbiamo bisogno di disegnare un rettangolo al posto di una freccia, che sarà tracciato da max e min Doji e dal tempo di apertura di Doji e il tempo di apertura di una nuova barra dopo Doji. E tutto questo su un grafico a 4 ore. Allo stesso tempo ho bisogno di essere su un grafico a 5 minuti. Cosa può consigliare? Come implementare?

Non so come fare, grazie.

 
voron_026:

Ho trovato un difetto nella logica. L'ho aggiustato e funziona.

L'errore era nella descrizione matematica del modello Doji.

Buon per te. Ha mai programmato prima? Il tuo stile non è tipico.

voron_026:

Ora il compito è il seguente. Invece delle frecce, dobbiamo disegnare un rettangolo, che sarà disegnato dal Doji massimo e minimo e dal tempo di apertura del Doji e il tempo di apertura di una nuova barra dopo il Doji. E tutto questo su un grafico a 4 ore. Allo stesso tempo ho bisogno di essere su un grafico a 5 minuti. Cosa può consigliare? Come implementare?

Grazie.


Fare la dichiarazione delle variabili comuni (globali) che saranno calcolate nella funzione e ritornare da essa void(){} . Puoi definire il tempo... Comunque, non ho ancora capito la domanda esatta.

A proposito, non conoscevo l'approccio della variabile globale prima e stavo restituendo tutti i valori dalla funzione tramite la variabile stringa...

 
voron_026:

Ora il compito è il seguente. Abbiamo bisogno di disegnare un rettangolo al posto di una freccia, che sarà tracciato da max e min Doji e dal tempo di apertura di Doji e il tempo di apertura di una nuova barra dopo Doji. E tutto questo su un grafico a 4 ore. Allo stesso tempo ho bisogno di essere su un grafico a 5 minuti. Cosa può consigliare? Come implementare?

Grazie.

Devi usare OBJ_RECTANGLE. Sai come ottenere i dati di prezzo e tempo dal grafico H4.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksey Vyazmikin:

Buon per te. Ha mai programmato prima? Il tuo stile non è tipico.


Dichiarare le variabili generali (globali) da calcolare nella funzione e ritornare da essa void(){} . Puoi determinare il tempo... Comunque, non capisco quale sia esattamente la domanda.

A proposito, non sapevo dell'approccio della variabile globale prima e restituivo tutti i valori dalla funzione attraverso la variabile stringa...


CiaoAleksey Vyazmikin sto programmando non molto tempo fa. Mi sto lentamente addentrando nell'argomento.

Ho provato in questo modo:

//+------------------------------------------------------------------+
//|                                                          111.mq4 |
//|                                       Copyright 2017,UriyGlushko |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017,UriyGlushko"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern string Rodot           = "Параметры робота";
extern double Lots            = 0.2;
extern int    StopLoss        = 20;
extern int    TakeProfit      = 80;
extern int    Magic           = 999999;
extern int    Slippage        = 3; // Проскальзывание

extern bool UseDojiCandles = true; // Использование патерна Доджи
int DojiCandle = 0;
bool New_Bar = false;

datetime time0 = iTime(Symbol(),PERIOD_H4,0);
datetime time1 = iTime(Symbol(),PERIOD_H4,1);
double open0 = iOpen(Symbol(), PERIOD_H4,0);
double open1 = iOpen(Symbol(), PERIOD_H4,1);
double close1 = iClose(Symbol(), PERIOD_H4,1);
double high1 = iHigh(Symbol(), PERIOD_H4,1);
double low1 = iLow(Symbol(), PERIOD_H4,1);
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
  if (Digits == 3 || Digits ==5 )
  {
   TakeProfit *= 10;
   StopLoss   *= 10;
   Slippage   *= 10;
  }
 return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  
   
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
Fun_New_Bar();

   if(UseDojiCandles = true && Doji() == 1 && New_Bar == true)
     {
      if(!ObjectCreate(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJ_RECTANGLE,0,time1,open1,time0,open0))
         {
         Print("Не удалось создать метку вверх");
         }
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_COLOR,clrRed);//--- установим цвет прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_STYLE,STYLE_SOLID);//--- установим стиль линий прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_WIDTH,1);//--- установим толщину линий прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_BACK,false);//--- отобразим на переднем (false) или заднем (true) плане 
         
         DojiCandle ++;
     }
   

   
   if(UseDojiCandles = true && Doji() == -1 && New_Bar == true)
     {
      if(!ObjectCreate(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJ_RECTANGLE,0,time1,open1,time0,open0))
         {
         Print("Не удалось создать метку вниз");
         }
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_COLOR,clrRed);//--- установим цвет прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_STYLE,STYLE_SOLID);//--- установим стиль линий прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_WIDTH,1);//--- установим толщину линий прямоугольника 
         ObjectSetInteger(ChartID(),"Doji_"+IntegerToString(DojiCandle),OBJPROP_BACK,false);//--- отобразим на переднем (false) или заднем (true) плане 

         DojiCandle ++;
     }
     

   
}
//+------------------------------------------------------------------+
//    Поиск всех объектов
//+------------------------------------------------------------------+


 




//+------------------------------------------------------------------+
//    Функция паттерна Доджи
//+------------------------------------------------------------------+
int Doji()
{

//Параметры Дожи
   double Open1 = NormalizeDouble (iOpen(Symbol(), PERIOD_H4,1),Digits);
   double Close1 = NormalizeDouble (iClose(Symbol(), PERIOD_H4,1),Digits);
   double High1 = NormalizeDouble (iHigh(Symbol(), PERIOD_H4,1),Digits);
   double Low1 = NormalizeDouble (iLow(Symbol(), PERIOD_H4,1),Digits);
   
//Параметры предыдущей свечи
   double Open2 = NormalizeDouble (iOpen(Symbol(), PERIOD_H4,2),Digits);
   double Close2 = NormalizeDouble (iClose(Symbol(), PERIOD_H4,2),Digits);
   double High2 = NormalizeDouble (iHigh(Symbol(), PERIOD_H4,2),Digits);
   double Low2 = NormalizeDouble (iLow(Symbol(), PERIOD_H4,2),Digits);
   
//Параметры индикатора волотильности ATR для нахожденя относительно большой свечи перед Доджи
   double ATR = iATR(Symbol(),PERIOD_H4,21,1);
   
   
//Математическое описание патерна Дожи
   if(Close1 < High1 -0.3*(High1-Low1) && 
      Open1 < High1 -0.3*(High1-Low1) && 
      Close1 > High1 -0.7*(High1-Low1) && 
      Open1 > High1 -0.7*(High1-Low1) && 
      MathAbs(Close1-Open1) < 0.2*(High1-Low1)&&
      MathAbs(Close2-Open2) > 0.7*ATR)
      {
         if((Close2 - Open2) > 0 && New_Bar == true)
         { 
            Print ("Down"); return(-1);// Условие для продаж
         }
         if((Close2 - Open2) < 0 && New_Bar == true)
         {
            Print ("Up"); return(1);// Условие для покупок
         }
      }
      return(0);
}
//+------------------------------------------------------------------+
//    Функция определения нового бара
//+------------------------------------------------------------------+
void Fun_New_Bar()                              // Ф-ия обнаружения нового бара 
  {                                             
  datetime TimeBar0 = iTime(Symbol(),PERIOD_H4,0);
   static datetime New_Time=0;                  // Время текущего бара 
   New_Bar=false;                               // Нового бара нет 
   if(New_Time != TimeBar0)                        // Сравниваем время 
     { 
      New_Time = TimeBar0;                         // Теперь время такое 
      New_Bar = true;                             // Поймался новый бар 
     } 
  }  

Il primo rettangolo viene disegnato, gli altri non vengono disegnati. Sto ancora cercando di capire come farlo. Grazie per i consigli e cosa intendi per uno stile non tipico?