[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 49

 
xruss >> :

Je posterai une partie de mon code plus tard, mais je pense que ce serait plus cool avec des cases à cocher. Comment les écrire dans mql4 ?

https://book.mql4.com/ru/variables/arrays

A la fin de cette section, le principe d'utilisation des drapeaux est très bien décrit par un exemple du fait de former une nouvelle barre. De même, nous créons deux variables de type bool qui indiqueront la possibilité d'ouvrir des transactions d'un certain type, par exemple Buy_Allowed et Sell_Allowed. Par défaut, nous attribuons la valeur true à ces variables. S'il y a un signal d'achat, en cas d'ouverture réussie de la position, nous définissons Buy_Allowed=false ; dans ce cas, avant OrderSend(), nous ajoutons la condition de son exécution pour les transactions d'achat uniquement si Buy_Allowed==true. Lorsqu'un signal d'inversion est reçu, nous rejetons le drapeau Buy_Allowed=true. Le même schéma est utilisé pour les opérations de vente, mais avec l'indicateur Sell_Allowed.

 
Everlost >> :

https://book.mql4.com/ru/variables/arrays

A la fin de cette section, le principe d'utilisation des drapeaux est très bien décrit par l'exemple du fait de former une nouvelle barre. Par analogie, nous créons deux variables de type bool qui indiqueront la possibilité d'ouvrir des transactions d'un certain type, par exemple Buy_Allowed et Sell_Allowed. Par défaut, nous attribuons la valeur true à ces variables. S'il y a un signal d'achat, en cas d'ouverture réussie de la position, nous définissons Buy_Allowed=false ; dans ce cas, avant OrderSend(), nous ajoutons la condition de son exécution pour les transactions d'achat uniquement si Buy_Allowed==true. Lorsqu'un signal d'inversion est reçu, nous rejetons l'indicateur Buy_Allowed=true. Le même schéma est utilisé pour les opérations de vente, mais avec l'indicateur Sell_Allowed.

Merci. J'ai posté une partie du code dans le dernier message.

 

J'ai déjà téléchargé mon EA Daydream depuis ce site.Lorsque je l'ai testé, le lot maximum pris dans le test était de 0.1 et le solde était de 10,000. Je l'ai testé avec GBPUSD 15 dans Meta Trader 4 222.

Deuxième question : qu'est-ce que le "défaut de concordance" dans le rapport d'essai ?

La troisième question, pourquoi je n'obtiens pas de signal ? J'ai l'impression que c'est lié d'une manière ou d'une autre à la première question, c'est-à-dire que quelque chose cloche dans le programme. J'ai essayé d'utiliser l'échantillon MACD M1 EURUSD (qui est fourni en standard), j'ai diminué le MACD OpenLevel à 1 et je n'ai rien obtenu.

Je ne sais pas comment l'utiliser.

 
xruss >> :

Merci, je vais m'instruire. J'ai posté une partie du code dans le dernier message.

int    ORDtype=-1, ORDtime=0;
double ORDprofit;

for (int i=OrdersHistoryTotal()-1; i>=0; i--) {
  if (OrderSelect( i, SELECT_BY_POS, MODE_HISTORY)) {
    if (OrderSymbol()==Symbol()) {
      if (OrderCloseTime()!=0 && OrderCloseTime()> ORDtime) {
        ORDtime=OrderCloseTime();
        ORDtype=OrderType();
        ORDprofit=OrderProfit();
      }
    }
  }
}

//........

if ( ORDtype==-1)
{
  // В истории не нашлось подходящих ордеров
}

if ( ORDtype==OP_SELL)
{
  // Последним был закрыт Sell
}

if ( ORDtype==OP_BUY)
{
  // Последним был закрыт Buy
}
La variante de travail de votre code. Vous n'auriez pas dû supprimer la vérification (OrderCloseTime()>time). Sans elle, tout le sens serait perdu - nous choisissons le dernier ordre clôturé en comparant l'heure de clôture de chaque ordre recherché avec l'heure de clôture la plus ancienne des ordres trouvés précédemment, que nous enregistrons dans la variable ORDtime. Mais vous venez de passer en revue tous les ordres de l'histoire. Vous aviez également une condition sur ORDprofit, mais vous pouvez l'ajouter vous-même. :)
 
Everlost >> :
Version de travail de votre code. Vous n'auriez pas dû supprimer la vérification (OrderCloseTime()>time) car sans elle, tout le sens serait perdu - nous choisissons le dernier ordre clôturé en comparant l'heure de clôture de chaque ordre recherché avec l'heure la plus ancienne des ordres trouvés précédemment. Vous aviez également une condition sur ORDprofit, mais vous pouvez l'ajouter vous-même. :)

oui j'avais une condition pour interdire l'ouverture dans la même direction si le dernier ordre avait un profit :)

Merci beaucoup ! !!))

 
zas писал(а) >>

Deuxième question : que sont les " erreurs de divergence " dans le rapport d'essai ?

La question a été posée de nombreuses fois, il est plus facile pour vous de chercher...

zas a écrit >>

J'ai essayé d'utiliser GBPUSD 15 sur un Meta Trader 4 222. Ce qui est intéressant, c'est que le test avec 1 lot sur un autre ordinateur était correct. Quelle est l'astuce ?

Peut-être que MT4 sur l'autre ordinateur est attaché au compte d'un autre courtier, différents courtiers, différentes conditions de trading... Ou peut-être que l'EA détermine le lot de manière aléatoire). Vous pouvez avoir besoin du code du conseiller expert, des déclarations, et vous obtiendrez une réponse précise.

zas a écrit(a) >>

J'ai l'impression que c'est lié d'une manière ou d'une autre à la première question, c'est-à-dire que quelque chose cloche dans le programme. J'ai essayé d'utiliser l'échantillon MACD M1 EURUSD (qui est fourni en standard), j'ai diminué le MACD OpenLevel à 1 et je n'ai rien obtenu.

Regardez le journal du testeur, si vous parlez d'un testeur. Affichez l'ensemble des paramètres, et le résultat de l'EA de test (où il n'y a pas de signaux). Il semble que tous vos problèmes viennent du manque d'expérience, et non des défauts du programme...

 
VladislavVG >> :

Une option :

Définissez la variable bool NeedAlert sur true lorsque vous commencez à négocier.


Merci, et je pensais que cela ne fonctionnerait pas - comme la boucle ne fonctionnera pas - il s'avère que j'ai oublié la parenthèse curly :))

 
Voici une question : comment calculer la taille du lot de sorte que le bénéfice estimé pour 20 pips soit de 4 % du dépôt actuel ?
 
xruss писал(а) >>

Merci, je vais m'instruire. J'ai posté une partie du code dans le dernier message.

//+------------------------------------------------------------------+
// Проверка последнего ордера по условию                             |
//+------------------------------------------------------------------+
bool LastCloseOrd(string Sy = "",//Если Sy=="" на принадлежность символу не проверяем
                  int  Type = -1,//Если Typ==-1 любой тип ордера
                  int Magic = -1,//Если Magic=-1любой магик
                  int Pr_Ls =  0){//Если Pr_Ls =0 без проверки на профит, если <0 то фильтр лосевых , если >0 то фильтр профитных ордеров
                  int time=0;
if(OrdersHistoryTotal()<1){return(false);}//Если нет закрытых ордеров выходим 
  for(int i=0; i<OrdersHistoryTotal(); i++){//Перебираем закрытые ордера
    if(OrderSelect( i, SELECT_BY_POS, MODE_HISTORY)){//Выбираем ордер из истории
      if(OrderCloseTime()!=0){//Если ордер уже закрыт
        if( Sy==""||OrderSymbol()== Sy){//если совпадает символ, или нет проверки на символ
          if( Type==-1||OrderType()== Type){//если совпадает тип, или нет проверки на тип
            if( Magic==-1||OrderMagicNumber()== Magic){//если совпадает магик , или не проверки на магик
              if(OrderCloseTime()> time){//если время закрытия ордера больше чем предыдущее
                time=OrderCloseTime();//записываем время закрытия (в конце цикла у нас в ловушке булет сидеть последний закрытый ордер
              }                                                  //попадающий под все условия выставленных фильтров)
            }
          }
        }
      }
    }
  }  
if( Pr_Ls==0&&time!=0){return(true);}//если нет условия на профит-лосс подтверждаем наличие ордера
if( Pr_Ls<0&&OrderProfit()<0){return(true);}//если ордер лосевый подтверждаем наличие ордера
if( Pr_Ls>0&&OrderProfit()>0){return(true);}//если ордер профитный подтверждаем наличие ордера
return(false);//нет ни одного попадающего под выставленные условия ордера
} 
 

Il s'agit des erreurs dans le testeur.........

Si quelqu'un le sait, merci de le signaler.....

')' - wrong parameters count	C:\Program Files\MetaTrader - Alpari\experts\expertCCI_WILLIAMS.mq4 (64, 37)
')' - wrong parameters count	C:\Program Files\MetaTrader - Alpari\experts\expertCCI_WILLIAMS.mq4 (65, 37)
Que signifient les chiffres 64.37 et 65.37 ? ? ???????????
Raison: