[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 226
Roger: Vous avez vraiment un problème avec la logique. D'abord, vous autorisez les ordres en attente autant que vous le souhaitez, puis vous voulez tous les supprimer après l'ouverture de l'un d'entre eux, et ensuite vous êtes surpris que tous les nouveaux ordres en attente soient supprimés. Continuez ensuite à réfléchir à ce qui devrait se passer après le déclenchement du prochain ordre en attente. L'algorithme en dépendra.
Merci de corriger mes pensées, je suis déjà bloqué.
Après le premier ordre en attente (disons baillimit), d'autres ordres en attente peuvent être placés dans la même direction, mais comment supprimer toutes les positions et tous les ordres d'achat lorsque le signal apparaît dans la direction opposée (disons selimit) ?
Bonjour, Pourriez-vous me dire comment écrire une variable globalebool par exemple bool=uroven_1=false; comment écrire ceci dans une variable globale pour qu'elle ait une nouvelle valeur après un redémarrage du terminal, merci.
laveosa: Bonjour, Pourriez-vous me dire comment écrire une variable globale bool par exemple bool=uroven_1=false; comment écrire ceci dans une variable globale pour qu'elle ait une nouvelle valeur après un redémarrage du terminal, merci.
La logique est correcte - il devrait y avoir autant de numéros de position dans les ordres qu'il y a d'ordres, une fois que l'un est fermé, tous les autres sont recalculés. Essayez cette construction
Réponse.
Bonjour. Malheureusement, la construction décrite ci-dessus ne nous donne pas le résultat requis. Je voudrais vous donner le code du programme et les entrées du journal du testeur. Respectueusement. Shurkin Le 18 mars 2013.
Код программы.
//+------------------------------------------------------------------+//| Poligon1.mq4 |//| 21 февраля 2013 года. |//|Тестирование оператора цикла for. |//+------------------------------------------------------------------+#property copyright "21 февраля 2013 года."#property link ""//+------------------------------------------------------------------+//|Объявленные переменные |//+------------------------------------------------------------------+int Mn=357;//Magic numberint i;//Показатель счётчика итерацийdouble PriTP;//TP серииint Tick;//Счётчик тиков//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
//----Установка серии ордеровOrderSend(Symbol(),OP_BUY,0.5,Ask,0,NormalizeDouble(Bid-35*Point,Digits),
NormalizeDouble(Ask+35*Point,Digits),NULL,Mn,0,CLR_NONE);//OP_BUYOrderSend(Symbol(),OP_BUY,1,Ask,0,NormalizeDouble(Bid-25*Point,Digits),
NormalizeDouble(Ask+25*Point,Digits),NULL,Mn,0,CLR_NONE);//OP_BUYOrderSend(Symbol(),OP_BUY,1.5,Ask,0,NormalizeDouble(Bid-15*Point,Digits),
NormalizeDouble(Ask+15*Point,Digits),NULL,Mn,0,CLR_NONE);//OP_BUYOrderSend(Symbol(),OP_BUY,2.5,Ask,0,NormalizeDouble(Bid-15*Point,Digits),
NormalizeDouble(Ask+15*Point,Digits),NULL,Mn,0,CLR_NONE);//OP_BUYOrderSend(Symbol(),OP_BUY,3.5,Ask,0,NormalizeDouble(Bid-15*Point,Digits),
NormalizeDouble(Ask+15*Point,Digits),NULL,Mn,0,CLR_NONE);//OP_BUYOrderSend(Symbol(),OP_BUYLIMIT,1,NormalizeDouble(Ask-15*Point,Digits),0,
NormalizeDouble(Bid-40*Point,Digits),NormalizeDouble(Ask+25*Point,Digits),
NULL,Mn,0,CLR_NONE);//OP_BUYLIMITOrderSend(Symbol(),OP_SELLSTOP,3,NormalizeDouble(Ask-30*Point,Digits),0,
NormalizeDouble(Bid+15*Point,Digits),NormalizeDouble(Ask-75*Point,Digits),
NULL,Mn,0,CLR_NONE);//OP_SELLSTOP//----
PriTP=Bid;//PriTPPrint("Кс0:"," OrdersTotal=",OrdersTotal());//Сообщение//----return(0);
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
//----
Tick++;//Tick// Print("Кс0:"," Tick=",Tick);//Сообщение//----// for(i=0;i<OrdersTotal();i++)//Инициализация цикла// for(i=OrdersTotal()-1; i>=0; i--)//for(i=0, int k=0; i<OrdersTotal();i++,k++)//
{
Print("Кс1:"," Tick=",Tick," i=",i," k=",k);//Сообщениеif(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)//Выбор ордера i
{
if(OrderSymbol()==Symbol())//Символ
{
if(OrderMagicNumber()==Mn)//Идентификационное число
{
if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)//Тип операции текущего выбранного ордера
{
OrderClose(OrderTicket(),OrderLots(),Bid,0,CLR_NONE);//Закрытие позиции
k--;//Зачем сначала прибавлять и тут же убавлять ???
}//Закрыто if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)
}//Закрыто if(OrderMagicNumber()==Mn)
}//Закрыто if(OrderSymbol()==Symbol()
}//Закрыто if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
}//Закрыто for(i=0;i<OrdersTotal();i++)//----return(0);
}
//+------------------------------------------------------------------+
Записи в журнале тестера.
2013.03.18 09:42:48 2013.02.11 12:16 Poligon1 EURUSD,M15: Кс1: Tick=5 i=1 k=1
2013.03.18 09:42:48 2013.02.11 12:16 Poligon1 EURUSD,M15: Кс1: Tick=5 i=0 k=0
2013.03.18 09:42:24 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=4 i=1 k=1
2013.03.18 09:42:24 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=4 i=0 k=0
2013.03.18 09:42:00 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=3 i=1 k=0
2013.03.18 09:42:00 2013.02.11 12:15 Poligon1 EURUSD,M15: close #4 buy 2.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 at price 1.3393
2013.03.18 09:42:00 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=3 i=0 k=0
2013.03.18 09:41:36 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=2 i=2 k=1
2013.03.18 09:41:36 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=2 i=1 k=0
2013.03.18 09:41:36 2013.02.11 12:15 Poligon1 EURUSD,M15: close #2 buy 1.00 EURUSD at 1.3397 sl: 1.3370 tp: 1.3422 at price 1.3394
2013.03.18 09:41:36 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=2 i=0 k=0
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=1 i=3 k=0
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: close #5 buy 3.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 at price 1.3395
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=1 i=2 k=0
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: close #3 buy 1.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 at price 1.3395
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=1 i=1 k=0
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: close #1 buy 0.50 EURUSD at 1.3397 sl: 1.3360 tp: 1.3432 at price 1.3395
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=1 i=0 k=0
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс0: OrdersTotal=7
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #7 sell stop 3.00 EURUSD at 1.3367 sl: 1.3410 tp: 1.3322 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #6 buy limit 1.00 EURUSD at 1.3382 sl: 1.3355 tp: 1.3422 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #5 buy 3.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #4 buy 2.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #3 buy 1.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #2 buy 1.00 EURUSD at 1.3397 sl: 1.3370 tp: 1.3422 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #1 buy 0.50 EURUSD at 1.3397 sl: 1.3360 tp: 1.3432 ok
2013.03.18 09:41:12 Poligon1 test started
2013.03.18 09:40:59 Poligon1: loaded successfully
Lors du test du conseiller expert WOC0.1.2 dans le testeur MT4 (application sur MT4 de Forex Club), les étiquettes des ordres sur le graphique sont au-dessus des prix, c'est-à-dire que les transactions ont été exécutées aux prix qui n'ont pas eu lieu. C'est un problème de testeur ? Peut-on le corriger d'une manière ou d'une autre ?
J'ai besoin de votre aide (pli-is). Je veux créer une fonction dans mon EA qui affiche une notification dans le coin arrière de l'écran sur la tendance actuelle sur différentes échelles de temps et le renversement à venir. J'utilise mes fonctions LinearRegression et Diverg à cette fin, mais je n'ai jamais travaillé avec la fonctionComment et je ne peux donc pas comprendre où j'ai fait une erreur. Quoi qu'il en soit, à la suite du code suivant, l'inscription "Trend W = Down" est affichée, mais je veux avoir des informations sur d'autres TFs également.
Vous avez vraiment un problème avec la logique. D'abord, vous autorisez les ordres en attente autant que vous le souhaitez, puis vous voulez tous les supprimer après l'ouverture de l'un d'entre eux, et ensuite vous êtes surpris que tous les nouveaux ordres en attente soient supprimés. Continuez ensuite à réfléchir à ce qui devrait se passer après le déclenchement du prochain ordre en attente. L'algorithme en dépendra.
Merci de corriger mes pensées, je suis déjà bloqué.
Après le premier ordre en attente (disons baillimit), d'autres ordres en attente peuvent être placés dans la même direction, mais comment supprimer toutes les positions et tous les ordres d'achat lorsque le signal apparaît dans la direction opposée (disons selimit) ?
Bonsoir ! Excusez-moi, je voudrais revenir sur un problème non résolu.
'Acheter' - Types incompatibles D:\TeleTRADE\experts\cleaner.mq4 (102, 53)
Vendre' - types incompatibles D:\TeleTRADE\experts\clearlist.mq4 (102, 79)
Bonjour, Pourriez-vous me dire comment écrire une variable globale bool par exemple bool=uroven_1=false; comment écrire ceci dans une variable globale pour qu'elle ait une nouvelle valeur après un redémarrage du terminal, merci.
https://book.mql4.com/ru/variables/globals
La logique est correcte - il devrait y avoir autant de numéros de position dans les ordres qu'il y a d'ordres, une fois que l'un est fermé, tous les autres sont recalculés. Essayez cette construction
Réponse.
Bonjour.
Malheureusement, la construction décrite ci-dessus ne nous donne pas le résultat requis. Je voudrais vous donner le code du programme et les entrées du journal du testeur.
Respectueusement. Shurkin
Le 18 mars 2013.
Lors du test du conseiller expert WOC0.1.2 dans le testeur MT4 (application sur MT4 de Forex Club), les étiquettes des ordres sur le graphique sont au-dessus des prix, c'est-à-dire que les transactions ont été exécutées aux prix qui n'ont pas eu lieu. C'est un problème de testeur ? Peut-on le corriger d'une manière ou d'une autre ?
http://s017.radikal.ru/i405/1303/61/959038aaf1a9.jpg
Et autre chose : dans le mode de visualisation du testeur, certaines opérations sont exécutées, mais sans lui elles ne le sont pas.
Je l'ai compris tout seul. C'est à cause de l'augmentation de la diffusion (81) sur le testeur pendant les week-ends.
J'ai besoin de votre aide (pli-is). Je veux créer une fonction dans mon EA qui affiche une notification dans le coin arrière de l'écran sur la tendance actuelle sur différentes échelles de temps et le renversement à venir. J'utilise mes fonctions LinearRegression et Diverg à cette fin, mais je n'ai jamais travaillé avec la fonctionComment et je ne peux donc pas comprendre où j'ai fait une erreur. Quoi qu'il en soit, à la suite du code suivant, l'inscription "Trend W = Down" est affichée, mais je veux avoir des informations sur d'autres TFs également.
void UPDN ()
{
if(LinearRegression(Symbol( ), LR_TFr_1, 0, Diver_Per_H1, 0) < 0) Comment("Trend H1 = Up") ;
if(Diverg(LR_TFr_1,0,Diver_Per_H1)<0) Comment("... !Pivot sur H1 = Down") ;
if(LinearRegression(Symbol( ), LR_TFr_2, 0, Diver_Per_H4, 0) < 0) Comment("Tendance H4 = Up") ;
if(Diverg(LR_TFr_2,0,Diver_Per_H4)<0) Comment("... !Pivot sur H4 = Down") ;
if(LinearRegression(Symbol( ), LR_TFr_3, 0, Diver_Per_D1, 0) < 0) Comment("Trend D1 = Up") ;
if(Diverg(LR_TFr_3,0,Diver_Per_D1)<0) Comment("...Pivot sur D1 = Down") ;
if(LinearRegression(Symbol( ), LR_TFr_4, 0, Diver_Per_W, 0) < 0) Comment("Trend W = Up") ;
if(Diverg(LR_TFr_4,0,Diver_Per_W)<0) Comment("... !Pivot vers W = Down") ;
if(LinearRegression(Symbol( ), LR_TFr_1, 0, Diver_Per_H1, 0) > 0) Comment("Trend H1 = Down") ;
if(Diverg(LR_TFr_1,0,Diver_Per_H1)>0) Comment("....Pivot sur H1 = Up") ;
if(LinearRegression(Symbol( ), LR_TFr_2, 0, Diver_Per_H4, 0) > 0) Comment("Tendance H4 = Down") ;
if(Diverg(LR_TFr_2,0,Diver_Per_H4)>0) Comment("... !Pivot sur H4 = Up") ;
if(LinearRegression(Symbol( ), LR_TFr_3, 0, Diver_Per_D1, 0) > 0) Comment("Trend D1 = Down") ;
if(Diverg(LR_TFr_3,0,Diver_Per_D1)>0) Comment("... !Pivot sur D1 = Up") ;
if(LinearRegression(Symbol( ), LR_TFr_4, 0, Diver_Per_W, 0) > 0) Comment("Trend W = Down") ;
if(Diverg(LR_TFr_4,0,Diver_Per_W)>0) Comment("....W = Up") ;
return(0) ;
}