Questions des débutants MQL4 MT4 MetaTrader 4 - page 59

 
Vitalie Postolache:
Ce sont les citations, elles sont de mauvaise qualité.

Le conseiller expert standard va bien avec eux. Et sur un compte de démonstration, le trading ne fonctionne pas non plus. Mes transactions ne s'ouvrent pas. Bien qu'ils devraient.

 
Michail_David:

L'examinateur standard est d'accord avec eux

Comparez le conseiller expert standard et votre conseiller expert, trouvez les différences et tirez-en des conclusions. Mais la formulation de l'erreur indique une mauvaise qualité des citations, lorsque les valeurs d'une TF ne coïncident pas avec les valeurs de l'autre TF.

Si ce code est écrit pour le trading en mode "prix ouverts seulement", alors ce problème peut être évité.

Ajouté. Vous essayez exactement de faire un code par les prix ouverts, il n'est pas clair pourquoi il devrait être testé par tous les ticks...
 
Vitalie Postolache:
Comparez la norme et la vôtre, trouvez les différences et tirez-en des conclusions. Vous pouvez échapper à ce genre de malchance si le code est écrit pour le trading en mode "prix ouverts uniquement".
Le modèle standard utilise également les prix de clôture, tout comme le mien.
 
Michail_David:
Le code standard utilise également les prix de clôture, comme le mien

Quelle EA qualifiez-vous de standard ? Je n'ai pas vu d'EA "auxprix de clôture" dans la livraison du terminal.

Et par prix ouverts, vous devez soit faire fonctionner l'ensemble du code de trading dans ce mode, soit ne pas le faire du tout. Seule une partie du code est utilisée sur une nouvelle barre, le reste fonctionnera sur chaque tick.

 
Vitalie Postolache:

Quelle EA qualifiez-vous de standard ? Je n'ai pas vu d'EA "auxprix de clôture" dans la livraison du terminal.

Et par prix ouverts, vous devez soit faire fonctionner l'ensemble du code de trading dans ce mode, soit ne pas le faire du tout. Vous n'avez qu'une partie du code utilisé sur une nouvelle barre, le reste fonctionnera sur chaque tick.

L'échantillon MACD est appelé standard. Serait-il préférable de déplacer la recherche d'un nouveau bar au début ?
 
Michail_David:
Je dirais qu'il s'agit d'un échantillon MACD standard. Voudriez-vous plutôt déplacer la recherche d'un nouveau bar au début ?

Où dans MACD Sample se trouve le mode "prix ouverts uniquement", je ne le vois pas ? Il est préférable de déplacer la recherche d'une nouvelle barre au début de OnTick().

Et c'est

static datetime New_Time=TimeCurrent();// Время текущего бара

Il est préférable de les déclarer en dehors de la fonction, à un niveau global.

Ou mieux encore, passez un peu de temps à chercher de meilleures façons de rechercher une nouvelle barre sur le forum.
 
Vitalie Postolache:

Où dans MACD Sample se trouve le mode "prix ouverts uniquement", je ne le vois pas ? Il serait préférable de déplacer la recherche d'une nouvelle barre au début de OnTick().

И

static datetime New_Time=TimeCurrent();// Время текущего бара

il est préférable de le déclarer en dehors de la fonction, à un niveau global.

J'ai dû mal comprendre le mode"prix ouverts uniquement" du conseiller expert standard. Je m'excuse pour ça. Je commence à peine à le comprendre. Merci pour les conseils. Pouvez-vous visualiser l'ensemble du code ? Il y aura peut-être d'autres commentaires. J'ai vraiment besoin d'un regard neuf. Je l'apprécierais vraiment.
 
Michail_David:
Les amis, un conseil. Le testeur donne une erreur : 2017.02.08 18:24:43.751 TestGenerator : unmatched data error (la valeur basse 1.09860 à 2016.07.27 19:30 n'est pas atteinte depuis la période la plus basse, le prix bas 1.09880 ne correspond pas)
Qu'est-ce que cela signifie et comment y remédier ? Qu'est-ce que j'ai fait de mal ?
double Margin_Percent=AccountFreeMargin()*Percent/100; //Используемые средства для открытия ордеров
double Lots=Margin_Percent/MarketInfo(Symbol(),MODE_MARGINREQUIRED);//Определение общего количества лотов
double Lots_Volume=(MathFloor(Lots)+MarketInfo(Symbol(),MODE_LOTSTEP));
double MacdCurrent=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_CLOSE,MODE_MAIN,1); //Параметры MACD основной линии текущего бара
double MacdPrevious1=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_CLOSE,MODE_MAIN,2);//Параметры MACD основной линии предыдущего бара
double MacdPrevious2=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_CLOSE,MODE_MAIN,3);//Параметры MACD основной линии со смещением на 2 бара
double StopLoss=iSAR(NULL,0,Step_PSAR,Maximum_PSAR,0);//Параметры Трейлинг стоп по параметрам ParabolicSAR текущего бара
double Previous_StopLoss=iSAR(NULL,0,Step_PSAR,Maximum_PSAR,1);//Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара
double CurrentPSAR=iSAR(NULL,0,Step_PSAR,Maximum_PSAR,1);//Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  
//------
  }
//-------------------------------------------------------------------------------------------------------
C'est la première fois que je vois des calculs de variables effectués globalement en dehors des fonctions génératrices d'événements et le compilateur ne le jure même pas ? Bon sang, le compilateur ne se trompe pas.
 
Sergey Gritsay:
C'est la première fois que je vois des calculs de variables effectués globalement en dehors des fonctions générant des événements, et le compilateur ne se plaint même pas ?
Non. Il accepte tout comme c'est.
 
Michail_David:
Non. Il accepte tout tel quel.
mettez tout ce que j'ai souligné dans la fonction OnTick()
Raison: