Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 1008

 
Stereosin:
Bonne journée à tous. L'idée est de placer un ordre en suspens dans la direction opposée pour chaque ordre de marché ouvert (c'est-à-dire prendre le profit et le stop loss) lorsque le stop loss est déclenché (si ordre d'achat, alors envoyer l'ordre en suspens). Je ne trouve pas de séquence syntaxique pour écrire un script qui supprimera l'ordre en attente lorsque l'ordre actuel se ferme sur le take profit ? Il y a peut-être un script écrit parmi ceux qui sont gratuits, mais la recherche n'est pas fructueuse ( . J'aimerais en écrire un moi-même pour pouvoir m'en occuper, mais je ne comprends pas la séquence syntaxique. Laissez-moi vous expliquer sur un autre exemple - je veux une glace - la séquence syntaxique - 1) - se lever du canapé 2) s'habiller 3) aller au magasin 4) acheter une glace. Est-il possible de faire de même pour ma tâche ?

lorsque l'ordre en cours est fermé, le nombre d'ordres d'achat diminuera, ou ils seront absents du tout (cela dépend de l'algorithme), vous faites cette vérification et supprimez les ordres en attente

quelque chose comme ceci (dans ce cas, au contraire, les ordres en attente sont supprimés si un achat placé précédemment a clôturé sur un bénéfice) :

 for(int m=OrdersTotal()-1;m>=0;m--)
   if(OrderSelect(m,SELECT_BY_POS,MODE_TRADES)) 
     if(Symbol()==OrderSymbol() && OrderMagicNumber()==Magic) {  
    
      if(OrderType()==OP_BUY)  sBuy++; 
      if(OrderType()==OP_SELL) sSell++;
       
      if(OrderType()==OP_BUYLIMIT)
       if(sBuy==0 || sSell>0) OrderDelete(OrderTicket());
      if(OrderType()==OP_SELLLIMIT) 
       if(sSell==0 || sBuy>0) OrderDelete(OrderTicket());
  }
 
Ratmirf:

C'est donc correct ?

si (OrderOpenTime()+7200+15*60 <=TimeCurrent()) Cls_Buy=true;

si (OrderOpenTime()+7200+900 <=TimeCurrent()) Cls_Buy=true;

et finir comme ça ?

si (OrderOpenTime()+8100 <=TimeCurrent()) Cls_Buy=true ;

Eh bien, c'est des maths de lycée... Soyez un peu plus confiant.
 
harbor:

lorsque l'ordre en cours est fermé, le nombre d'ordres d'achat diminuera, ou ils seront absents du tout (cela dépend de l'algorithme), vous faites cette vérification et supprimez les ordres en attente

quelque chose comme ceci (dans ce cas, au contraire, les ordres en attente sont supprimés si un achat placé précédemment a clôturé avec un bénéfice) :

Merci beaucoup. Je m'en occupe ce soir.
 

Dans ce cas, j'augmente le seuil de déclenchement à la taille requise. Je ne fixe pas de seuil, mais je le laisse virtuel dans le programme et j'ouvre un ordre. En conséquence, seul un ordre sur 15 à 20 s'ouvre. Que dois-je faire pour ouvrir tous les ordres ?

RefreshRates();


     double bid = MarketInfo(symbol,MODE_BID);
     double ask = MarketInfo(symbol,MODE_ASK);

    

     double stoplevel =  NormalizeDouble(stoplevelTemp * tickTemp,digitsTemp)+tickTemp;

     if(digitsTemp == 5 )
          stoplevel+=(700 * tickTemp);
     
     if(spreadOrdDangBr < stoplevel)                                                                           //если спред меньше стоплевела - перебиваем
         spreadOrdDangBr=stoplevel;
         
     double lotDB = calculationLot(spreadOrdDangBr,0.0025);                                                      //расчитываем лот - четверть процента свободных денег
     


         slODB=ask-spreadOrdDangBr;                                                                              
         tpODB= ask+ spreadOrdDangBr;

         orderTicketODB=OrderSend(symbol,OP_BUY,lotDB,ask,3,slODB,0,("dangBr" +spreadOrdDangBr));



et, par conséquent, dans le terminal


 
Bonjour à tous) Comment déterminer le prix maximum d'une barre sélectionnée (par exemple la 100ème barre) ?
 

À l'aide, s'il vous plaît ! Je veux ouvrir une position d'achat, et si le prix augmente de 100 %...
pips, mon stop loss deviendra égal à zéro par rapport au stop loss précédent.

Est-ce que je le fais correctement ?


si(Bid-OrderOpenPrice()>Point*100)

{

OrderModify(OrderTicket(),OrderOpenPrice(), 0,TakeProfit,0,) ;

retour(0) ;

}

Merci !

 
Tema97:
Bonjour à tous, comment déterminer le prix maximum d'une barre sélectionnée (par exemple la 100ème) ?)
High [100] ne sera pas utile
 

J'ai trouvé une fonction qui définit le prix maximum et minimum pour 100 barres et dessine des lignes horizontales (s'il vous plaît aidez-moi à faire passer les 15 premières barres et seulement ensuite vérifier pour 100 (comment puis-je faire ce décalage ?) et un autre problème avec les lignes - il dessine seulement 1 fois - c'est-à-dire - si nous allons encore 100 points avec de nouveaux hauts et bas - les lignes ne sont pas dessinées) quelqu'un sait s'il vous plaît écrire - voici le code

extern inttern Quant_Bars=100 ; // Nombre de barres

//--------------------------------------------------------------------

int start() // Démarrage de la fonction spéciale

{

int i ; // numéro de la barre

double Minimum=Bid ; // Prix minimum

Maximum=Bid ; // Prix maximum

for(i=0;i<=Quant_Bars-1;i++) // De zéro ( !) à

{ // ...Quant_Bars-1 ( !)

if (Low[i]<Minimum) // Si < connu

Minimum=Low[i] ; // ce sera le Min

if (High[i]> Maximum) // si > connu

Maximum=High[i] ; // ce sera le maximum.

}

Alert("Pour les dernières ",Quant_Bars, // Affichage

"Min= ",Minimum," Max= ",Maximum) ;

double linia1=ObjectCreate("highLine",OBJ_HLINE,0,0,Maximum) ;

double linia2=ObjectCreate("lowLine",OBJ_HLINE,0,0,Minimum) ;

return(0) ; //sortir start()

}

 
Tema a enfin lu la documentation. On peut y trouver tant de choses intéressantes... Par exemple, iHighest renvoie l'indice de la plus grande valeur trouvée (décalage par rapport à la barre actuelle) du graphique correspondant. Et iHigh renvoie la valeur du prix maximum de la barre (spécifiée par le paramètre shift) du graphique correspondant. Une fois que vous aurez compris ces deux fonctions, vous pourrez facilement résoudre votre problème sans recourir à des fonctions qui ne sont pas toujours écrites par d'autres.
 
Les gars, si l'indicateur dessine des objets graphiques non standard, est-il possible d'y accéder ? Le problème est qu'ils ne sont pas affichés dans la liste des objets (lorsque le bouton All est activé) et que la fonction ObjectsTotal() ne les voit pas. En essayant d'accéder aux objets par leur nom, GetLastError() renvoie l'erreur 4202(fonction ObjectFind())