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

 
Kot:

Bonjour !


J'ai un EA qui effectue certains calculs. Il utilise différentes opérations mathématiques, des tableaux, des boucles. Il enregistre le résultat dans un fichier. Il doit tout recommencer depuis le début après avoir effectué toutes les actions. Il a effectué tous les calculs une fois et se bloque pour la deuxième fois sans prendre aucune mesure. Pouvez-vous me dire s'il est nécessaire de mettre à zéro les variables, d'effacer les tableaux ou autre chose avant de commencer un nouveau calcul ?

Avez-vous essayé de fermer le fichier ?

 
Bonjour, j'ai besoin d'aide pour un humanitaire (moi) qui essaie de faire un indicateur avec la moindre connaissance de comment le faire))) mais avoir une compréhension de ce qui devrait apparaître)). Donc :
Comment programmer une béquille/indicateur/script (comme un indicateur avec des onglets "à propos, général, paramètres d'entrée, couleurs, affichage") pour MT4 afin qu'il prenne les données du fichier .csv, comme le format dufichier source:
EUR;TF;1.192;1.1733
EUR;TN;1.2037;1.1663
EUR;AB1;1.1906499615;1.1797479615
CHF;TF;1.0362;1.0183
CHF;TN;1.0479;1.0121
CHF;AB1;1.03484132734247;1.02549513556164


C'est-à-dire que
l'indicateur a pris les données enregistrées d'un fichier et les a miscomme un segment de ligne (TF, TA) ou une bande colorée(EA) avec les paramètres de l'étendue égale à "un jour". (de la bordure à la bordure des séparateurs verticaux de jours sur МТ4), pour les lignes sélection de la couleur de la ligne, du type de ligne, sélection de la couleur du texte et de la taille du commentaire et substitution de la ligne de commentaire comme "TF - 1,192" la deuxième ligne "TF - 1,1733" qui sont reprises des lignes correspondantes du fichier. La fourchette est purement horizontale et à partir de la ligne EUR;TF;1.192;1,1733 il prend le premier chiffre pour un slot et le deuxième chiffre pour le deuxième comme début du slot 1.192 et fin du slot 1.192.
I
l existe aussi des fourchettes, par exemple EA, le principe est le même du début à la fin de la journée mais le prix est différent et la ligne commence et se termine par CHF;AB1;1.03484132734247;1.02549513556164 le début est1.03484132734247 la fin de la fourchette1.02549513556164. Fonctionne lorsque vous allumez MT4 (comme un indicateur normal sur le gafik), chaque jour sur le graphique et ajoute toutes les données exactement pour le jour en cours une fois, toutes les lignes appliquées précédemment n'est pas supprimé du graphique et ne se duplique pas. Avec tout cela, il sélectionne et affiche tous les segments et les intervalles du jour, uniquement là où se trouve la fenêtre active et sur d'autres fenêtres actives (c'est-à-dire là où il fonctionne) (c'est-à-dire qu'il a ouvert une paire et l'indicateur a dessiné tous les segments et les intervalles du jour actuel et s'est arrêté, et ainsi de suite pour les paires).

Par exemple, comment doit se présenter l'onglet de l'indicateurParamètres d'entrée:

Переменная________Значение
Funtik________//--Общие настройки--//
Dessiner TF________true
Dessiner TN _______true
Dessiner AB1______true
Dessiner AB2______false
Couleur de la légende du texte _______Black
Шрифт подписей__________________Arial
Taille de la police pour les légendes de texte ________9
Couleur de la ligne TF ______________
Type de ligne TF _______________
TN Couleur de ligne ______________
Type de ligne TN _______________
Couleur de la bande AB1__________
Couleur de la bande AB2__________
Fréquence des fichiers en secondes ______2
Nom du fichier ___________5.csv

j'ai essayé de gribouiller moi-même, mais je n'ai rien obtenu alors que cela semblait facile (mais je suis un humanitaire, que pouvez-vous faire....) Aidez-moi s'il vous plaît, je me noie ! !!!!!!!


//+------------------------------------------------------------------+
//|                                                        Funtik.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
 
#property indicator_chart_window
//---- input parameters
extern string    Funtik="5.csv";
//+------------------------------------------------------------------+
//| extern variables                                       |
//+------------------------------------------------------------------+
extern  bool    РисоватьTB = false      ;
extern  bool    РисоватьTN = false      ;
extern  bool    РисоватьTF = false      ;
extern  bool    РисоватьAB1 = false     ;
extern  bool    РисоватьAB2 = false     ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
      int handle,sst=1;
     double  NameCena;
     string NameF ,NameTi,NameFT;
      bool h1;
      
   while(sst>0)
                 {
   handle=FileOpen(Funtik,FILE_CSV|FILE_READ,';');
 //  Comment ("Файл ",Funtik,"открыт");
   if(handle>=0)
    {
     NameF=FileReadString(handle);           // Читается наименование бумаги
     NameTi=FileReadString(handle);          // Читается первая котировка и подставляется в начало первого отрезка линии или диапазона
     NameCena=FileReadNumber(handle);        // Читается цена последней котировки для первого отрезка линии или диапазона
     NameFT=FileReadString(handle);          // Читается последняя котировка для диапазона
     
     Alert(NameF," ",NameTi," ",NameCena," ",NameFT);
       if(FileIsEnding(h1))
       {
     FileClose(h1);
     return(false);
     sst=0;
       }
    }
               }
     FileClose(handle);   
 
  //fComment(Funtik);
//----
   return(0);
  }
//+------------------------------------------------------------------+

 

Bonjour !

Veuillez m'aider à trouver un bug dans le programme suivant ! !!

//+------------------------------------------------------------------+
//|test.mq4 |
//| Copyright 2018, MetaQuotes Software Corp.
//|https ://www.mql5.com ||
//+------------------------------------------------------------------+
#property copyright "365_MA"
#lien de propriété "https://www.mql5.com"
#propriété version "1.00"
#propriété stricte

extern Period_MA = 365 ; //Period MA 1
extern double Delta = 0.0010 ; //Distance à laquelle l'ordre peut être ouvert

string Symb ; //Nom de l'instrument commercial
//int Total ; //nombre de commandes

//+------------------------------------------------------------------+
//| fonction d'initialisation de l'expert|
//+------------------------------------------------------------------+
int init()
{
//----

//----
retour(0) ;
}
//+------------------------------------------------------------------+
//| fonction de désinitialisation de l'expert|
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("Obj_Label") ;
ObjectDelete("Obj_Label2") ;
//----
retour(0) ;
}
//+------------------------------------------------------------------+
//| fonction de démarrage de l'expert|
//+------------------------------------------------------------------+
int start()
{



double prise = Bid ;//prix courant
double CurrMAValue = iMA(Symb, Period(),Period_MA, 0,Mode_EMA, PRICE_CLOSE, 0) ; //la valeur de la Moyenne Mobile
double Price2MA = prix - CurrMAValue ;//distance entre le MA et le prix
datetime NextClose = Time(0) + Period()*60*2 ;//il est temps de fermer
int MinutesToNextClose = (NextClose - TimeCurrent())/60 + 1 ; //temps de fermeture en minutes

//int err ;



//Rafraîchir les informations textuelles sur le graphique

ObjectSetText ("Obj_Label", "TF" + Period() + ", " + DoubleToStr(price, 4) + ", tick " + TimeToStr(TimeCurrent(), TIME_SECONDS) + ", O@" + TimeToStr(Time[0], TIME_MINUTES) + ", NC@" + TimeToStr(NextClose, TIME_MINUTES) + " (" + MinutesToNextClose + " min)", 10,
ObjectSetText ("Obj_Label2", "Delta " + DoubleToStr(Delta,4) + ", valeur MA " + DoubleToStr(CurrMAValue, 4) + ", distance à MA " + DoubleToStr(Price2MA, 4), 10, "Arial", DarkGreen ) ;
//considérer le prix et générer des alertes

si ((MathAbs(Price2MA) < Delta) && // si la distance à МА est inférieure à delta
(Price > CurrMAValue) && // et le prix est supérieur à la MA
(Open(0) > CurrMAValue+Delta) // et la bougie actuelle s'est ouverte plus haut que MA+Delta
(
Alerte ("Le prix s'approche de la MA par le haut ;)
)

si ((MathAbs(Price2MA) < Delta) && // si la distance à la MA est inférieure au delta
(prix < CurrMAValue) && // et le prix est inférieur à la MA
(Open(0) < CurrMAValue-Delta)) // et la bougie actuelle s'est ouverte sous le delta de la MA
(

Alerte ("Le prix s'est approché en dessous de la MA ;)
)

retour(0) ;


//+------------------------------------------------------------------+

Après la compilation, l'erreur suivante apparaît

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Куда исчезли "Сообщения"? У меня в профиле исчез раздел...
Dossiers :
Error.jpg  60 kb
 
berkley75:

Bonjour !

Veuillez m'aider à trouver un bug dans le programme suivant !!!


Après la compilation, l'erreur suivante.

//+------------------------------------------------------------------+
//|                                                         test.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "365_MA"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern int    Period_MA = 365;  //Период МА 1
extern double Delta = 0.0010;   //На каком расстоянии открывать ордер

string Symb;                  //Название торгового инструмента
//int Total;                  //количество ордеров

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
 {
//----
 
//----
   return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
 {
//----
   ObjectDelete("Obj_Label");
   ObjectDelete("Obj_Label2");
//----
   return(0);
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
 {
   
 

double prise = Bid;                                                             //текущая цена
double CurrMAValue = iMA(Symb, Period(),Period_MA, 0,Mode_EMA, PRICE_CLOSE, 0); //значение скользящей средней
double Price2MA = price - CurrMAValue;                                          //расстояние о МА до цены
datetime NextClose = Time(0) + Period()*60*2;                                   //время до закрытия
int MinutesToNextClose = (NextClose - TimeCurrent())/60 + 1;                    //время до закрытия в минутах

//int err;



//обновление текст информации на графике

ObjectSetText ("Obj_Label", "ТФ" + Period() + ", " + DoubleToStr(price, 4) + ", тик " + TimeToStr(TimeCurrent(), TIME_SECONDS) + ", O@" + TimeToStr(Time[0], TIME_MINUTES) + ", NC@" + TimeToStr(NextClose, TIME_MINUTES) + " (" + MinutesToNextClose + " min)", 10,
ObjectSetText ("Obj_Label2", "Дельта " + DoubleToStr(Delta,4) + ", знач МА " + DoubleToStr(CurrMAValue, 4) + ", расст до МА " + DoubleToStr(Price2MA, 4), 10, "Arial", DarkGreen );
//анализ цены и выдача алертов

if ((MathAbs(Price2MA) < Delta) &&   // если расстоание до МА меньше дельты
   (Price > CurrMAValue) &&          // и цена выше МА
   (Open(0) > CurrMAValue+Delta))    // и текущая свеча открылась выше, чем МА+дельта
( 
   Alert ("Цена подощла к МА сверху");
)

if ((MathAbs(Price2MA) < Delta) &&   // если расстояние до МА меньше дельты
   (price < CurrMAValue) &&          // и цена ниже МА
   (Open(0) < CurrMAValue-Delta))    // и текущая свеча открылась ниже, чем МА-дельта
( 

   Alert ("Цена подошла к МА снизу");
)

   return(0);
}
   
   
//+------------------------------------------------------------------+


Une accolade a été omise.

 
Veuillez m'indiquer comment corriger l'erreur de quantité de lots invalides pour la fonction FreeMarginCheck dans l'EA, lorsque la valeur du volume (lot) est accidentellement négative. Pour avoir un message sur le mauvais lot, sans message d'erreur, dans le testeur
 
Roman Sharanov:

Je dois intégrer le zigzag dans mon indicateur (actuellement, il compte par poignée).

Le problème est que mon indicateur n'utilise pas OnCalculate().

Alors comment faire fonctionner le zigzag et comment obtenir les taux_total et prev_calculé ?

Le taux_total est le nombre de barres sur le graphique. Il est déterminé à l'aide de la fonction Bars.

prev_calculated - créez un analogue vous-même, déclarez-le globalement (ou statiquement) et écrivez-y le nombre de barres effectivement calculé dans l'itération actuelle. Cela signifie qu'après avoir calculé avec succès les valeurs de l'indicateur, nous devons enregistrer le nombre de barres actuelles dans celui-ci. Si les calculs n'aboutissent pas, il est préférable de l'annuler afin de recalculer les valeurs de l'indicateur pour chaque barre de l'historique lors de la prochaine itération.

 

Re : Alekseu Fedotov

Qu'est-ce qu'un corset, désolé

 
berkley75:

Re : Alekseu Fedotov

Qu'est-ce qu'un corset, désolé

Entre parenthèses, l'argument de la fonction sin(30)
Entre crochets, l'indice du tableau x[25].
void start()
{
Dans le bloc d'opérateurs entre accolades
}
 
Bonjour, pourriez-vous me dire comment afficher/supprimer un certain symbole dans la fenêtre "aperçu du marché" ?
 
STARIJ:
Entre parenthèses, l'argument de la fonction sin(30)
entre crochets l'indice du tableau x[25]
void start()
{
Dans le bloc d'opérateurs entre accolades
}
Merci, mais ça ne compile toujours pas ! Même si tu mets une accolade à la fin, ce que j'ai remarqué !!!!.