[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 216

 
Je pensais qu'il n'y avait pas de joint à cet endroit - j'y retournerai - merci.
 
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 ".
 

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

Le bool OrderSelect( int index, int select, int pool=MODE_TRADES)


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...

 
TheXpert:

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... :)

 
Aleksander:

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

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());
Спасибо вроде работает))
 

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 :

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... :)

D'ici
datetime StrToTime(string value)
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.
 

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.

 
Gek34:

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.

Donnez-moi tout le code de l'indicateur
 
ce qui ne va pas pour (f=1;f<Bars;f++)
{
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.