Non, sur les bicyclettes, ça ne va pas. Je dois effectuer une correction horaire - la différence entre les fuseaux horaires de deux terminaux différents. C'est une question d'heures. Je vais chercher le problème moi-même.
Aleksander: au départ - appeler la fonction pour vérifier s'il y a un ordre d'achat dans la boucle d'ordre SellStop... et le supprimer - s'il n'y a pas d'ordre d'achat parmi les ordres ouverts...
Je ne comprends pas la phrase " L'ordre d'achat est présent dans la boucle de l'ordre SellStop ".
Le temps d'ouverture de l'ordre est le sixième paramètre de la ligne. Il a été lu dans la variable de type datetime par les commandes :
Stroka=FileReadString(FileHandle);// Temps d'ouverture r_master_OpenTime[i]=StrToTime(Stroka);// Heure d'ouverture
En conséquence, nous avons obtenu une valeur de Dieu sait quoi dans la variable r_master_OpenTime[i]. Mais dès que j'ai changé son type de datetime en int, tout est ok. Je programme avec mql4 depuis plus de cinq ans, et je ne cesse de me demander... :)
- S'il s'agit d'un SellStop (rappelez-vous son numéro magique - il s'agit également d'un ticket d'ordre d'achat {
via
Le bool OrderSelect(
int index, int select, int pool=MODE_TRADES)
nous vérifions si l'ordre existe... - c'est votre ordre d'achat...
si ce n'est pas le cas, supprimez l'ordre SellStop actuel.
}
Fin de la boucle de commande...
J'ai écrit cette absurdité
int i, k=OrdersTotal();
for (i=0; i<k; i++)
if(OrderType()==OP_SELLSTOP)
if(OrderMagicNumber()==ticket)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderType()==OP_BUY)return(-1);
else
OrderDelete(OrderTicket());
Le temps d'ouverture de l'ordre est le sixième paramètre de la chaîne. Il a été lu dans la variable de type datetime par les commandes :
Stroka=FileReadString(FileHandlе);// Время открытия
r_master_OpenTime[i]=StrToTime(Stroka);// Время открытия
En conséquence, la variable r_master_OpenTime[i] contiendrait une valeur sans importance. Mais dès que j'ai changé son type de datetime en int, tout est ok. Je programme avec mql4 depuis plus de cinq ans, et je ne cesse de me demander... :)
Convertit une chaîne de caractères contenant l'heure et/ou la date au format "aaaa.mm.jj [hh:mi]" en un nombre de date (nombre de secondes écoulées depuis le 01.01.1970).
Le format des données d'entrée ne correspond pas au format attendu.
J'ai essayé d'écrire un indicateur, il semble fonctionner, mais seulement sur l'historique il dessine comme prévu et ensuite quand de nouvelles cotations arrivent il dessine un masque habituel.
Le code est joint :
int start() { int counted_bars=IndicatorCounted(); int i,n; double Stark=0; //---- i=Bars-counted_bars-1;//+50; // n=Bars-counted_bars-1; while(i>=0) { //----
au départ - appeler la fonction pour vérifier s'il y a un ordre d'achat dans la boucle d'ordre SellStop... et le supprimer - s'il n'y a pas d'ordre d'achat parmi les ordres ouverts...
voir...
Round robin des ordres fixés (départ)
nous prenons la commande
- S'il s'agit d'un SellStop (rappelez-vous son numéro magique - il s'agit également d'un ticket d'ordre d' achat {
via
nous vérifions si l'ordre existe... - c'est votre ordre d'achat...
S'il n'est pas là, nous supprimons l'ordre SellStop actuel.
}
} Fin de la boucle de commande...
InitsializeRealMasterOrders -- chercher une faute ici.
Et voici autre chose - pour ne pas faire de vélo - https://docs.mql4.com/ru/convert/timetostr.
Toujours un problème. Dans la sous-routine, le code lit les données des lignes du document texte :
4;NZDUSD;98537467;1;0.5;1340809155;0;0.7881;0;0.7939;0;0
4;NZDUSD;98537450;1;0.5;1340809147;0;0.788;0;0.7939;0.787;0
Le temps d'ouverture de l'ordre est le sixième paramètre de la ligne. Il a été lu dans la variable de type datetime par les commandes :
Stroka=FileReadString(FileHandle);// Temps d'ouverture
r_master_OpenTime[i]=StrToTime(Stroka);// Heure d'ouverture
En conséquence, nous avons obtenu une valeur de Dieu sait quoi dans la variable r_master_OpenTime[i]. Mais dès que j'ai changé son type de datetime en int, tout est ok. Je programme avec mql4 depuis plus de cinq ans, et je ne cesse de me demander... :)
voir...
Round robin des ordres fixés (départ)
nous prenons la commande
- S'il s'agit d'un SellStop (rappelez-vous son numéro magique - il s'agit également d'un ticket d'ordre d'achat {
via
nous vérifions si l'ordre existe... - c'est votre ordre d'achat...
si ce n'est pas le cas, supprimez l'ordre SellStop actuel.
}
Fin de la boucle de commande...
J'ai écrit cette absurdité
drknn: Все равно глюк. В подпрограмме код считывает данные из строк текстового документа:
4;NZDUSD;98537467;1;0.5;1340809155;0;0.7881;0;0.7939;0;0
4;NZDUSD;98537450;1;0.5;1340809147;0;0.788;0;0.7939;0.787;0
Le temps d'ouverture de l'ordre est le sixième paramètre de la chaîne. Il a été lu dans la variable de type datetime par les commandes :
En conséquence, la variable r_master_OpenTime[i] contiendrait une valeur sans importance. Mais dès que j'ai changé son type de datetime en int, tout est ok. Je programme avec mql4 depuis plus de cinq ans, et je ne cesse de me demander... :)
Veuillez me dire ce qu'il faut faire si :
Dans le testeur, tout fonctionne bien, tout se passe comme prévu, mais sur le RealSk, la transaction ne s'ouvre pas.
P.S. J'ai vraiment besoin d'aide, c'est une question de vie ou de mort.
Bonne journée à tous.
J'ai essayé d'écrire un indicateur, il semble fonctionner, mais seulement sur l'historique il dessine comme prévu et ensuite quand de nouvelles cotations arrivent il dessine un masque habituel.
Le code est joint :
int start()
{
int counted_bars=IndicatorCounted();
int i,n;
double Stark=0;
//----
i=Bars-counted_bars-1;//+50;
// n=Bars-counted_bars-1;
while(i>=0)
{
//----
double Ma=iMA(NULL,0,PerMa,Shift,MODE_EMA,PRICE_CLOSE,i);
//double Ma1=iMA(NULL,0,PerMa,Shift,MODE_EMA,PRICE_CLOSE,i+1);
if(Stark+Step*Point<Ma)Stark=Ma;
if(Stark-Step*Point>Ma)Stark=Ma;
ABuf[i]=Stark;
//----
i--;
}
return(0);
}
S'il vous plaît, aidez-moi à le réparer pour qu'il continue à dessiner des étapes.
Je l'apprécierais vraiment.
Gek.
{
Price1 =(iClose(Symbol_1,0,0) - iClose(Symbol_1,0,f)) / MarketInfo(Symbol_1, MODE_POINT)
Price2 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,f)) / MarketInfo(Symbol_2, MODE_POINT) ;
Spread = Price1 - Price2 ;
Print ("Price1="+Price1, " Price2="+Price2) ;
if (Spread==0){t=f ; break;}
}
Price12 = (iClose(Symbol_1,0,0) - iClose(Symbol_1,0,t)) / MarketInfo(Symbol_1, MODE_POINT) ;
Price22 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,t)) / MarketInfo(Symbol_2, MODE_POINT) ;
Spread2 = Price12 - Price22 ;
si (MathAbs(Spread2) >= razdvizka && Spread2 < 0) { ouvrir une transaction }
Je veux fixer la barre où l'écart était égal à zéro et contrôler l'écart à partir de celle-ci.