[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 241

 
gyfto:

Comment puis-je m'y prendre pour créer une classe ou une structure ? Dans mql4. Peut-être que si vous faites référence aux cellules de mémoire... Comment faire ?

структура WNDCLASSEX
typedef struct tagWNDCLASSEX {
  UINT      cbSize;
  UINT      style;
  WNDPROC   lpfnWndProc;
  int       cbClsExtra;
  int       cbWndExtra;
  HINSTANCE hInstance;
  HICON     hIcon;
  HCURSOR   hCursor;
  HBRUSH    hbrBackground;
  LPCTSTR   lpszMenuName;
  LPCTSTR   lpszClassName;
  HICON     hIconSm;
} WNDCLASSEX, *PWNDCLASSEX;
структура WNDPROC (не разобрался)
LRESULT CALLBACK WindowProc(
  _In_  HWND hwnd,
  _In_  UINT uMsg,
  _In_  WPARAM wParam,
  _In_  LPARAM lParam
);
C++MQL4octet
UINTint2*4
WNDPROC (structure)int[4]4*4
intint2*4
tous sur H* (HICON, HBRUSH, etc.)int5*4
LPCTSRchaîne de caractères2*0x100
C++MQL4octet
HWNDint4
UINTint4
WPARAMint4
LPARAMint4

Total 0x234 (564) octets. Structure du tableau :

membres de la classei danslpClassName[i]
cbSize0-3
style4-7
hwnd 8-11
uMsg12-15
wParam16-19
lParam20-23
cbClsExtra24-27
cbwndExtra28-31
hInstance32-35
hIcon36-39
hCurseur40-43
hbrBackground44-47
lpszMenuName48-303
lpszClassName304-559
hIconSm560-563

Par conséquent, l'appel de fonction

int  CreateWindowExA(
// создание окна, расширенный вариант, ANSI-тип
            int dwExStyle,// расширенный стиль окна
         int&[] lpClassName,// но пока использую стандартный оконный класс (т.е. тип данных string)
         string lpWindowName,// текст в заголовке
            int dwStyle,// стиль окна (наследуемый с CreateWindowA)
            int x,// координаты левого верхнего угла окна: икс...
            int y,// ...и игрек
            int nWidth,// ширина окна
            int nHeight,// высота окна
            int hWndParent,//дескриптор родительского окна
            int hMenu,//идентификатор: для родительского окна - меню, для дочернего - дочернего ему окна (MDI, что ли...)
            int hInstance,// дескриптор программы (напр., индикатора), привязанной к создаваемому окну
            int lpParam );//указатель на lParam, млардшую половину WM_CREATE, которая равна 0x0001
   
#import
 
Ce n'est qu'un aperçu. Corrigez-moi si je me trompe. WNDPROC il y a une structure en mode de vérification de type STRICT, qui n'existe pas dans MT, ou retourne un long (4 octets) et un int dans API 2 octets ? Comment c'est ici ?
 
Je n'arrive pas à comprendre quel est le problème. J'ai optimisé l'EA (tous les ticks), chargé les paramètres à partir de la fenêtre de résultats et l'ai fait passer dans le testeur - les résultats sont complètement différents. Je n'ai rien changé dans les réglages, à l'exception des paramètres. Le journal du conseiller expert affiche l'erreur n°1 dans le bloc de modification de l'ordre. Quel peut être le problème ?
 

En parcourant ce fil aujourd'hui, une dinde a attiré mon attention par hasard. Bref, il y a une chose étrange là.

Les paramètres de l'indicateur lui-même sont appelés via iCustom(), comme ceci :

 sslHdn[i]=iCustom(NULL,TimeFrame,IndicatorFileName,Lb,SSL_BarLevel,1,y); 

Où,

IndicatorFileName=WindowExpertName();

Je voulais demander. Est-ce une façon normale de procéder ? Ça a l'air étrange. Il est possible d'appeler les variables de l'indicateur sans iCustom().

Je pense que ce n'est pas du tout logique. J'aimerais connaître l'avis des autres participants de cette branche...

 
hoz:

En parcourant ce fil aujourd'hui, une dinde a attiré mon attention par hasard. Bref, il y a une chose étrange là.

Il appelle les paramètres de l'indicateur à travers iCustom(), comme ceci :

Où,

Je voulais demander. Est-ce une façon normale de procéder ? Ça a l'air étrange. Il est possible d'appeler les variables de l'indicateur sans iCustom().

Je pense que ce n'est pas du tout logique. J'aimerais connaître l'opinion des autres participants au fil de discussion...

Je peux supposer, d'après votre logique confuse, qu'il y a une ligne dans le code :

#define IndicatorFileName //какое-то имя
ou... Je suis complètement "perdu dans mes pensées"...
 
TarasBY:

D'après votre logique confuse, je peux supposer qu'il y a une ligne dans le code :

ou... Je suis complètement "perdu dans mes pensées"...


Non. Ça n'existe pas. J'ai montré plus haut que le nom est donné à l'expert :

IndicatorFileName=WindowExpertName();

Et voici la dinde elle-même.

https://www.mql5.com/ru/code

Je ne suis pas intéressé par l'indicateur lui-même en tant que signal commercial. Mais j'ai remarqué son nom intéressant et j'ai décidé d'examiner ses "entrailles". Alors je suis tombé sur...

 
hoz:


Non. Ça n'existe pas. J'ai montré ci-dessus que le nom est attribué à un conseiller expert :

Et voici la dinde elle-même.

https://www.mql5.com/ru/code

Je ne suis pas intéressé par l'indicateur lui-même en tant que signal commercial. Mais j'ai remarqué son nom intéressant et j'ai décidé de voir ses "tripes". Alors je suis tombé sur...

Je suis en dehors de la boucle : appel depuis l'indicateur lui-même - original !!!!
 
TarasBY:
Je suis hors du coup : l'appel de l'indicateur lui-même est original ! !!

: ) C'est de cela que je parle. J'ai décidé de montrer au public ce drôle de tour... haha. Je pensais être le seul à être surpris... Apparemment, je ne suis pas le seul.
 
Bonjour à tous, qui peut me donner un indice ? Comment spécifier dans le prix d'un ordre d' achat en attente le prix d'ouverture par rapport à la MA et non le prix de la demande. Par exemple, la bougie a clôturé près de la MA, 7 points en dessous ou au-dessus de la MA et le prix d'ouverture de l'ordre est fixé et devrait être MA+28p... ? Merci d'avance.
 
CYBOPOB:
Bonjour à tous, Qui peut me donner un indice ? Comment fixer le prix d'ouverture d'un ordre d'achat en attente par rapport à la MA et non par rapport au prix d'achat (Ask). Par exemple, la bougie s'est fermée près de la MA, 7 points en dessous ou au-dessus de la MA et le prix d'ouverture de l'ordre est fixé et devrait être MA+28p... ? Merci d'avance.

OP_BUYSTOP ordre en attente fixant le prix :

double PriceSet = NormalizeDouble(Цена МАшки+28*Point, Digits);

Ensuite, nous devons vérifier le prix de fixation par rapport à la distance StopLevel autorisée (OpenPrice-Ask StopLevel), soit

if (NormalizeDouble(Ask+StopLevel*Point-PriceSet, Digits)>0) PriceSet=Ask+StopLevel*Point;

Si le prix de fixation est inférieur à Ask + la distance de fixation de l'ordre autorisée, rendez le prix de fixation égal à la distance autorisée
(il peut y avoir des variations, en fonction de ce dont vous avez réellement besoin).

StopLevel ici :

MarketInfo(Symbol(),MODE_STOPLEVEL);

PriceSet - Fixe le prix de l'ordre BuyStop en attente.

D'une certaine manière...