[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 698

 
valenok2003:

copyright
string copyright = "\xA9";
 
ToLik_SRGV:

Merci.
 
De nouveau, je reviens à la question que j'ai posée à https://forum.mql4.com/ru/15972/page693 - ici, le transfert de paramètres entre indicateurs et indicateurs - experts. Bien sûr, l'utilisation proposée des variables globales résout partiellement ce problème, mais une autre question se pose ! Selon la description des variables globales ......... Une variable GV ne peut être que de type double, mais comment voulez-vous que les Expert Advisors sachent si la variable provient d'un certain symbole et d'une certaine période de temps lorsqu'ils reçoivent la valeur d'une variable globale ?
 
Infinity:
Encore une fois, je reviens à la question que j'ai posée à https://forum.mql4.com/ru/15972/page693 - ici, le passage de paramètres entre indicateurs et indicateurs - experts. Bien sûr, l'utilisation proposée des variables globales résout partiellement ce problème, mais une autre question se pose ! Selon la description des variables globales ......... Une variable GV ne peut être que de type double, mais comment voulez-vous que les Expert Advisors sachent si la variable provient d'un certain symbole et d'une certaine période de temps lorsqu'ils reçoivent la valeur d'une variable globale ?

Encodez les symboles. Bien qu'il soit possible d'utiliser des noms de variables à cette fin, par exemple EUSRUSD_H1_Var1
 
cyclik33:


Fait dans le programme Gorando, avec l'ajout de votre martin.

//+------------------------------------------------------------------+
//| Copyright 2005, Gordago Software Corp.
//| http://www.gordago.com/ |
//| version 2.0 |
//+------------------------------------------------------------------+




void OpenBuy() {
double dStopLoss = 0, dTakeProfit = 0 ;
double Lots_New = Lot ;

si (isLossLastPos(NULL, -1, MAGIC))
Lots_Nouveaux *= 2 ;
sinon si (!isLossLastPos(NULL, -1, MAGIC))
Lots_Nouveau = Lot ;


si (dBuyStopLossPoint > 0)
dStopLoss = Bid-dBuyStopLossPoint*Point ;

si (dBuyTakeProfitPoint > 0)
dTakeProfit = Bid + dBuyTakeProfitPoint * Point ;

int numorder = OrderSend(Symbol(), OP_BUY, Lots_New, Ask, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenBuy) ;

si (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName) ;
}

void OpenSell() {
double dStopLoss = 0, dTakeProfit = 0 ;
double Lots_New = Lot ;

si (isLossLastPos(NULL, -1, MAGIC))
Lots_Nouveaux *= 2 ;
sinon si (!isLossLastPos(NULL, -1, MAGIC))
Lots_Nouveau = Lot ;

si (dSellStopLossPoint > 0)
dStopLoss = Ask+dSellStopLossPoint*Point ;

si (dSellTakeProfitPoint > 0)
dTakeProfit = Ask-dSellTakeProfitPoint*Point ;

int numorder = OrderSend(Symbol(),OP_SELL, Lots_New, Bid, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenSell) ;

si (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName) ;
}

Vous avez

void OpenBuy() {

double dStopLoss = 0, dTakeProfit = 0 ;
double Lots_New = Lot ;

si (isLossLastPos(NULL, -1, MAGIC))
Lots_Nouveaux *= 2 ;
sinon si (!isLossLastPos(NULL, -1, MAGIC))

Lots_Nouveau = Lot ;

est une fonction et au tout début de cette fonction, vous attribuez la valeur = Lot à la variable Lots_Nouveau ;

Pensez à la façon dont il changera par la suite si vous le ramenez toujours à son état d'origine ?

Où t'ai-je dit de l'écrire ? Dans les variables externes avant la fonction de démarrage...

Et normaliser la valeur du lot à la taille correcte :

Lots_New = NormalizeLot(Lot*2, False, "") ;

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 16.05.2008                                                     |
//|  Описание : Возвращает нормализованное значение торгуемого лота.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    lo - нормализуемое значение лота.                                       |
//|    ro - способ округления          (   False    - в меньшую,               |
//|                                        True     - в большую сторону)       |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//+----------------------------------------------------------------------------+
double NormalizeLot(double lo, bool ro=False, string sy="") {
  double l, k;
  if (sy=="" || sy=="0") sy=Symbol();
  double ls=MarketInfo(sy, MODE_LOTSTEP);
  double ml=MarketInfo(sy, MODE_MINLOT);
  double mx=MarketInfo(sy, MODE_MAXLOT);

  if (ml==0) ml=0.1;
  if (mx==0) mx=100;

  if (ls>0) k=1/ls; else k=1/ml;
  if (ro) l=MathCeil(lo*k)/k; else l=MathFloor(lo*k)/k;

  if (l<ml) l=ml;
  if (l>mx) l=mx;

  return(l);
}
 
Vinin:

Codifier les symboles. Cependant, nous pouvons utiliser des noms de variables à cette fin, par exemple EUSRUSD_H1_Var1.


Bien ! Merci ! Mais ce n'est toujours pas clair... Il s'avère que dans l'indicateur, je dois écrire tous les noms de variables, correspondant au nombre total de symboles possibles. Et si je veux passer un paramètre de l'indicateur à un moment prédéfini, je devrai écrire le code de définition du symbole de l'indicateur. Et ensuite, en utilisant des comparaisons ou d'autres fonctions de type cas, je déterminerai dans quelle variable globale nommée écrire le paramètre ! Je comprends tout correctement ! ?

Et voici une autre question rhétorique, ou juste pour connaître votre opinion. Il existe des "modèles" dans la nature de l'analyse. Les schémas ne sont rien d'autre que des modèles basés sur certains moments (ou paramètres) répétitifs. Mais malheureusement, le marché est une substance instable, de sorte que chaque modèle peut, dans une certaine mesure, être traité comme un modèle inexact, ou un peu dévier de certains paramètres, étant fidèle à la formation du modèle. Si nous prenons n'importe quel intervalle de temps, par exemple 15 minutes, comme base d'analyse, nous verrons qu'il y aura un certain nombre de modèles qui apparaîtront dans certaines conditions. Et il y aura des situations où le modèle ne sera pas formé, mais ces situations sont très proches de la formation du modèle, elles ne correspondent simplement pas à certains paramètres (elles ont un peu dévié). Cette situation aurait pu être évitée par des conditions raisonnables de formation des motifs. Dans ce cas, il y aurait plus de modèles et plus de possibilités d'entrer sur le marché, mais le nombre de faux modèles augmenterait parce que les paramètres ne sont pas spécifiés strictement. (Si nous considérons qu'avec des paramètres stricts, le modèle peut même ne pas apparaître dans un jour avec ces conditions).

Question : avec quels paramètres (condition dure ou condition douce) dois-je former un modèle ?

 

Aidez-moi à résoudre un problème !


Je recherche les ordres qui sont ouverts ou en attente. S'ils sont disponibles, je détermine alors l'ordre d'achat ou de vente. Sous certaines conditions (si l'un est plus grand que l'autre ou plus petit que le troisième), je veux fermer cet ordre. Modifiez ses paramètres et ouvrez-le à nouveau.

Le problème est qu'il y a toujours un signal pour fermer l'ordre et pour l'ouvrir. C'est pourquoi mon ordre se ferme, puis se rouvre, et ainsi de suite, s'ouvre et se ferme ... )))

Comment résoudre ce problème ? Ga


 
Infinity:


Exactement ! Merci ! Mais ce n'est toujours pas clair. Il s'avère que dans mon indicateur, je devrai prescrire tous les noms de variables, correspondant au nombre entier de caractères possibles. Et si je veux passer un paramètre de l'indicateur à un moment prédéfini, je devrai écrire le code de définition du symbole de l'indicateur. Et ensuite, en utilisant des comparaisons ou d'autres fonctions de type cas, je déterminerai dans quelle variable globale nommée écrire le paramètre ! Je comprends tout correctement ! ?

Et juste une question rhétorique, ou juste pour avoir votre opinion. Il existe des "modèles" dans la nature de l'analyse. Les schémas ne sont rien d'autre que des modèles basés sur certains moments (ou paramètres) répétitifs. Mais malheureusement, le marché est une substance instable, de sorte que chaque modèle peut, dans une certaine mesure, être considéré comme un modèle inexact, ou s'écarter un peu de certains paramètres, en étant fidèle à la formation du modèle. Si nous prenons n'importe quel intervalle de temps, par exemple 15 minutes, comme base d'analyse, nous verrons qu'il y aura un certain nombre de modèles qui apparaîtront dans certaines conditions. Et il y aura des situations où le modèle ne sera pas formé, mais ces situations sont très proches de la formation du modèle, elles ne correspondent simplement pas à certains paramètres (elles ont un peu dévié). Cette situation aurait pu être évitée par des conditions raisonnables de formation des motifs. Dans ce cas, il y aurait plus de modèles et plus de possibilités d'entrer sur le marché, mais le nombre de faux modèles augmenterait parce que les paramètres ne sont pas spécifiés strictement. (Si nous considérons qu'avec des paramètres stricts, le modèle peut même ne pas apparaître dans un jour avec ces conditions).

Question : avec quels paramètres (condition dure ou douce) dois-je former un motif ?

Vous pouvez le faire avec des paramètres, mais pas avec des modèles. Vous devez d'abord définir les critères. Similaire, pas similaire. Et si elle est similaire, dans quelle mesure. Au moins de combien (pourcentages). Dans un cas, la composante temps, et dans l'autre, la composante prix. Comment les mettre en corrélation les uns avec les autres. Bien que je puisse attacher une couche neuronique. La couche de Kohonen fait un bon travail à ce sujet.
 

Aidez-moi à résoudre un problème !


Je recherche les ordres qui sont ouverts ou en attente. S'ils sont disponibles, je détermine alors l'ordre d'achat ou de vente. Sous certaines conditions (si l'un est plus grand que l'autre ou plus petit que le troisième), je veux fermer cet ordre. Modifiez ses paramètres et ouvrez-le à nouveau.

Le problème est qu'il y a toujours un signal pour fermer l'ordre et pour l'ouvrir. C'est pourquoi ma commande est fermée et ouverte à nouveau, et ainsi elle s'ouvre et se ferme ... )))

Comment résoudre ce problème ? Ga
 
Necron:
Roger, merci, mais ça ne fonctionne toujours pas correctement. J'ai essayé un autre chalutage, mais l'erreur est toujours là :( Y a-t-il une différence entre le chalutage d'une pose et le chalutage de plusieurs en même temps ?

Je comprends, vous définissez la variable ro au début de la fonction, mais vous ne l'assignez nulle part, c'est-à-dire qu'elle est 0.