Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 200

 
STARIJ:

Artem, soit c'est du trolling discret, soit tu ne sais pas ce que tu écris ! !!

Dans votre dernier message, vous avez parlé du tri. On vous a expliqué qu'il n'y a pas de dépendance au tri.

J'ai vu et participé à l'une des discussions sur la sélection de l'ordre par le temps. La conclusion a été que les commandes sont maintenant placées dans la base de données des commandes en fonction de l'heure à laquelle elles ont été envoyées au serveur. Mais théoriquement, on craint que les développeurs ne changent cela. C'était la fin de cette discussion. En tant que spécialiste des bases de données, je vous assure que cette crainte est infondée, un changement est hors de question. Vous pouvez soumettre le problème aux développeurs. Si j'écris quelque chose, je sais ce que j'écris. C'est le 50e anniversaire de la programmation. Si vous remarquez dans mes posts un certain désordre de votre point de vue - écrivez-moi en personne. Je vais vous expliquer, et vos doutes se dissiperont. Mais ici, les chamailleries ne sont pas appropriées. J'ai écrit un script à cet homme - il m'a dit merci. C'est bon, non ?

C'est ceque pensaient aussi tous ces gens qui se sont retrouvés soudainement dépendants du tri. La logique des gens s'est effondrée. Puis la dépendance au triage a de nouveau disparu. Mais c'est déjà le cas. Si vous voulez dépendre non pas de votre programme, mais d'un hypothétique tri invariant, vous avez le droit, mais dans le fil d'aide aux débutants vous n'avez pas ce droit - de donner un script et de ne pas mentionner le fait qu'il peut échouer un jour. Cherchez de telles discussions sur mql4.com - il y a environ 6 ou 7 ans.

C'est ceque j'ai mentionné - la personne parlait de stoploss, pas de perte.

Merci, dit-il - c'est poli, mais il ne sait pas si c'est bien ou mal ;)

 
Artyom Trishkin:

C'est ceque j'ai mentionné - l'homme parlait de stoploss, pas de perte.

Il a dit merci - c'est poli, mais il ne sait pas si c'est bien ou mal ;)

Regardez attentivement ce que l'homme a écrit.

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

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

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

Il s'ensuit qu'il faisait référence à des ordres perdus. C'est comme ça qu'il comprend le stoploss. Il n'a pas le motstoploss.

Je voulais aussi écrire que les stops sont un nom généralisé pour StopLoss et TakeProfit. Pour le voir, tapez 130 dans MetaEditor et appuyez sur F1.

Arrêts. Au pluriel.

Je travaille ici, vous me distrayez.

Disons plutôt datetime --> TimeToStruct -->MqlDateTime Comment reconvertir en datetime maintenant ?

 
STARIJ:

Regardez attentivement ce que l'homme a écrit

Il s'ensuit qu'il faisait référence à des ordres perdus. C'est ainsi qu'il comprend l'arrêt. Il n'a pas le motstoploss.

Je voulais aussi lui dire que les stops sont un nom généralisé pour StopLoss et TakeProfit. Pour le voir, tapez 130 dans MetaEditor et appuyez sur F1.

Arrêts. Au pluriel.

Je travaille ici, vous me distrayez.

Disons plutôt datetime --> TimeToStruct -->MqlDateTime Comment reconvertir en datetime ?

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

StructToTime()

 
виталик: Sur le graphique horaire, une ligne a été tracée entre le haut et le bas.
//+-------------------------------------------------------+
//| на 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));
}

// Il renvoie 0.0 Il faut fixer l'angle et ensuite l'obtenir...
// Ainsi, connaissant la différence de prix et le nombre de barres entre Max et Min, l'angle doit être calculé.
// Je suppose que ça pourrait être plus court...

 
STARIJ:

// Retourne 0.0 L'angle doit être fixé et ensuite obtenu...
// Donc, connaissant la différence de prix et le nombre de barres entre Max et Min, l'angle doit être calculé.
// Je suppose que ça pourrait être plus court...


merci beaucoup )
 
Artyom Trishkin:   StructToTime()
Merci, je l'ai trouvé. Il s'avère que je l'ai déjà utilisé. Je m'attendais à le voir dans l'aide pour une des dates TimeToStruct MqlDateTime.
 
-Aleks-:

Ugh, je n'arrive pas à comprendre comment ajouter des variables - par exemple, disons que j'ai 4 variables booléennes et que je dois les parcourir ?

Je comprends l'objectif - le reste doit être inférieur ou supérieur à zéro après la division - mais je n'arrive pas à trouver comment le faire :(


Pour les booléens, l'approche est légèrement différente.

//+------------------------------------------------------------------+
//|                                                       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);
     }

  }

Codage binaire.

Le N maximal dans ce cas est inférieur à 16.

Je ne comprends pas ce que tu veux obtenir.

 
Victor Nikolaev:


Pour les booléens, l'approche est légèrement différente.

le codage binaire.

Dans ce cas, le N maximum est inférieur à 16.

Je ne comprends pas ce que tu essaies d'obtenir.

Tu es un génie ! Merci !

J'ai 16 options.

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

Ce pour quoi je veux l'utiliser - j'ai un certain nombre de filtres et d'options de gestion de position dans mon EA - je veux les combiner, y compris en faisant des mini-ensembles (combinaisons préparées) - le résultat sera des données pour l'analyse, sans biais dans l'échantillon, ce qui, espérons-le, élargira les horizons de perception de l'influence des paramètres sur le résultat. Le résultat sera une série de résultats que j'analyserai en détail. Et, il y a une autre raison, j'ai une classe pour collecter des statistiques qui enregistre un nombre limité de variables dans un fichier, ce qui empêche une analyse détaillée.
 
виталик:

merci beaucoup )

STARIJ:

// Retourne 0.0 L'angle doit être fixé et ensuite obtenu...
// Donc, connaissant la différence de prix et le nombre de barres entre Max et Min, l'angle doit être calculé.
// Je suppose que ça pourrait être plus court...


Je pense qu'il faut que je regarde le graphique comme un indicateur, mais je pense qu'il faut que je regarde le graphique comme un indicateur, pour voir comment le faire fonctionner plus d'un jour.

#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:

Si à 4h du matin - pas encore beaucoup de bars pour aujourd'hui. Sur H4, il n'y a que 6 barres dans une journée. Vous devez définir le nombre de barres à rechercher ou le nombre de croisements.

Longues distances = tendance

J'ai essayé de l'exécuter comme un script, cela fonctionne, mais si je le compile comme un EA, toutes les lignes sont proches les unes des autres et je ne comprends pas quel est le problème.