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

 
hoz:

Voici la fonction de trading qui ouvre les positions :

Tout est clair et concis. L'erreur 130 continue de s'afficher dans le testeur, bien que le conseiller expert fonctionne, mais l'erreur 130 continue de s'afficher. Quelle en est la raison ?

Cette fonction utilise des fonctions d'ouverture de position, les voici :

Je pensais que ça avait quelque chose à voir avec le niveau d'arrêt, j'ai ajouté la vérification, mais ce n'est pas la même chose. Je l'ai supprimé pour le moment car sur Alpari ce niveau est 0. Veuillez indiquer ce qui doit être corrigé pour éviter cette erreur.


Je pense que c'est à cause de la fonction GetPriceToInput().
 
sasha1995:


 double min=Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)];

comment écrire au format 1.30320 pour l'EURUSD par exemple ?

NormalizeDouble(...,Digits)
 
double max=High[iHighest(NULL,PERIOD_M15,MODE_HIGH,32,0)] ; // trouver le maximum des 32 prochaines mesures
double min=Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)] ; // trouver le minimum des 32 prochaines barres
double min=NormalizeDouble(min,Digits) ; //converti en T/P

double max=NormalizeDouble(max,Digits) ; // convertir en T/P

Ticket=OrderSend (Symbol(), OP_BUY, lot, Ask, 3,0, max, "Buy") ;

Veuillez me dire quelle est l'erreur ? Il ne veut pas créer de prise de profit.

Je pense avoir compris que ihighest ne donne que l'indice, mais comment trouver le prix le plus élevé ?

 
sasha1995:
double max=High[iHighest(NULL,PERIOD_M15,MODE_HIGH,32,0)] ; // trouver le maximum des 32 prochaines mesures
double min=Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)] ; // trouver le minimum des 32 prochaines mesures
double min=NormalizeDouble(min,Digits) ; //converti en T/P

double max=NormalizeDouble(max,Digits) ; // convertir en T/P

Ticket=OrderSend (Symbol(), OP_BUY, lot, Ask, 3,0, max, "Buy") ;

Veuillez me dire quelle est l'erreur ? Il ne veut pas créer de prise de profit.

Je pense avoir compris que ihighest ne donne que l'indice, mais comment trouver le prix le plus élevé ?


Haut[i]

Si lehaut de la barre zéro est le plus haut des 32 dernières barres (le prix augmente), la valeur du take profit peut être <= le prix actuel.

 
rigonich:

Haut[i].

Je ne comprends pas. Expliquez-moi.
 
sasha1995:
double max=High[iHighest(NULL,PERIOD_M15,MODE_HIGH,32,0)] ; // trouver le maximum des 32 prochaines mesures
double min=Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)] ; // trouver le minimum des 32 prochaines mesures
double min=NormalizeDouble(min,Digits) ; //converti en T/P

double max=NormalizeDouble(max,Digits) ; // convertir en T/P

Ticket=OrderSend (Symbol(), OP_BUY, lot, Ask, 3,0, max, "Buy") ;

Veuillez me dire quelle est l'erreur ? Il ne veut pas créer de prise de profit.

Je pense avoir compris que ihighest ne donne que l'indice, mais comment trouver le prix le plus élevé ?

C'est un désordre total. Bien :

 double max= NormalizeDouble (High[iHighest(NULL,PERIOD_M15,MODE_HIGH,32,0)], Digits); // найти максимум последующих 32 баров
 double min= NormalizeDouble (Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)], Digits); // найти минимум последующих 32 баров
 
sasha1995:

Je ne comprends pas. Veuillez expliquer.

Les prix élevés pour le graphique actuel sont stockés dans un tableau -- timeseries High[]
 
TarasBY:

C'est un désordre total. Bien :


Il ne fonctionne pas (toujours pas de sortie T/P).

if(TimeToStr(TimeCurrent(),TIME_SECONDS) == "00:00:00"){ // если время сервера 00:00:00, тогда

 double max= NormalizeDouble (High[iHighest(NULL,PERIOD_M15,MODE_HIGH,32,0)], Digits);

double min= NormalizeDouble (Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)], Digits); // ????? ??????? ??????????? 32 ?????

 }

 int Ticket;

if (TimeToStr(TimeCurrent(),TIME_SECONDS)== "09:00:00"){ // если время сервера 09:00:00, тогда

   if (napravl > 0){ // если направление больше 0, то

      Ticket=OrderSend (Symbol(), OP_BUY, lot, Ask, 3,0,max, "Покупаю"); // купить и поставить Take profit через 35 пунктов Bid + 385 * Point

      Alert (GetLastError());

   }

   else {

      if (napravl < 0) { // иначе, если направление меньше 0, то

        Ticket=OrderSend (Symbol(), OP_SELL, lot, Bid, 3,0,min, "Продаю"); // продать и поставить Take profit через 35 пунктов Ask - 385 * Point

         Alert (GetLastError());

      }

   }

//----

   return(0);

  } 

 

Bonjour à tous, je suis intéressé par une telle question, comment puis-je travailler avec des ticks, à partir d'un certain événement, par exemple, comparer la valeur du premier tick après un certain événement et le n-ième, comme je comprends au cours de la fonction démarrer le prix, par exemple, Bid tout le temps est écrasé, plus je peux fonctionner avec la valeur précédente, mais comment fonctionner avec le pré-prime et ainsi de suite, où et comment tout cela écrit ? Merci de votre attention)

 
sasha1995:

Il ne fonctionne pas (T/P ne sort toujours pas
).

Vous êtes tous en train de conspirer ? ! "Toujours pas de T/P" - à vous de déchiffrer ! Faites-le :

Print ("max = ", max, " | min = ", min);

Et montrer ce qu'il y a dans le journal.

Et n'oubliez pas qu'il existe des RÈGLES que le DC définit par la distance du TP et du SL par rapport au prix actuel - ces règles doivent être OBEYÉES !!!!.