Aidez-moi, s'il vous plaît. Je ne comprends pas la boucle for(), tout le temps après la mise à jour, à cause du décalage(iMA(NULL,PERIOD_M1,1,1,MODE_SMA,PRICE_OPEN,i)) L'indicateur se redessine !
//+------------------------------------------------------------------+//| help.mq4 |//| Copyright 2014, MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright"2005-2014, MetaQuotes Software Corp."#property link"http://www.mql4.com"#property strict#include <MovingAverages.mqh>
//--- indicator settings#property indicator_separate_window#property indicator_buffers2#property indicator_color1 clrSilver#property indicator_color2 clrRed#property indicator_width1 2//--- indicator parametersinputint SignalSMA=8; // Signal SMA Period//--- indicator buffersdouble ExtBuffer[];
double ExtSignalBuffer[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit(void)
{
IndicatorDigits(Digits+1);
//--- drawing settingsSetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_LINE);
//--- indicator buffers mappingSetIndexBuffer(0,ExtBuffer);
SetIndexBuffer(1,ExtSignalBuffer);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Moving Averages Convergence/Divergence |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
int i,limit;
//--- last counted bar will be recounted
limit=rates_total-prev_calculated;
if(prev_calculated>0)
limit++;
//--- counted in the 1-st bufferfor(i=0;i<limit;i++)
ExtBuffer[i]=(
iMA(NULL,PERIOD_CURRENT,1,0,MODE_SMA,PRICE_HIGH,i)
+iMA(NULL,PERIOD_M1,1,1,MODE_SMA,PRICE_OPEN,i)
);
//--- signal line counted in the 2-nd buffer
SimpleMAOnBuffer(rates_total,prev_calculated,0,SignalSMA,ExtBuffer,ExtSignalBuffer);
//--- donereturn(rates_total);
}
//+------------------------------------------------------------------+
À mon avis, cette approche n'est pas du tout logique. Pourquoi définir le jour de la semaine ? Quelle différence cela fait-il de savoir quel jour on est, si la condition doit dire "ne pas ouvrir plus de xxx ordres aujourd'hui" ?
Il me semble plus logique de compter les ordres ouverts aujourd'hui et de spécifier la condition correspondante.
il n'y a pas de date d'ouverture de la commande dans l'état.
Si vous le savez, veuillez écrire comment le faire) Je ne comprends pas comment faire en sorte que, pour un jour donné, le nombre d'ordres ouverts pendant toute la journée ne dépasse pas le n-ième.
Aidez-moi, s'il vous plaît. Je ne comprends pas la boucle for(), tout le temps après la mise à jour, à cause du décalage(iMA(NULL,PERIOD_M1,1,1,MODE_SMA,PRICE_OPEN,i)) L'indicateur se redessine !
Je vous remercie d'avance.
Les MA ont des TF différentes. Vous devez en quelque sorte faire correspondre l'intervalle de temps supérieur à la TF M1, c'est-à-dire compter les MA deux fois avec des nombres de ticks différents. Dans ce cas, une seule et même valeur de la période la plus ancienne sera ajoutée à différentes valeurs de la période la plus récente.
Si vous regardez à travers i, vous obtenez, par exemple, 10 bougies de période D1 et 10 M1. Logiquement, quelque chose ne va pas....
Autre chose, si l'indicateur est réglé sur M1, il fonctionnera très probablement sans rebroussement.
les MAs ont des TFs différents. vous devez en quelque sorte faire correspondre l'intervalle de temps supérieur à la TF M1, c'est-à-dire compter les MAs deux fois avec des nombres de ticks différents.
En passant par i vous prenez maintenant par exemple 10 bougies de période D1 et 10 M1. Logiquement, quelque chose ne va pas....
Oui, vous avez raison, mais mon esprit n'est pas suffisant pour comprendre comment faire compter M1 correctement.
cripple: Oui, vous avez raison, mais mon esprit n'est pas encore assez développé pour comprendre comment faire compter M1 correctement.
En outre, il faudra synchroniser M1 avec un cadre temporel plus élevé, car une barre de M5 ne correspondra pas nécessairement à 5 bougies de M1, mais peut-être à 4 ou 1.
cripple: Oui, vous avez raison, mais mon esprit n'est pas encore assez développé pour comprendre comment faire compter M1 correctement.
Essayez
intBars(
string symbol_name, // имя символаENUM_TIMEFRAMES timeframe, // периодdatetimestart_time, // с какой датыdatetime stop_time // по какую дату
);
l'heure de la i-ème barre et mettre le numéro de la barre résultante à la place de i.
LRA: Cher novikov433! !! Je vous apprendrai la programmation, ou je vous écrirai un conseiller expert gratuit, ou les deux ! En échange, apprenez-moi comment les ordres à perte sont transformés en ordres sans perte. Vous pouvez utiliser un exemple simple. Je donne un ordre à ma femme (ordre) : acheter un seau de pommes de terre tôt le matin au marché, et à 10 heures (analyse fondamentale) le prix augmente - vendre. Mais parfois un camion de pommes de terre arrive à 10h30 (nouvelles). Et le prix (aux nouvelles) baisse instantanément et cela dure jusqu'à la fin de la journée, voire pendant toute la semaine. Je place un Stop Loss - si le prix baisse de 10 roubles, je vends dès que possible (au prix du marché). Comment changer l'ordre, pour éviter les pertes. Si cette variante vous intéresse - envoyez-nous votre e-mail.
Le problème est que le marché s'est légèrement orienté vers le côté souhaité, puis est revenu en arrière. Vous devez donc conclure l'opération au seuil de rentabilité et l'ouvrir pour un retournement. je suis devenu accro dès que j'ai commencé. j'étais nerveux quand j'ai commencé à échanger. j'ai eu une autre impression une fois de plus que c'est une connerie d'échanger avec les mains.
ax00071: Merci de votre attention ;)) Je suis un pigeon ... ... à la clôture, j'avais la condition de conclure l'affaire à 22h00 le vendredi, sans aucune condition supplémentaire pour vérifier le type d'affaire. L'affaire elle-même a été conclue quelques heures plus tôt. Eh bien, quand 22 heures sont arrivées, le conseiller expert a commencé à envoyer des ordres pour fermer un ordre qui était déjà fermé ... .
Tu ne devrais pas t'appeler une plante. Si vous avez réussi à localiser, comprendre et corriger une telle erreur, vous vous rapprochez du niveau d'un programmeur !
Aidez-moi, s'il vous plaît. Je ne comprends pas la boucle for(), tout le temps après la mise à jour, à cause du décalage(iMA(NULL,PERIOD_M1,1,1,MODE_SMA,PRICE_OPEN,i)) L'indicateur se redessine !
Merci d'avance.
À mon avis, cette approche n'est pas du tout logique. Pourquoi définir le jour de la semaine ? Quelle différence cela fait-il de savoir quel jour on est, si la condition doit dire "ne pas ouvrir plus de xxx ordres aujourd'hui" ?
Il me semble plus logique de compter les ordres ouverts aujourd'hui et de spécifier la condition correspondante.
il n'y a pas de date d'ouverture de la commande dans l'état.Si vous le savez, veuillez écrire comment le faire)
Je ne comprends pas comment faire en sorte que, pour un jour donné, le nombre d'ordres ouverts pendant toute la journée ne dépasse pas le n-ième.
Aidez-moi, s'il vous plaît. Je ne comprends pas la boucle for(), tout le temps après la mise à jour, à cause du décalage(iMA(NULL,PERIOD_M1,1,1,MODE_SMA,PRICE_OPEN,i)) L'indicateur se redessine !
Je vous remercie d'avance.
Les MA ont des TF différentes. Vous devez en quelque sorte faire correspondre l'intervalle de temps supérieur à la TF M1, c'est-à-dire compter les MA deux fois avec des nombres de ticks différents. Dans ce cas, une seule et même valeur de la période la plus ancienne sera ajoutée à différentes valeurs de la période la plus récente.
Si vous regardez à travers i, vous obtenez, par exemple, 10 bougies de période D1 et 10 M1. Logiquement, quelque chose ne va pas....
Autre chose, si l'indicateur est réglé sur M1, il fonctionnera très probablement sans rebroussement.
les MAs ont des TFs différents. vous devez en quelque sorte faire correspondre l'intervalle de temps supérieur à la TF M1, c'est-à-dire compter les MAs deux fois avec des nombres de ticks différents.
En passant par i vous prenez maintenant par exemple 10 bougies de période D1 et 10 M1. Logiquement, quelque chose ne va pas....
Oui, vous avez raison, mais mon esprit n'est pas encore assez développé pour comprendre comment faire compter M1 correctement.
En outre, il faudra synchroniser M1 avec un cadre temporel plus élevé, car une barre de M5 ne correspondra pas nécessairement à 5 bougies de M1, mais peut-être à 4 ou 1.
Oui, vous avez raison, mais mon esprit n'est pas encore assez développé pour comprendre comment faire compter M1 correctement.
Essayez
l'heure de la i-ème barre et mettre le numéro de la barre résultante à la place de i.
Cher novikov433! !! Je vous apprendrai la programmation, ou je vous écrirai un conseiller expert gratuit, ou les deux ! En échange, apprenez-moi comment les ordres à perte sont transformés en ordres sans perte. Vous pouvez utiliser un exemple simple. Je donne un ordre à ma femme (ordre) : acheter un seau de pommes de terre tôt le matin au marché, et à 10 heures (analyse fondamentale) le prix augmente - vendre. Mais parfois un camion de pommes de terre arrive à 10h30 (nouvelles). Et le prix (aux nouvelles) baisse instantanément et cela dure jusqu'à la fin de la journée, voire pendant toute la semaine. Je place un Stop Loss - si le prix baisse de 10 roubles, je vends dès que possible (au prix du marché). Comment changer l'ordre, pour éviter les pertes. Si cette variante vous intéresse - envoyez-nous votre e-mail.
Essayez
l'heure de la i-ème mesure et mettre le numéro de la mesure résultante à la place de i.
Avez-vous pensé à quelque chose comme ça ?
Merci de votre attention ;)) Je suis un pigeon ... ... à la clôture, j'avais la condition de conclure l'affaire à 22h00 le vendredi, sans aucune condition supplémentaire pour vérifier le type d'affaire. L'affaire elle-même a été conclue quelques heures plus tôt. Eh bien, quand 22 heures sont arrivées, le conseiller expert a commencé à envoyer des ordres pour fermer un ordre qui était déjà fermé ... .