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

 
buyanov:

Mais rien n'a changé.

L'erreur et l'avertissement demeurent.

Donnez-moi le code ENTIER, pas seulement un morceau. Vous attendez que tout le monde devine ? Alors demandez ici - ici tout le monde sait tout sur tout à la fois.

 

Je vous donne le code ENTIER.

Automated Trading and Strategy Testing
Automated Trading and Strategy Testing
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
 
buyanov:

Je vous donne le code ENTIER.

C'est juste énorme...

 

Tous les codes

"

#propriété copyright "Copyright 2017, MetaQuotes Software Corp."

#propriété version "Cross20170703 1.00"


//============================================== = ========================

externe int Period_FastMA=4 ;

extern int Period_SlowMA=8 ;


externe entier MaxTickNum=30 ;

extern int MaxAttempt=10 ;

extern int k_slippage=1 ;


double externe k_SL=10.0;//*Point()

double externe k_TP=30.0;//*Point()


extern double TrailDist=30.0;//*Point()

double externe k_lots=0.3 ;

extern bool ExFin=false ;



int//*********************************************** ***** ************************************


res,

compter,

je,

TickSuiv=0,

temps,

temps fin,

HeureDébutMlSec,

EndMlSecTime,

deltatime,

Tenter,

glissement=5,

TickNum=0,

position,

billet,

MaxInterval1000,

NombreCroix=0,

COM=4,

att,

tenter,



se tromper;



double //*********************************************** ***** ********************************


total,

beaucoup,

propagé,


rapidema,

slowMA,


delta,


dernier delta,

PrécédentDelta,


COM=0.00004,

prix ouvert,

prix proche,

SL,

TP,


profit,

PROFIT;


bool//************************************************ ***************************************************


PremièreCroix=faux,

NextCross=faux,

CurType,

succès = vrai

activer=vrai,


Commencer,

CommencerDn,

BuyOpened=faux,

VendreOuvert=false ;


corde//*********************************************** ***** ********************************************* *


rec,

str,

record,

DébutHeureCourant,

HeureFinActuelle,

CurTime,

StrCur,

stringbeg,

StringEnd ;

//************************************************ ************************************************** ******* ******


//============================================== = =============================================== == =============================

//============================================== = =============================================== == ==============================

//============================================== = =============================================== == ==============================




//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>>>>>>>>>>

//------------------------------------------------------------- -------------------------------------------------- --------------------------


//============================================== = =============================================== == ==========================


int OnDeinit(const int res)

{

Alert("demander OnDeinit()");

err=ChaîneVersEntier((chaîne)err);

retour(res);

Alert("end OnDeinit()");

}

//OnDeinit();-----------

//------------------------------------------------------------- -------------------------------------------------- ------------------------




//============================================== = =============================================== == ===========================

annuler ExpertStop()

{

Alerte("ExpertStop");

if((ExFin==true)&&(TickNum==MaxTickNum))

{

ExpertRetire();

OnDeinit(res);

}

} //fin ExpertStop


//------------------------------------------------------------- -------------------------------------------------- ------------------------



//============================================== = =============================================== == =======================

int ErreurDescription()

{

Alert("supprimer ErrorDescription");

interrupteur (erreur)

{ case 0 : err="Aucune erreur" ; Pause;

case 1 : err="Pas d'erreur, mais résultat inconnu" ; Pause;

cas 2 : err="Erreur générale" ; Pause;

cas 3 : err="Paramètres invalides" ; Pause;

cas 4 : err="Le serveur de commerce est occupé" ; Pause;

cas 5 : err="Ancienne version du terminal client" ; Pause;

case 6 : err="Pas de connexion au serveur de trading" ; Pause;

cas 7 : err="Droits insuffisants" ; Pause;

cas 8 : err="Demandes trop fréquentes" ; Pause;

case 9 : err="Opération illégale perturbant le serveur" ; Pause;

case 64 : err="Compte bloqué" ; Pause;

case 65 : err="Numéro de compte incorrect" ; Pause;

case 128 : err="Délai d'expiration de la transaction expiré" ; Pause;

case 129 : err="Prix incorrect" ; Pause;

case 130 : err="Arrêts erronés" ; Pause;

cas 131 : err="Volume incorrect" ; Pause;

cas 132 : err="Marché fermé" ; Pause;

cas 133 : err="Trading interdit" ; Pause;

case 134 : err="Pas assez d'argent pour terminer l'opération" ; Pause;

cas 135 : err="Prix modifié" ; Pause;

case 136 : err="Aucun prix" ; Pause;

cas 137 : err="Courtier occupé" ; Pause;

case 138 : err="Nouveaux prix" ; Pause;

case 139 : err="La commande est bloquée et est déjà en cours de traitement" ; Pause;

case 140 : err="Achat uniquement autorisé" ; Pause;

case 141 : err="Trop de requêtes" ; Pause;

case 145 : err="La modification n'est pas autorisée car l'ordre est trop proche du marché" ; Pause;

cas 146 : err="Sous-système de trading occupé" ; Pause;

case 147 : err="L'utilisation de la date d'expiration de la commande est interdite par le courtier" ; Pause;

case 148 : err="Le nombre d'ordres ouverts et en attente a atteint la limite fixée par le courtier.";break;

//

case 4000 : err="Pas d'erreur" ; Pause;

case 4001 : err="Pointeur de fonction invalide" ; Pause;

case 4002 : err="L'index du tableau est hors limites" ; Pause;

case 4003 : err="Pas de mémoire pour la pile de fonctions" ; Pause;

case 4004 : err="Débordement de pile après appel récursif" ; Pause;

case 4005 : err="Il n'y a pas de mémoire sur la pile pour passer les paramètres" ; Pause;

case 4006 : err="Mémoire insuffisante pour le paramètre de chaîne" ; Pause;

case 4007 : err="Mémoire insuffisante pour la chaîne temporaire" ; Pause;

cas 4008 : err="Chaîne non initialisée" ; Pause;

case 4009 : err="Chaîne non initialisée dans le tableau" ; Pause;

case 4010 : err="Mémoire insuffisante pour le tableau de chaînes" ; Pause;

cas 4011 : err="Chaîne trop longue" ; Pause;

cas 4012 : err="Reste zéro" ; Pause;

cas 4013 : err="Division par zéro" ; Pause;

cas 4014 : err="Commande inconnue" ; Pause;

cas 4015 : err="Transition incorrecte" ; Pause;

cas 4016 : err="Tableau non initialisé" ; Pause;

cas 4017 : err="Appels DLL non autorisés" ; Pause;

cas 4018 : err="Impossible de charger la bibliothèque" ; Pause;

case 4019 : err="Impossible d'appeler la fonction" ; Pause;

case 4020 : err="Les appels aux fonctions externes de la bibliothèque ne sont pas autorisés" ; Pause;

case 4021 : err="Mémoire insuffisante pour la chaîne renvoyée par la fonction" ; Pause;

cas 4022 : err="Système occupé" ; Pause;

case 4050 : err="Nombre invalide de paramètres de fonction" ; Pause;

case 4051 : err="Valeur de paramètre de fonction non valide" ; Pause;

case 4052 : err="Erreur interne de la fonction de chaîne" ; Pause;

cas 4053 : err="Erreur de tableau" ; Pause;

case 4054 : err="Utilisation incorrecte du tableau de séries temporelles" ; Pause;

case 4055 : err=" Erreur d' indicateur personnalisé " ; Pause;

case 4056 : err="Les tableaux sont incompatibles" ; Pause;

case 4057 : err="Erreur lors du traitement des variables globales" ; Pause;

case 4058 : err="Variable globale introuvable" ; Pause;

case 4059 : err="Fonction non autorisée en mode test" ; Pause;

case 4060 : err="Fonction non autorisée" ; Pause;

case 4061 : err="Erreur lors de l'envoi du courrier" ; Pause;

cas 4062 : err="Paramètre de chaîne attendu" ; Pause;

case 4063 : err="Un paramètre entier est attendu" ; Pause;

cas 4064 : err="double attendu" ; Pause;

case 4065 : err="Un tableau est attendu en paramètre" ; Pause;

case 4066 : err="Données historiques demandées en état de mise à jour" ; Pause;

case 4067 : err="Erreur lors de l'exécution d'une opération commerciale" ; Pause;

cas 4099 : err="Fin de fichier" ; Pause;

case 4100 : err="Erreur lors de l'utilisation du fichier" ; Pause;

cas 4101 : err="Nom de fichier invalide" ; Pause;

case 4102 : err="Trop de fichiers ouverts" ; Pause;

cas 4103 : err="Impossible d'ouvrir le fichier" ; Pause;

case 4104 : err="Mode d'accès au fichier incompatible" ; Pause;

case 4105 : err="Aucune commande sélectionnée" ; Pause;

case 4106 : err="Caractère inconnu" ; Pause;

case 4107 : err="Paramètre de prix incorrect pour la fonction commerciale" ; Pause;

case 4108 : err="Numéro de billet invalide" ; Pause;

case 4109 : err="L'échange n'est pas autorisé. Vous devez activer l'option Autoriser EA à échanger dans les propriétés EA." ; Pause;

case 4110: err="Les positions longues ne sont pas autorisées. Vous devez vérifier les propriétés EA."; Pause;

case 4111: err="Les positions courtes ne sont pas autorisées. Vous devez vérifier les propriétés EA."; Pause;

case 4200 : err="L'objet existe déjà" ; Pause;

case 4201 : err="Une propriété d'objet inconnue a été demandée" ; Pause;

cas 4202 : err="L'objet n'existe pas" ; Pause;

cas 4203 : err="Type d'objet inconnu" ; Pause;

cas 4204 : err="Aucun nom d'objet" ; Pause;

case 4205 : err="Erreur de coordonnées d'objet" ; Pause;

case 4206 : err="La sous-fenêtre spécifiée est introuvable" ; Pause;

par défaut : err="Erreur lors de l'utilisation de l'objet" ;

}

Alert("end ErrorDescription");

retour(err);

}//Fin de la description d'erreur()

//------------------------------------------------------------- -------------------------------------------------- ------------------------


//============================================== = =============================================== == =======================

int GetNext(NextTick)

//>>>>>>>>>>>>>>>>>>>>>>

{

Alert("demander GetNext(NextTick)");

Alerte(NextTick);

while(RefreshRates()==false)Count++ ;

Alerte("Count=",Count,"NextTick=",NextTick);

Alerte(" ");

Alerte(RefreshRates(),Count,NextTick);

retour (NextTick);

Alerte(NextTick);

//--------------------

Alert("end GetNext(NextTick)");

}

//fin GetNext(NextTick)

//============================================== = =============================================== == =======================


//------------------------------------------------------------- -------------------------------------------------- ------------------------

annuler OnTick()

{

//************************************

Alert("demander OnTick");

//************************************

FastMA=NormalizeDouble(iMA(NULL,0,Period_FastMA,0,MODE_SMA,PRICE_CLOSE,1),Digits());//Period_FastMA=4

SlowMA=NormalizeDouble(iMA(NULL,0,Period_SlowMA,0,MODE_SMA,PRICE_CLOSE,1),Digits());//Period_SlowMA=8

GetNext(NextTick);

Alerte("NextTick=",NextTick);

Delta=NormalizeDouble(FastMA-SlowMA,Chiffres()); Alert("demander OnTick");

Alerte(Delta,Chiffres());

Alert("FastMA=",DoubleToStr(FastMA ,Digits()),"SlowMA=",DoubleToStr(SlowMA,Digits()), "Delta=",DoubleToStr(Delta,Digits()));

Alert("end OnTick");

//------------------------------------------------------------- -------------------------------------------------- --------------------------

}// fin (fin OnTick)

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<

//------------------------------------------------------------- -------------------------------------------------- -------------------------------------



//============================================== = =============================================== == ==========================



annuler Init()

{

Alerte(" ");

Alert("demander Init()");

Alerte(" ");



StringBeg=StringConcatenate("TimeToStr(TIME_DATE,TIME_SECONDS)=",TimeToStr(TIME_DATE,TIME_SECONDS));

alert(stringbeg);


record=StringConcatenate("MaxTickNum=",MaxTickNum);

alerte (enregistrement);


record=StringConcatenate("k_SL=",DoubleToStr(k_SL,Digits()));

alerte (enregistrement);


record=StringConcatenate("k_TP=",DoubleToStr(k_TP,Digits()));

alerte (enregistrement);


record=StringConcatenate("k_lots=",DoubleToStr(k_lots,Digits()));

alerte (enregistrement);


Alert("fin Init()");


}//fin Init()

//------------------------------------------------------------- -------------------------------------------------- ------------------------




//============================================== = =============================================== == ====================

int GetTick(NextTick)


{


Alert("demander GetTick");


tandis que (RefreshRates()==false)

NextTick++ ;

Alerte("NextTick=",NextTick);


OrderSelect(NextTick,SELECT_BY_TICKET);


Bénéfice=BénéficeCommande();


Alerte(DoubleVersStr(Profit, Chiffres));


GetNext(NextTick);


Alerte("fin GetTick");

}

//------------------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----


//============================================== = =============================================== == =========================


int NextType()

//>>>>>>>>>>>>>>>>>>>>>

{

Alert("demander NextType");


if(OrderSelect(NextTick,SELECT_BY_TICKET )==true)

{

PrixOuvert=PrixOuvertCommande();

PrixFermé=PrixFerméCommande();

}


if(ClosePrice>OpenPrice)CurType=OP_BUY ;


sinon CurType=OP_SELL ;




return(curType);

Alerte("end CurType()");

//>>>>>>>>>>>>>>>>>>>>>>>>>>

}//"end CurType()" ;


//------------------------------------------------------------- -------------------------------------------------- -------------------------------------



//============================================== = =============================================== == ===========================


bool FastMACrossUp()

{


if(!(Delta==LastDelta))Alert("Delta=",DoubleToStr(Delta,5),"LastDelta=",DoubleToStr(LastDelta,5));


Alert("LastDelta=",DoubleToStr(LastDelta,5));

Alerte("!(Delta==DernierDelta)=",!(Delta==DernierDelta));

if(((Delta!=DernierDelta) && (Delta>=0) && (DernierDelta<=0)))Alert("( Delta!=DernierDelta)&&(Delta>=0)&&(DernierDelta<=0)= " ,

(Delta!=DernierDelta) && (Delta>=0) && (DernierDelta<=0));

Alerte("(Delta>=0)=",(Delta>=0),"(DernierDelta<=0)=",(DernierDelta<=0));

if(Delta!=LastDelta)Alert("Delta=",DoubleToStr(Delta,5)," LastDelta=",DoubleToStr(LastDelta,5));

Alerte("(Delta>=0)=",(Delta>=0)," ( DernierDelta<=0)=",(DernierDelta<=0)," TickNum=",TickNum);

Alerte("(Delta>=0)=",(Delta>=0));

Alerte("DernierDelta<=",(DernierDelta<=0));

Alert("!(Delta==DernierDelta)&&((Delta>=0)&&(DernierDelta<=0))=",!(Delta==DernierDelta)&&((Delta>=0)&&(DernierDelta<=0 )));

Alerte(((Delta !=DernierDelta)&&((Delta>=0)&&(DernierDelta<=0))) );

Alerte(" (Delta !=DernierDelta)= ",(Delta !=DernierDelta)," (Delta>=0)= ",(Delta>=0)," (DernierDelta<=0)= ",(DernierDelta<= 0));

return((Delta !=DernierDelta)&&(Delta>=0)&&(DernierDelta<=0) );

} //fin de FastMACrossUp()

//------------------------------------------------------------- -------------------------------------------------- --------------------



//============================================== = =============================================== == ===================

bool FastMACrossDn()

{

if(!(Delta==LastDelta)&&(Delta<=0)&&(LastDelta>=0))Alert("Delta=",DoubleToStr(Delta,5)," LastDelta=",DoubleToStr(LastDelta,5)) ;


Alert("LastDelta=",DoubleToStr(LastDelta,5));

Alerte("!(Delta==DernierDelta)=",!(Delta==DernierDelta));

Alerte("(Delta<=0)=",(Delta<=0));

Alert("DernierDelta>=0",(DernierDelta>=0));

if((Delta!=DernierDelta) && (Delta<=0) && (DernierDelta>=0))

Alerte("(Delta<=0)=",(Delta<=0),"(DernierDelta>=0)=",(DernierDelta>=0));

Alert(" (Delta !=DernierDelta)&&((Delta<=0)&&(DernierDelta>=0))= ",(Delta !=DernierDelta) && (Delta<=0) && (DernierDelta>=0) );

if(Delta!=LastDelta)Alert(" Delta=",DoubleToStr(Delta,5)," LastDelta=",DoubleToStr(LastDelta,5));

Alerte("(Delta<=0)=",(Delta<=0)," (DernierDelta>=0)=",(DernierDelta>=0)," TickNum=",TickNum);

Alerte(" (Delta !=DernierDelta)&&((Delta<=0)&&(DernierDelta>=0))= ",(Delta !=DernierDelta)&&((Delta<=0)&&(DernierDelta>=0)) );

return((Delta !=DernierDelta)&&(Delta<=0)&&(DernierDelta>=0) );

}//fin FastMACrossDn()

//------------------------------------------------------------- -------------------------------------------------- --------------------------------------------



//============================================== = =============================================== == ==================================

booléen FastMAIsAbove()

{

Alert("demander FastMAIsAbove()");

Alerte(" (Delta>=0)=",(Delta>=0)," (DernierDelta>=0)=",(DernierDelta>=0));

si(((Delta>=0)&&(DernierDelta>=0)))

Alert(" FastMA= ",DoubleToStr(FastMA,5)," SlowMA= ",DoubleToStr(SlowMA,5));

Alert(" Delta= ",DoubleToStr(Delta,5)," LastDelta= ",DoubleToStr(LastDelta,5) );

Alert("end FastMAIsAbove()");

Alerte("(Delta==DernierDelta)&&(Dernier>=0)&&(DernierDelta>=0)=",(Delta==DernierDelta)&&(Delta>=0)&&(DernierDelta>=0) );

Alert("end FastMAIsAbove()");

return((Delta==DernierDelta)&&(Delta>=0)&&(DernierDelta>=0));

}//fin FastMAIsAbove()

//============================================== = =============================================== == ================


//------------------------------------------------------------- -------------------------------------------------- ------------------

bool FastMAIsBelow()

{


return((Delta==DernierDelta)&&(Delta<=0)&&(DernierDelta<=0));

}//fin FastMAIsBelow()*/

"

//------------------------------------------------------------- -------------------------------------------------- ------------------

//************************************************ ******************************************

"


 
Dmitriy Voevodkin:

Init ne peut pas être lancé de n'importe quelle façon, il est automatiquement lancé une fois quand l'indicateur/expert est lancé, comme DeInit.

Vous pouvez également créer une variable booléenne statique et l'utiliser avecIsConnected(). Et lorsque la connexion est rétablie à l'arrivée d'un nouveau tic, il faut d'abord lancer une fonction d'initialisation qui lui est propre. MaisIsConnected() ne devrait pas être utilisé dans OnCalculate(), mais dans OnTimer() et ma propre fonction d'initialisation devrait être utilisée au tout début de OnCalculate().


Merci, je vais y réfléchir, je pensais juste qu'il y avait déjà des solutions typiques.......

 
buyanov:

Tous les codes

Wow, c'est beaucoup d'alertes.
 
Mihail Marchukajtes:

Merci, je vais y réfléchir, je pensais juste qu'il y avait déjà des solutions typiques disponibles.......

J'ai déjà écrit une réfutation des propos de cette personne. OnItit() est une fonction ordinaire. Faites-le quand vous en avez besoin.

 
buyanov:

Tous les codes


Je vous l'ai déjà dit - attachez le code en utilisant le bouton SRC. Désolé, tu es complètement désappris ?

Dites-moi, qui voudrait regarder ce tas de ferraille ?

 
Artyom Trishkin:

J'ai déjà écrit la réfutation des propos de cet homme. OnItit() est une fonction habituelle. Vous pouvez l'utiliser quand vous en avez besoin.


Eh bien, oui, je me demandais pourquoi ne pas l'appeler quand on se connecte. Il s'avère que vous le pouvez :-)

 
buyanov:

Tous les codes


Attention aux types variables.

Jetez toutes les alertes inutiles

Dossiers :
test.mq4  42 kb