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

 
STARIJ:

Artem, o si tratta di trolling inguardabile o non sai di cosa stai scrivendo!!!

Nel tuo ultimo post hai parlato di ordinamento. Spiegato che non c'è dipendenza dall'ordinamento.

Ho visto e PARTECIPATO a una delle discussioni sulla selezione degli ordini in base al tempo. La conclusione è stata che gli ordini sono ora inseriti nel database degli ordini in base all'ora in cui sono stati inviati al server. Ma TEORETAMENTE c'è la paura che gli sviluppatori possano cambiare questo. Quella fu la fine della discussione. Come specialista di database vi assicuro che questa paura è infondata, un cambiamento è fuori questione. Puoi riferire il problema agli sviluppatori. Se scrivo qualcosa, so cosa scrivo. È il 50° anniversario della programmazione. Se notate nei miei post un po' di casino dal vostro punto di vista - scrivetemi di persona. Vi spiegherò e i vostri dubbi si dissolveranno. Ma qui battibeccare è improbabile che sia appropriato. Ho scritto all'uomo una sceneggiatura - mi ha ringraziato. Non è buono?

È quello che pensavano anche tutte quelle persone che si sono trovate improvvisamente a dipendere dallo smistamento. La logica della gente è crollata. Poi la dipendenza dall'ordinamento è scomparsa di nuovo. Ma l'ha già fatto. Se volete dipendere non dal vostro programma, ma da un ipotetico ordinamento invariante, avete il diritto, ma nel thread di aiuto per principianti non avete questo diritto - di dare uno script e non menzionare il fatto che potrebbe fallire un giorno. Cerca tali discussioni su mql4.com - circa 6 - 7 anni fa.

Questo è quello che ho menzionato - la persona stava parlando di stoploss, non di perdita.

Grazie ha detto - educato, ma non sa se è giusto o sbagliato ;)

 
Artyom Trishkin:

Questo è quello che ho menzionato - l'uomo stava parlando di stoploss, non di perdita.

Ha detto grazie - è educato, ma non sa se è giusto o sbagliato ;)

Guardate attentamente ciò che l'uomo ha scritto.

X = OrderProfit( );        // запомнить величину тейкпрофита

if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))     // если ПОСЛЕДНИЙ ордер                  
if ( OrderType ()==OP_SELL)  // СЕЛ

if(X < 0)                 // и если этот сел закрылся по стопу 

Ne consegue che si riferiva alla perdita di ordini. Questo è il suo modo di intendere lo stoploss. Non ha la parolastoploss.

Volevo anche scrivere che gli stop sono un nome generalizzato per StopLoss e TakeProfit. Per vederlo, digitate 130 in MetaEditor e premete F1

Fermate. Plurale.

Sto lavorando qui, mi stai distraendo.

Diciamo meglio datetime --> TimeToStruct -->MqlDateTime Come riconvertire ora in datetime?

 
STARIJ:

Guardate attentamente quello che ha scritto l'uomo

Ne consegue che si riferiva alla perdita di ordini. Questo è il suo modo di intendere lo stop. Non ha la parolastoploss.

Volevo anche scrivere che gli stop sono un termine generalizzato per StopLoss e TakeProfit. Per vederlo, digitate 130 in MetaEditor e premete F1

Fermate. Plurale.

Sto lavorando qui, mi stai distraendo.

Diciamo meglio datetime --> TimeToStruct -->MqlDateTime Come riconvertire in datetime?

if(X < 0)                 // и если этот сел закрылся по стопу 

StructToTime()

 
виталик: Sul grafico orario è stata tracciata una linea tra il massimo e il minimo
//+-------------------------------------------------------+
//| на H1 суточную линию между хая и лоу         PROBA.mq4|
//+-------------------------------------------------------+
#property strict

void OnStart()
{
  // Удалим все объекты
  ObjectsDeleteAll();

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

  // Прежде всего узнаем дату и время последнего бара
  Последний = iTime(Символ, Период, 0);
  Alert("Последний бар на часовом  ",Последний);

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



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

  // По времени определим номер первого бара суток
  int НомерПервого=iBarShift(Символ, PERIOD_H1,Первый);
  Alert("Первый бар на часовом под номером ",НомерПервого);

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


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

  int БарМин  = iLowest(Символ,
                Период,
                MODE_LOW,         // Наименьшая цена бара
                НомерПервого+1,
                0);

  Alert("Максимальный бар = ", БарМакс, "  Минимальный бар = ", БарМин);

  // iHigh и iLow дают макс и мин цены указанного бара
  double max_price=iHigh(Символ, Период, БарМакс);
  double min_price=iLow (Символ, Период, БарМин);
  Alert("Максимум цены = ", max_price, "  Минимум цены = ", min_price);

  // Проводим линию
  ObjectCreate("Макс_Мин",OBJ_TRENDBYANGLE,0, Time[БарМакс], max_price, Time[БарМин], min_price);
  ObjectSet("Макс_Мин",OBJPROP_RAY,false);     // Выключить свойство бесконечного луча

  // Теперь хорошо бы узнать угол
  Alert("Угол = ", ObjectGetDouble(0,"Макс_Мин",OBJPROP_ANGLE));
}

// Restituisce 0,0 L'angolo dovrebbe essere impostato e poi dovrebbe essere ottenuto...
// Quindi, conoscendo la differenza di prezzo e il numero di barre tra Max e Min, l'angolo dovrebbe essere calcolato.
// Immagino che potrebbe essere più breve...

 
STARIJ:

// Restituisce 0,0 L'angolo dovrebbe essere impostato e poi ottenuto...
// Quindi, conoscendo la differenza di prezzo e il numero di barre tra Max e Min, l'angolo dovrebbe essere calcolato
// Immagino che potrebbe essere più breve...


grazie mille )
 
Artyom Trishkin:   StructToTime()
Grazie, l'ho trovato. Si scopre che l'ho già usato. Mi aspettavo di vederlo nell'aiuto per uno dei datetime TimeToStruct MqlDateTime
 
-Aleks-:

Ugh, non riesco a capire come aggiungere le variabili - cioè diciamo che ho 4 variabili booleane e ho bisogno di passarle?

Capisco il punto - il resto dovrebbe essere meno o più di zero dopo la divisione - ma non riesco a capire come farlo :(


Per quelli booleani l'approccio è leggermente diverso

//+------------------------------------------------------------------+
//|                                                       Decode.mq4 |
//|                                            Copyright 2017, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Vinin"
#property link      "http://vinin.ucoz.ru"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int N=15;  //0..162
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for(int n=0;n<N;n++)
     {
      int tmp=n;
      bool a= (bool) MathMod(tmp,2);
      tmp=tmp/2;
      bool b= (bool) MathMod(tmp,2);
      tmp=tmp/2;
      bool c= (bool) MathMod(tmp,2);
      tmp=tmp/2;
      bool d= tmp;

      Print("N=",n,"; A=",a,"; B=",b,"; C=",c,"; D=",d);
     }

  }

Codifica binaria.

La N massima in questo caso è inferiore a 16.

Non riesco a capire cosa vuoi ottenere

 
Victor Nikolaev:


Per quelli booleani l'approccio è leggermente diverso

codifica binaria.

Il massimo N in questo caso è inferiore a 16

Non riesco a capire cosa stai cercando di ottenere.

Sei un genio! Grazie!

Ho 16 opzioni.

2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=15; A=vero; B=vero; C=vero; D=vero
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=13; A=vero; B=falso; C=vero; D=vero
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=9; A=vero; B=falso; C=falso; D=vero
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=1; A=vero; B=falso; C=falso; D=falso
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=5; A=vero; B=falso; C=vero; D=falso
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=3; A=vero; B=vero; C=falso; D=falso
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=11; A=vero; B=vero; C=falso; D=vero
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=7; A=vero; B=vero; C=vero; D=falso
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=14; A=falso; B=vero; C=vero; D=vero
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=6; A=falso; B=vero; C=vero; D=falso
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=10; A=falso; B=vero; C=falso; D=vero
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=2; A=falso; B=vero; C=falso; D=falso
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=12; A=falso; B=falso; C=vero; D=vero
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=4; A=falso; B=falso; C=vero; D=falso
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=8; A=falso; B=falso; C=falso; D=vero
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=0; A=falso; B=falso; C=falso; D=falso

Per cosa voglio usarlo - ho un certo numero di filtri e opzioni di gestione delle posizioni nel mio EA - voglio combinarli, anche facendo mini set (combinazioni preparate) - il risultato saranno dati per l'analisi, senza bias nel campione, che si spera espanderà gli orizzonti di percezione dell'influenza delle impostazioni sul risultato. Il risultato sarà una serie di risultati che analizzerò in dettaglio. E, c'è un'altra ragione, ho una classe per la raccolta di statistiche che salva un numero limitato di variabili in un file, il che impedisce un'analisi dettagliata.
 
виталик:

grazie mille )

STARIJ:

// Restituisce 0,0 L'angolo dovrebbe essere impostato e poi ottenuto...
// Quindi, conoscendo la differenza di prezzo e il numero di barre tra Max e Min, l'angolo dovrebbe essere calcolato
// Immagino che potrebbe essere più breve...


Penso di dover guardare il grafico come un indicatore, ma penso di dover guardare il grafico come un indicatore, così posso vedere come farlo funzionare più di un giorno.

#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));} // Теперь хорошо бы узнать угол               
}
 
STARIJ:

Se alle 4 del mattino - non ci sono ancora molti bar per oggi. Su H4 ci sono solo 6 barre in un giorno. devi impostare il numero di barre da cercare o il numero di incroci.

Lunghe distanze = tendenza

Ho provato ad eseguirlo come script, funziona, ma se lo compilo come EA, tutte le linee sono vicine l'una all'altra e non capisco qual è il problema