Si vous voulez créer votre propre clavier et ses contrôles (CHART_MOUSE_SCROLL, CHART_KEYBOARD_CONTROL ...), vous devez le désactiver. Mais ce n'est pas possible. La vitesse de Mais une telle interface sera du BE sont sensiblement plus élevés que ceux de la base, car IL n'est pas possible d'utiliser des fonctions asynchrones Le très INHIBITÉ ChartGetInteger
Merci encore beaucoup, Nikolaï. J'ai essayé de convertir votre CanvasBar.mq5 en mt4, j'ai ajouté quelques options de saisie concernant les largeurs / couleurs / ... (il peut donc être utilisé par exemple "pour simuler le style chandelier de ninjatrader").
Bonjour, j'ai un indicateur iEnvelopes standard ! Je n'arrive pas à le faire fonctionner comme je le voudrais ! Ie, le besoin de lorsque la bougie a touché ou traversé la ligne sur la bougie actuelle UP, puis ouvert BUY, et la bougie a touché ou traversé la ligne sur la bougie actuelle DOWN, puis ouvert SELL..... et cela s'est produit une fois (le signal-hit et tout, un autre signal-hit et tout constamment) !
Bonjour ! Il existe un indicateur standard iEnvelopes! Je n'arrive pas à le faire fonctionner comme je le voudrais ! Ie, le besoin de lorsque la bougie a touché ou traversé la ligne sur la bougie actuelle UP, puis ouvert BUY, et la bougie a touché ou traversé la ligne sur la bougie actuelle DOWN, puis ouvert SELL..... et cela se produit une fois (le signal-hit et tout, un autre signal-hit et tout constamment) !
Aidez-moi !
Je dois ajouter la compréhension du processus au code :-)
Tant que la bougie n'est pas fermée, High[0] ne peut que monter, Low[0] ne peut que descendre, et les enveloppes décompilées font ce qu'elles veulent :-)
Si l'enveloppe n'est pas prise à partir des cours ouverts, vous ne pouvez pas examiner une barre non fermée.
vous devez ajouter la compréhension du processus dans le code :-)
Jusqu'à la fermeture de la bougie, High[0] ne peut que monter, Low[0] ne peut que descendre, tandis que les enveloppes issues de la décompilation se comportent comme elles le souhaitent :-)
Si l'enveloppe n'est pas prise dans les prix ouverts, vous ne pouvez pas regarder la barre non fermée.
En d'autres termes, est-il préférable de travailler avec Open et Close ? Quel est le chèque ?
Aidez-moi à comprendre comment calculer la MA sur un tableau.
Je construis la MA par ouverture-fermeture, mais d'après le graphique, il semble qu'elle soit calculée de droite à gauche.
J'ai utiliséiMAOnArray etSimpleMAOnBuffer comme outils, y a-t-il une meilleure option ?
//+------------------------------------------------------------------+//| _null.mq4 |//| Copyright 2014, MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2014, MetaQuotes Software Corp."#property link"http://www.mql5.com"#property version"1.00"#property strict#property indicator_separate_window#include <MovingAverages.mqh>
#property indicator_buffers4#property indicator_plots2//--- plot OC#property indicator_label1"OC"#property indicator_type1DRAW_COLOR_HISTOGRAM#property indicator_color1clrSteelBlue, clrRed,clrGreen#property indicator_style1STYLE_SOLID#property indicator_width11#property indicator_label2"MA1"#property indicator_type2DRAW_LINE#property indicator_color2clrBrown#property indicator_style2STYLE_SOLID#property indicator_width21//--- indicator buffersdouble OC[], OC_color[], MA1_buf[];
inputint MA1=2;
intOnInit()
{
IndicatorSetString(INDICATOR_SHORTNAME,"t1");
SetIndexBuffer(0,OC,INDICATOR_DATA);
SetIndexBuffer(1,OC_color,INDICATOR_COLOR_INDEX);
SetIndexBuffer(2, MA1_buf,INDICATOR_DATA);
//PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,50);//--- indicator buffers mapping//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//--- Проверка количества доступных баров (1 - минимально, 4 - оптимально для большинства расчётов. Но всё "по месту"...)if(rates_total<4) return0;
//--- Проверка и расчёт количества просчитываемых баровint limit=rates_total-prev_calculated; // 0 - пришел новый тик, новый бар формироваться не начал. 1 - пришел новый тик и начал формироваться новый бар.//if(limit>1) // если вписать "limit>0", то на нулевом баре будет расчёт только нулевого бара, на каждом новом баре будет полный перерасчёт всей истории// если вписать "limit>1", то на нулевом баре будет расчёт только нулевого бара, на открытии нового бара - пересчёт первого и нулевого,// при подгрузке истории и на первом запуске - перерасчёт всей истории
{
limit=rates_total-1;
// здесь должна быть инициализация всех используемых буферов индикатора необходимыми значениями (обычно EMPTY_VALUE и 0)
}
for(int i=limit; i>=0 && !IsStopped(); i--)
{
// необходимые действия по расчёту индикатора
OC[i]=fmax(open[i],close[i])-fmin(open[i],close[i]);
if(OC[i]>0.001)
{ OC_color[i]=1;
}
}
/* for(int k=limit; k>=0 && !IsStopped(); k--)
{
MA1_buf[k]=iMAOnArray(OC,0,MA1,k,MODE_SMA,0);
}
*/
SimpleMAOnBuffer(rates_total,prev_calculated,0,MA1,OC,MA1_buf);
//--- return value of prev_calculated for next callreturn(rates_total);
}
Bonjour !!! J'utilise ce code pour traduire un lien dans un commentaire, mais systématiquement une fois par jour il me donne une erreur : web error 5203 (ERR_WEBREQUEST_REQUEST_FAILED. Erreur dans le résultat de la requête HTTP)
Pouvez-vous me dire comment faire des coefficients de pondération pour les signaux ?
Par exemple, j'ai trois signaux par échelle : crossover, comparaison1 (barre précédente vs barre précédente) et comparaison 2 (barre précédente vs barre précédente sur un TF plus élevé).
J'essaie de le faire avec l'exemple de la construction de MAKD dans MT, mais cela n'ouvre pas les marchés. Il n'y a rien dans le journal. C'est-à-dire que la base standard de l'EA n'a pas été touchée, seule la logique d'ouverture des positions a été modifiée. Le triolet est donc la base du conseiller MAKD de MT (normal).
Ne jurez pas pour le code nubien, je ne suis pas un programmeur.
Il y a un Graphique dans le profil. J'ai besoin d'un script pour ouvrir deux autres Chatr's. Tous les trois Charts (était un et a ouvert deux plus) pour faire la taille spécifiée dans l'endroit fixé.
J'ai beau essayer, rien n'y fait.
Ce script change la taille et la position de la carte sur laquelle je lance.
//+------------------------------------------------------------------+
//| posicion.mq4 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#property script_show_inputs
#import "user32.dll"
int SetWindowPos(int hWnd,int hWndInsertAfter,int X,int Y,int cx,int cy,int uFlags);
int GetParent(int hWnd);
int GetTopWindow(int hWnd);
int GetWindow(int hWnd,int wCmd);
int GetWindowDC(int h);
int ShowWindow(int hWnd,int nCmdShow);
#import
#define GW_HWNDNEXT 0x0002
#define SWP_NOSIZE 0x0001
#define SWP_NOMOVE 0x0002
#define SWP_NOZORDER 0x0004
#define SW_RESTORE 9
#define SWP_FRAMECHANGED 0x0020
int gr2x1_P1 [] = {PERIOD_H4,PERIOD_D1,PERIOD_W1}; // Period of grafic 1 of 2x1
int CXShift2x1[] = {0,0,1040}; // Horizontal shift of grafic 1 of 2x1
int CYShift2x1[] = {0,268,0}; // Vertical shift of grafic 1 of 2x1
int CXSize2x1 [] = {1040,1040,880}; // Width of grafic 1 of 2x1
int CYSize2x1 [] = {500,500,1000}; // Height of grafic 1 of 2x1
input int xy = 0;//xy 0-2
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
int i,handle;
int parent;
handle=(int)ChartGetInteger(0,CHART_WINDOW_HANDLE);Print("ChartGetInteger(0,CHART_WINDOW_HANDLE) ",handle); //возвращает дескриптор 2688738
parent=GetParent(handle);Print("parent_0 ",parent); //возвращает дескриптор 197188
ShowWindow(parent,SW_RESTORE);
i=xy;
SetWindowPos(parent,0,CXShift2x1[i],CYShift2x1[i],CXSize2x1[i],CYSize2x1[i],0);
//Sleep(5000);
}
//+------------------------------------------------------------------+
Открыть Новые дополнительные Chart-ы
Но как дальше изменить размер дополнительных Chart-ов, ни как не получается.
int i;
for(i=0; i<3; i++)
{
long h=ChartOpen("EURUSD",gr2x1_P1[i]);
}
Je rencontre chaque jour beaucoup plus d'expression et de négativité dans cette communauté, et personne ne réagit.
Bref, c'est la fin de la question.
Si vous voulez créer votre propre clavier et ses contrôles (CHART_MOUSE_SCROLL, CHART_KEYBOARD_CONTROL ...), vous devez le désactiver.
Mais ce n'est pas possible.
La vitesse de Mais une telle interface sera du BE sont sensiblement plus élevés que ceux de la base, car IL n'est pas possible d'utiliser des fonctions asynchrones Le très INHIBITÉ ChartGetInteger
Merci encore beaucoup, Nikolaï. J'ai essayé de convertir votre CanvasBar.mq5 en mt4, j'ai ajouté quelques options de saisie concernant les largeurs / couleurs / ... (il peut donc être utilisé par exemple "pour simuler le style chandelier de ninjatrader").
Bonjour, j'ai un indicateur iEnvelopes standard !
Je n'arrive pas à le faire fonctionner comme je le voudrais !
Ie, le besoin de lorsque la bougie a touché ou traversé la ligne sur la bougie actuelle UP, puis ouvert BUY, et la bougie a touché ou traversé la ligne sur la bougie actuelle DOWN, puis ouvert SELL..... et cela s'est produit une fois (le signal-hit et tout, un autre signal-hit et tout constamment) !
Aidez-moi !
Bonjour ! Il existe un indicateur standard iEnvelopes!
Je n'arrive pas à le faire fonctionner comme je le voudrais !
Ie, le besoin de lorsque la bougie a touché ou traversé la ligne sur la bougie actuelle UP, puis ouvert BUY, et la bougie a touché ou traversé la ligne sur la bougie actuelle DOWN, puis ouvert SELL..... et cela se produit une fois (le signal-hit et tout, un autre signal-hit et tout constamment) !
Aidez-moi !
Je dois ajouter la compréhension du processus au code :-)
Tant que la bougie n'est pas fermée, High[0] ne peut que monter, Low[0] ne peut que descendre, et les enveloppes décompilées font ce qu'elles veulent :-)
Si l'enveloppe n'est pas prise à partir des cours ouverts, vous ne pouvez pas examiner une barre non fermée.
vous devez ajouter la compréhension du processus dans le code :-)
Jusqu'à la fermeture de la bougie, High[0] ne peut que monter, Low[0] ne peut que descendre, tandis que les enveloppes issues de la décompilation se comportent comme elles le souhaitent :-)
Si l'enveloppe n'est pas prise dans les prix ouverts, vous ne pouvez pas regarder la barre non fermée.
Aidez-moi à comprendre comment calculer la MA sur un tableau.
Je construis la MA par ouverture-fermeture, mais d'après le graphique, il semble qu'elle soit calculée de droite à gauche.
J'ai utiliséiMAOnArray etSimpleMAOnBuffer comme outils, y a-t-il une meilleure option ?
Bonjour !!! J'utilise ce code pour traduire un lien dans un commentaire, mais systématiquement une fois par jour il me donne une erreur : web error 5203 (ERR_WEBREQUEST_REQUEST_FAILED. Erreur dans le résultat de la requête HTTP)
Y a-t-il un moyen de le réparer ?
Pouvez-vous me dire comment faire des coefficients de pondération pour les signaux ?
Par exemple, j'ai trois signaux par échelle : crossover, comparaison1 (barre précédente vs barre précédente) et comparaison 2 (barre précédente vs barre précédente sur un TF plus élevé).
J'essaie de le faire avec l'exemple de la construction de MAKD dans MT, mais cela n'ouvre pas les marchés. Il n'y a rien dans le journal. C'est-à-dire que la base standard de l'EA n'a pas été touchée, seule la logique d'ouverture des positions a été modifiée. Le triolet est donc la base du conseiller MAKD de MT (normal).
Ne jurez pas pour le code nubien, je ne suis pas un programmeur.
...
Вводимые параметры
input double TradeLevel_BUY = 1;
input double TradeLevel_SELL = -1;
input double w_S_MA_1 = 1;
input double w_S_MA_2 = 1;
input double w_S_MA_3 = 1;
input double w_S_MA_4 = 1;
input double w_S_MA_5 = 1;
input double w_S_MA_6 = 1;
...
----------------
...
void OnTick(void)
{
double MA_Fast_1,
MA_Fast_2,
MA_Slow_1,
MA_Slow_2,
MA_Fast_LargeTF_1,
MA_Fast_LargeTF_2,
MA_Slow_LargeTF_1,
MA_Slow_LargeTF_2;
double S_MA_1,
S_MA_2,
S_MA_3,
...
MA_Slow_LargeTF_2=iMA(NULL,0,MA_Slow_LargeTF_2_Period,MA_Slow_LargeTF_2_Shift,MODE_EMA,PRICE_CLOSE,2);
...
double Sum;
if (MA_Fast_1>MA_Slow_1)
{
S_MA_1=1*w_S_MA_1;
}
else
{
S_MA_1=0;
}
return;
if (MA_Fast_1>MA_Fast_2)
{
S_MA_2=1*w_S_MA_2;
}
else
{
S_MA_2=0;
}
return;
if (Open[1]<MA_Fast_LargeTF_1 && Close[1]>MA_Fast_LargeTF_1 || Open[1]>MA_Fast_LargeTF_1 && Close[1]>MA_Fast_LargeTF_1)
{
S_MA_3=1*w_S_MA_3;
}
else
{
S_MA_3=0;
}
return;
...
if (MA_Fast_1<MA_Slow_1)
{
S_MA_4=-1*w_S_MA_4;
}
else
{
S_MA_4=0;
}
return;
if (MA_Fast_1<MA_Fast_2)
{
S_MA_5=-1*w_S_MA_5;
}
else
{
S_MA_5=0;
}
return;
if (Open[1]>MA_Fast_LargeTF_1 && Close[1]<MA_Fast_LargeTF_1 || Open[1]<MA_Fast_LargeTF_1 && Close[1]<MA_Fast_LargeTF_1)
{
S_MA_6=-1*w_S_MA_6;
}
else
{
S_MA_6=0;
}
return;
Sum=S_MA_1+S_MA_2+S_MA_3+S_MA_4+S_MA_5+S_MA_6;
...
if(Sum>TradeLevel_BUY)
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Bid+TP*Point,"Optim",16384,0,Blue);
...
if(Sum<=TradeLevel_SELL)
{
ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Bid+SL*Point,Ask-TP*Point,"Optim",16384,0,Red);
if(ticket>0)
Bonjour ! Comment mettre en œuvre cette fonction correctement (je pense que vous comprendrez ce que je veux faire) ?
Salut. Besoin d'aide avec winApi user32.dll.
Il y a un Graphique dans le profil. J'ai besoin d'un script pour ouvrir deux autres Chatr's. Tous les trois Charts (était un et a ouvert deux plus) pour faire la taille spécifiée dans l'endroit fixé.
J'ai beau essayer, rien n'y fait.
Ce script change la taille et la position de la carte sur laquelle je lance.
//+------------------------------------------------------------------+ //| posicion.mq4 | //| Copyright 2017, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #property script_show_inputs #import "user32.dll" int SetWindowPos(int hWnd,int hWndInsertAfter,int X,int Y,int cx,int cy,int uFlags); int GetParent(int hWnd); int GetTopWindow(int hWnd); int GetWindow(int hWnd,int wCmd); int GetWindowDC(int h); int ShowWindow(int hWnd,int nCmdShow); #import #define GW_HWNDNEXT 0x0002 #define SWP_NOSIZE 0x0001 #define SWP_NOMOVE 0x0002 #define SWP_NOZORDER 0x0004 #define SW_RESTORE 9 #define SWP_FRAMECHANGED 0x0020 int gr2x1_P1 [] = {PERIOD_H4,PERIOD_D1,PERIOD_W1}; // Period of grafic 1 of 2x1 int CXShift2x1[] = {0,0,1040}; // Horizontal shift of grafic 1 of 2x1 int CYShift2x1[] = {0,268,0}; // Vertical shift of grafic 1 of 2x1 int CXSize2x1 [] = {1040,1040,880}; // Width of grafic 1 of 2x1 int CYSize2x1 [] = {500,500,1000}; // Height of grafic 1 of 2x1 input int xy = 0;//xy 0-2 //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { int i,handle; int parent; handle=(int)ChartGetInteger(0,CHART_WINDOW_HANDLE);Print("ChartGetInteger(0,CHART_WINDOW_HANDLE) ",handle); //возвращает дескриптор 2688738 parent=GetParent(handle);Print("parent_0 ",parent); //возвращает дескриптор 197188 ShowWindow(parent,SW_RESTORE); i=xy; SetWindowPos(parent,0,CXShift2x1[i],CYShift2x1[i],CXSize2x1[i],CYSize2x1[i],0); //Sleep(5000); } //+------------------------------------------------------------------+ Открыть Новые дополнительные Chart-ы Но как дальше изменить размер дополнительных Chart-ов, ни как не получается.