[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 - 2. - page 70

 

Aide à la résolution du problème. J'ai peut-être déjà ennuyé tout le monde ici, mais aidez-moi s'il vous plaît. Si le drapeau de la barre précédente est égal à 1, il est permis de tirer la flèche vers le bas. Après qu'il ait été dessiné, nous mettons un nouveau drapeau égal à -1. Dans l'autre camp, au contraire. Mais ce que je fais mal. Pas de flèches sans commentaires. Toutes les flèches avec commentaires.

flag[i] = flag[i+1];             
  if (// flag[i] == 1 && 
//в вниз           
       ma13_0 > ma55_0 && macd[0] >= macd[1] && macd[1] >= macd[2] && macd[2] >= macd[3] && cci15_0 > 50 && cci170_0 > 0)
  {
       S[i] = High[i]+point*Point;                
       flag[i] = -1 ; // флаг показывает нормально пока закоментировано        
  }        
  if (// flag[i] == -1 && 
//в верх          
       ma13_0 < ma55_0 && macd[0] <= macd[1] && macd[1] <= macd[2] && macd[2] <= macd[3] && cci15_0 < 50 && cci170_0 < 0)
  {
       B[i] = Low[i]-point*Point;                
       flag[i] = 1 ;//флаг показывает нормально пока закоментировано         
   }
 
granit77:
Je ne sais pas. Sergeev le sait, il dit que ça semble être juste. J'aimerais aussi voir comment l'écrire correctement.
Je l'ai juste corrigé un peu, pour que ça montre quelque chose.
- Je mets l'indicateur dans une fenêtre séparée, alors vous pouvez le remettre

- Le tableau macd[] était suspendu dans l'air, il est devenu un indicateur, ce qui a augmenté la précision.
- bloqué votre condition complexe pour l'ouverture, mettez une condition simple pour l'ajustement
- J'ai changé la condition pour le drapeau, au moins ça marche.

Ensuite, vous pouvez introduire progressivement des conditions, vous verrez immédiatement où se trouve le bug.

Merci. Je vais regarder. Pendant que j'écrivais le message précédent, vous avez posté le vôtre.
 
100yan:

AIDE ! Dites-moi, s'il vous plaît, si je ferme une partie d'une position (par exemple, un ordre pour 1 lot, et fermer 0,5 lot) le ticket OrderClose doit changer ? Mon testeur dit que c'est le cas... Comment l'éviter ? Voici un morceau de code de fermeture...

Il n'y a aucun moyen de l'éviter. C'est le DC qui change le ticket. Vous rouvrez essentiellement avec un autre volume, d'où le nouveau ticket. Par conséquent, tenez votre propre registre des ordres et, après la fermeture partielle d'une position, n'oubliez pas son nouveau ticket pour la suite des opérations. Vous pouvez également fournir une sorte d'identification des positions partiellement fermées pour un suivi correct de ces positions par votre conseiller expert.
 
artmedia70:
Il n'y a aucun moyen de l'éviter. C'est le DC qui change le ticket. Vous rouvrez essentiellement une position avec un volume différent, d'où le nouveau ticket. Par conséquent, tenez votre propre registre des ordres et, après la fermeture partielle d'une position, mémorisez son nouveau ticket pour la suite des opérations. Vous pouvez également fournir une sorte d'identification des positions partiellement fermées pour un suivi ultérieur correct par le conseiller expert.

Merci ! Le MagicNumber change-t-il ?
 
gince:
Fait un dessin temporaire du tampon flag[] - il est vide, pourquoi ? Où est mon erreur ?

votre erreur est que flag[i+1] n'est pas initialisé.

donc la comparaison flag[i]==1 et flag[i]==-1 ne sera jamais exécutée !

 
100yan:

Merci ! Le MagicNumber change-t-il ?
pas de
 
100yan:

Merci ! Le MagicNumber change-t-il ?
Le MagicNumber ne change pas dans ce cas, sauf si le code EA le prévoit.
 
DhP:
Le MagicNumber ne change pas dans ce cas, sauf si cela est prévu dans le code EA.
est-il possible de faire cela ? ??? s'il vous plaît montrez-moi comment cela peut être fait
 
sergeev:
oui ??? et cela peut être envisagé ? ??? veuillez montrer comment cela peut être fait
Lorsqu'une position est partiellement fermée, vous pouvez changer le magik. Je suis sûr que vous pouvez écrire cela facilement.
 
sergeev:

votre erreur est que flag[i+1] n'est pas initialisé.

donc la comparaison flag[i]==1 et flag[i]==-1 ne sera jamais exécutée !

Je comprends que je n'ai pas initialisé le paramètre flag[i+1] . Si oui, où et comment le faire ?

Si je mets 1, alors quand je démarre l'indicateur, il (l'indicateur) attendra le changement.

flag[i+1]= 1;//начальная установка

for(int i=limit-1;i>=0;i--){ 
   flag[i] == flag[i+1];   
   if ( flag[i] == 1  &&   
        условие продажи){              
       Продажа[i] = High[i]+point*Point; 
       flag[i] == -1 ;
    }                     
    if (flag[i] == - 1  &&     условие покупки){          
              Покупка[i] = Low[i]-point*Point; 
              flag[i] == 1 ;}
    }
}