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

 
Igor Makanu:

Je doute pouvoir expliquer, si c'est ce que vous demandez.

L'objet est ... Disons qu'une variable de type classe

dans votre section de code est la classe CProgram

quelque part dans votre code, il doit être écrit

et devra être appelé

Vous êtes DIEU ! !! Je t'ai compris et tout s'est arrangé)
 

Pouvez-vous me dire ce que cela signifie ?

La valeur de retour de'OrderSend' doit être vérifiée TestLibrary.mq4 64 6

 
MakarFX:

Pouvez-vous me dire ce que cela signifie ?

La valeur de retour de 'OrderSend' doit être vérifiée TestLibrary.mq4 64 6

Le résultat de OrderSend doit être vérifié. :-)

 
Maxim Kuznetsov:

Le résultat de OrderSend doit être vérifié. :-)

Je connais l'anglais)))

comment le vérifier ?

 
MakarFX:

Je connais l'anglais)))

Comment le vérifier ?

result=SomeOperation(....)

if (result!=ok) {

Print("Error");

}

 
Maxim Kuznetsov:

result=SomeOperation(....)

if (result!=ok) {

Print("Error");

}

Merci.
 
//+------------------------------------------------------------------+
//| TEST_V01.mq4 |
//| Copyright 2019, MetaQuotes Software Corp.
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#lien de propriété "https://www.mql5.com"
#propriété version "1.00"
#propriété stricte
#define MAGICMA 20131111
//--- Entrées
entrée int Risque = 1 ;
entrée int Max_Risk = 8 ;
entrée int SL = 100 ;
//+------------------------------------------------------------------+
//| Fonction d' initialisation de l'expert |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED) ;
}
//+------------------------------------------------------------------+
//| Fonction de désinitialisation experte |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Fonction tick expert |
//+------------------------------------------------------------------+
void OnTick()
{
si(OrdersTotal()==0)
if(OrderSend(Symbol(), OP_BUY, Lot_Calculate(Symbol(), Risk, Max_Risk, SL), Ask, 30, NormalizeDouble(Ask - SL*Point, Digits), NormalizeDouble(Ask + SL*Point, Digits),",MAGICMA,0,Blue)==-1)
Print("Erreur : ",GetLastError()) ;
}
//+------------------------------------------------------------------+
//-----------------------------------------------------------------
// Lot_Calculer |
//-----------------------------------------------------------------
double Lot_Calculate(string _symbol, int _risk, int _m_risk, int _pips)
{
_m_risk = Max_Risk ;
_pips +=20 ;
double minlot = MarketInfo(_symbole,MODE_MINLOT) ;
double maxlot = MarketInfo(_symbole,MODE_MAXLOT) ;
double steplot = MarketInfo(_symbole,MODE_LOTSTEP) ;
double money_risk = NormalizeDouble(AccountEquity()*_risk/100,2) ;
double calk_pip_cost = NormalizeDouble(money_risk/_pips,2) ; // coût par point
double lot_pip_cost = MarketInfo(_symbol,MODE_TICKVALUE) ; // le coût d'un pip à un changement de prix par volume d'un lot standard
// while(!MathIsValidNumber(lot_pip_cost || lot_pip_cost ==0)
//{
// lot_pip_cost = MarketInfo(_symbole,MODE_TICKVALUE) ;
//}
double lot = calk_pip_cost/lot_pip_cost ;
//-------------------------------------------------------------
double money_m_risk = NormalizeDouble(AccountEquity()*2*_risk/100,2) ; // Je double également le risque.
double _m_calk_pip_cost = NormalizeDouble(money_m_risk/_pips,2) ; // calcul de la valeur d'un point après doublement
double lot_m = _m_calk_pip_cost/lot_pip_cost ; // calcul du lot après le doublement
si(lot <= minlot) lot = minlot ;
else if(lot >= maxlot) lot = maxlot ;
autre si(lot > minlot && lot < maxlot)
{
int k = int((lot - minlot)/steplot) ;
lot = NormalizeDouble(minlot+k*steplot,2) ;
}
retour(lot) ;
// ------------------------------------------------------
{
if(lot_m <= minlot) lot_m = minlot ; // à partir de cette ligne, mon moi
else if(lot_m >= maxlot) lot_m = maxlot ;
autre si(lot_m > minlot && lot_m < maxlot)
{
int k = int((lot - minlot)/steplot) ;
lot_m = NormalizeDouble(minlot+k*steplot,2) ;
}
retour(lot_m) ;
si(OrderProfit()>0) lot-- ;
si(OrderProfit()<0) lot_m++ ;
}
if(_m_risk == Max_Risk) lot_m = lot ; // vous ne pouvez rien comprendre ici
retour(0) ;

}


Je me débats avec ça depuis deux jours. Je ne peux pas écrire la fonction qui recalcule le risque.

Si une transaction est fermée par TP, le risque reste le même.

Si le risque est fermé par SL, le risque est augmenté de 2 fois et ainsi de suite, jusqu'à la valeur prescrite dans les variables d'entrée du Conseiller Expert, disons Max_Risk = 8 ;

et ensuite réinitialisé au risque initial Risque = 1 ;

Eh bien, si après avoir doublé, la transaction est fermée à TR, nous revenons à nouveau au risque initial = 1 ;

Pouvez-vous nous aider ?

Merci d'avance.

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. и снова dll и маркет День добрый! Правило №1 dll на...
 
Ce n'est pas du tout ça.
 

Bonjour !

Professionnels, s'il vous plaît, aidez-nous. Je ne peux pas résoudre un seul problème. Voici le code :


datetime some_time=TimeCurrent() ;

int start()

{

double somme ;

double rasoir ;

int k=iBarShift(",PERIOD_M5,some_time) ;

double VAL0=MathAbs(iATR(NULL,0,1,1))/Point ;

double VAL1=MathAbs(iATR(NULL,0,1,0))/Point ;

si (VAL1>VAL0)

{

razn =MathAbs((iATR(NULL,0,1,0))-(iATR(NULL,0,1,1))/Point ;

for(int i = k ; i >= 1 ; i--)

{

summ=summ+razn ;

}

Comment("Périodes utilisées : ",k,"\n,

"ATR précédent : "+VAL0+"\n",

"ATR actuel : ",VAL1,"\N",

"Différence ATR : ",razn,"\n",

"Différence ATR :",summ, "\n") ;

}

retour(0) ;

}

L'idée est la suivante : le conseiller expert compte la différence entre la valeur ATR actuelle et la précédente. Mais seulement avec un ATR croissant.

Cette différence est affichée dans la variable "razn". J'ai besoin que la valeur de la variable "razn" soit ajoutée/cumulée à la variable "summ" à chaque arrivée d'une nouvelle barre.

Dans la version actuelle, l'accumulation de "summ" ne fonctionne pas correctement.

Je pense que c'est à propos des boucles.


Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Все предопределенные периоды графиков имеют уникальные идентификаторы. Идентификатор PERIOD_CURRENT означает текущий период графика, на котором запущена mql5-программа.
 
Bonjour aux membres du forum. Je ne trouve aucune information. Existe-t-il un outil qui dessine automatiquement des lignes (non horizontales) à partir des points bas et des points hauts jusqu'à un certain niveau de point ? En d'autres termes, définissez-vous le bas ou le haut et tracez la ligne jusqu'au chandelier qui fixe la distance en pips par rapport au haut ou au bas ? J'ai découvert que l'indicateur Fractal permet de déterminer le bas et le haut. Mais je n'ai pas pu trouver un tel add-on me permettant de tracer une ligne jusqu'au point de changement de prix d'un certain nombre de points.