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

 
Roman:

Parce qu'il y a beaucoup d'incohérences avec les réalités actuelles.
Et vous essayez de trouver des excuses à ces incohérences.
Au contraire, j'ai écrit qu'une coche n'est pas égale à un point !
C'est votre propre point interne, inventé.
Compte tenu du fait que le point correspondait autrefois exactement à un point, lorsqu'il n'y avait que quatre chiffres.
Mais après l'introduction du cinquième chiffre, vous avez commencé à inventer des noms avec vos excuses.

Non, ça ne l'est pas. Vous avez suggéré que la distance soit indiquée non pas en points, mais en coches.

C'est absurde. La distance est la distance. Et la taille du tick est le pas par lequel le prix bouge le moins possible à un moment donné.

C'est pourquoi vous ne demandez pas la distance entre un point A et un point B, mais le nombre de pas nécessaires pour parcourir cette distance.

Je te le dis, c'est tout mélangé...

Votre réalité est un peu un coupe-gorge. Il ne contient pas la moitié des concepts admis. Il y a quelque chose qui vient de ta tête.

 
Roman:

Probablement parce que vous devez renvoyer la valeur de retour de la fonction.

Merci pour la réponse, mais toujours pas de solution au problème... J'ai besoin que le paramètre de la fonction "str" renvoie à MQL son état modifié.

extern "C" __declspec(dllexport) wchar_t* __stdcall ToString(wchar_t* &str)
{
        str = L"-- Я изменил параметр str :) --"; // Вот это я хочу получить!
        return L"--- Привет! ---";
}

Dans MQL4 pour le moment :

#import  "Win32Project1.dll"
   string ToString(string &str);
#import

Eh bien et l'appel de la fonction elle-même :

string str = "";
Print("-> Метод: " + ToString( str ));
Print("-> Параметр: " + str);

Le résultat est le suivant :

C'est-à-dire que la valeur est passée en paramètre, mais elle n'est pas correcte... Comment puis-je résoudre ce problème ? :)

 
Vadim Lin:

Merci pour la réponse, mais toujours pas de solution au problème... J'ai besoin que le paramètre de la fonction "str" renvoie à MQL son état modifié.

Dans MQL4 pour le moment :

Eh bien et l'appel de la fonction elle-même :

Le résultat est le suivant :

C'est-à-dire que la valeur est passée en paramètre, mais elle n'est pas correcte... Comment puis-je résoudre ce problème ? :)

Le monsieur se repose pendant 24 heures pour la pêche à la traîne.
 
Artyom Trishkin:

Si le terminal tombe en panne, il faudra le redémarrer. L'indicateur devra être replacé sur le graphique, ou pour exécuter l'Expert Advisor, qui utilise les données de cet indicateur (alors l'Expert Advisor chargera lui-même cet indicateur lors de son accès). Dans ce cas (et même lors d'un redémarrage normal du terminal avec un chargement automatique des programmes installés sur le graphique), l'indicateur dessinera à nouveau toutes ses lignes - il n'est pas nécessaire de sauvegarder quoi que ce soit. Ces lignes peuvent être relues plus tard. De plus, ils doivent être lus de toute façon.

Pour que l'EA ne surveille que les lignes créées par l'indicateur, il suffit de regarder les noms des lignes créées par l'indicateur et d'essayer de trouver la sous-chaîne répétitive dans les noms - la même pour toutes les lignes. Recherchez les lignes nécessaires par ces sous-chaînes.

C'est simple - il suffit de regarder la liste des objets lorsque l'indicateur fonctionne.

Nous nous éloignons du sujet ! Plus on discute, plus on s'éloigne du sujet ! :)

L'homme avait juste besoin d'obtenir l'événement, quand le prix franchit la ligne...

Ensuite, j'ai commencé à spéculer sur la raison pour laquelle mon exemple était "problématique"... Bien qu'en fait, cela résout le problème, qui en principe était posé. Ensuite - l'imagination de l'auteur, j'ai aidé autant que j'ai pu))


Si c'est hors sujet... et de surcharger le terminal, les lignes n'iront nulle part, et il y a des chances pour qu'elles restent à leur place. Si elles sont renommées ou étiquetées, vous pouvez utiliser la logique conventionnelle pour comprendre que ces lignes ont déjà été déclenchées à un moment donné et qu'elles doivent être ignorées. Mais ce n'est pas la tâche qui nous occupe)) En outre, si l'indicateur redessine les lignes, et alors ? Comment allez-vous déterminer que certains d'entre eux se sont déjà déclenchés ?))

S'il n'y a rien sur le graphique, à part les lignes qui doivent être surveillées (comme le dit l'auteur), alors il n'est même pas nécessaire de les filtrer par nom.

Mais bien sûr, l'idée n'est pas de tracer des lignes du tout, mais d'enregistrer tous les niveaux dans un fichier et de vérifier lesquels ont déjà fonctionné. Et surchargez le terminal, vous vous en souviendrez sans noms d'objets)).

 
Roman:

Où est la logique dans les gars.
Pour cette raison, il s'agit d'une erreur grossière, et si elle est faite intentionnellement, c'est une diversion ;))

Petya : Et qu'est-ce que la logique, Vassili Ivanovitch ?

V.I. : Eh bien, c'est simple, regardez, avez-vous des allumettes ?

Petya : Je le fais !

V.I. : Donc tu fumes, et si tu fumes, tu bois, et si tu bois, tu sors avec des filles, compris ?

Petya : Oui, c'est simple !

Petyka à un homme de l'Armée rouge qui passe : avez-vous des allumettes ?

Homme de l'armée rouge : Non.

Petya : Donc, vous êtes un "faggot".



La LOGIQUE, c'est tellement étrange, et sous la LOGIQUE, vous n'avez pas à ajuster vos attentes.

Si un développeur a intégré un nouveau type de données ENUM_TIMEFRAMES, il l'utilisera dans d'autres parties du programme - c'est la logique.


SZS : Bien sûr, on pourrait arguer que MT4 a été conçu par des personnes qui savaient ce qui était nécessaire pour le trading, tandis que "l'autre terminal" a été écrit par un groupe d'extraterrestres ...... Mais nous allons dépasser le format de communication de ce forum, c'est pourquoi nous ne devrions pas parler de sabotage - nous utilisons ce qui nous a été donné, ce qui nous manque - nous l'écrivons nous-mêmes, grâce à la performance du terminal est plus que suffisant

Comme ceci

 
Igor Makanu:


La LOGIQUE, c'est tellement bizarre, et sous la LOGIQUE, vous n'avez pas à ajuster vos attentes.

Si le développeur a intégré un nouveau type de données ENUM_TIMEFRAMES, cela signifie qu'il a intégré l'utilisation de ce type dans d'autres parties du programme - c'est la logique.


SZS : Bien sûr, on pourrait arguer que MT4 a été conçu par des personnes qui savaient ce qui était nécessaire pour le trading, tandis que "l'autre terminal" a été écrit par un groupe d'extraterrestres ...... Mais nous allons dépasser le format de communication de ce forum, c'est pourquoi nous ne devrions pas parler de sabotage - nous utilisons ce qui nous a été donné, ce qui nous manque - nous l'écrivons nous-mêmes, grâce à la performance du terminal est plus que suffisant

comme ceci

heureusement qu'ils ne cherchent pas si souvent la logique dans la syntaxe)))) La logique dans la vitesse est vue dans le cas des timeframes mais je peux me tromper).

 
Igor Makanu:

Petya : Et qu'est-ce que la logique, Vassili Ivanovitch ?

J'ai entendu une autre version :

Anka mange du hareng ? Puis elle boit de l'eau...

La conclusion logique est qu'elle... peut.

 
Vadim Lin:



MAIS, que se passe-t-il si l'offre, pour une raison ou une autre, franchit la ligne, et n'est pas égale au prix de la ligne, alors que... ? Fournissez alors au moins une variable, dans laquelle le tick précédent est stocké, et si un nouveau tick traverse votre ligne - alors faites quelque chose... Mais dans ce cas, n'oubliez pas de prévoir un franchissement "admissible", car si le marché s'ouvre avec un Gap important, ou simplement un grand saut de prix, vous ouvrirez sur de nombreuses lignes en une seule fois et probablement pas là où vous le souhaitez. Si le franchissement est plus qu'acceptable, vous recevrez seulement un message...

Merci pour votre aide, l'action a lieu lorsque vous définissez les lignes manuellement et que vous traversez ces lignes, mais pour une raison quelconque, l'EA ne voit pas les lignes de l'indicateur et n'effectue pas l'action que j'ai spécifiée. Toutes les lignes d'indicateurs ont la phrase suivante dans le nom @Line (plus la numérotation "week-4" qui change) - peut-on l'utiliser d'une manière ou d'une autre ?

//+------------------------------------------------------------------+
void OnTick()
  {
//---
        iCustom(Symbol(), 0, "ITS-Level Gun", 0, 0);  
 
        for(int i = ObjectsTotal() - 1; i >=0; i--) {

// все что не горизонтальные линии - игнорируем

        if(ObjectType(ObjectName(i)) != OBJ_HLINE) continue; 

        double PriceLine = NormalizeDouble(ObjectGet(ObjectName(i), OBJPROP_PRICE1), Digits());
        
// измените условие Bid == PriceLine
        
             if(Bid == PriceLine)
             {
  {OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);}
        } 
  
  }
  }
//+------------------------------------------------------------------+
Dossiers :
 
Erreur d'écriture : le nom des lignes elles-mêmes ne change pas, mais toutes ont la phrase commune@Line dans leur nom.
 
Fib0 RU:
Erreur d'écriture : le nom des lignes elles-mêmes ne change pas, mais toutes ont la phrase commune@Line dans leur nom.
if(Bid == PriceLine)

Il ne disparaîtra pas.

lire

Особенности работы с числами типа double в MQL4
Особенности работы с числами типа double в MQL4
  • www.mql5.com
При программировании на языке MQL4 у новичков порой возникают ситуации, когда результаты некоторых математических вычислений отличаются от ожидаемых. При этом программа компилируется и работает, но не так, как нужно. Они начинают разбираться в программе, находят новые "ошибки" в языке, реализации функций и т.п. В большинстве случаев последующий...