[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 1079

 

Quelque chose ne semble pas fonctionner. S'IL VOUS PLAÎT, AIDEZ-MOI.

L'idée est la suivante : si la bougie est supérieure à une certaine valeur, il faut interdire la poursuite des transactions.

bool Trade=true ;

//---------- start()

{.......

if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==1) CheckForOpen() ; //--------open order if (no order is open) AND (candlestick is not bigger than)

if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==-1) Trade=false ; //--------- définir Tradeà false si (aucun ordre ouvert) ET (le chandelier est supérieur à)

......}

//------- utiliser Trade dans la fonction CheckForOpen().

void CheckForOpen() //------------------- vérifier les conditions et l'ordre d'ouverture.

{int res ;

if( Trade && A()==-1 && B()==-1) //------- vérifier les conditions d'ouverture

{ res=OrderSend(Symbol(),OP_SELL,Lot,Bid,2,Ask+SL*Point,Bid-TP*Point,"",MAGICMA,0,Red) ; //--------- si la condition est remplie, l'ordre est ouvert

trade=false ; } //--------On attribue au commerce une valeur d'interdiction de commerce. Et là, ça marche. Si l'ordre se ferme à l'ordre d'achat, il attend alors les nouvelles conditions définitives, même si les anciennes sont toujours en vigueur (auparavant, le conseiller ouvrait des ordres en permanence).

.........}

//-------------------------- vérifier la hauteur de la bougie

int CheckVolume()

{ double volume=High[1]-Low[1] ; //-------mesure de la hauteur du chandelier

if (volume <= CandleVolume*Point) return (1) ; //---------- si la bougie est inférieure à

if (volume > CandleVolume*Point) return (-1);//------------si la bougie est plus que

return(0);}

J'ai aussi essayé la version, mais ça n'a pas marché :

void start()

{ .....

si(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==1) CheckForOpen() ;

.....}

.....

int CheckVolume()

{ double volume=High[1]-Low[1] ; //-------mesure de la hauteur de la bougie

if (volume <= CandleVolume*Point) return (1) ; //---------- si la bougie est inférieure à

if (volume > CandleVolume*Point) {Trade=false ; return (-1);}//------------si la bougie est supérieure à

return(0);}

 
dzhini:

Il n'y a aucune chance que ça marche.


Peut-être devrions-nous d'abord faire un indicateur
 
Vinin:

Peut-être devrions-nous d'abord créer un indicateur
et qu'il n'y a aucun moyen de le faire sans elle ?
 

Aidez-moi ! Comment faire en sorte qu'une impression n'apparaisse qu'une seule fois, mais qu'à chaque fois qu'elle est cochée, elle tombe.



while(OrdersTotal() != 0 && OrderSelect(index, SELECT_BY_POS, MODE_TRADES)){
    if(OrderType() == OP_BUY)
     {
       Print ("-------   ",OrderSymbol()," "," BUY ",OrderLots()," trade was opened at ", OrderOpenPrice(),"; Stop loss:", OrderStopLoss(),
          "; Take profit:", OrderTakeProfit(), "; Ticket:", OrderTicket(),"; Open time:", OrderOpenTime());
                       return(0);
                }
    if(OrderType() == OP_SELL)
      {
       Print ("-------   ",OrderSymbol()," "," SELL ",OrderLots()," trade was opened at ", OrderOpenPrice(),"; Stop loss:", OrderStopLoss(),
          "; Take profit:", OrderTakeProfit(), "; Ticket:", OrderTicket(),"; Open time:", OrderOpenTime());
                      
       }
index++;
 
itum:

Aidez-moi ! Comment faire en sorte qu'une impression n'apparaisse qu'une seule fois, mais qu'à chaque fois qu'elle est cochée, elle tombe.


Éditer cette impression au moment de l'ouverture de la commande.
 
sergeev:
sortir cette impression lorsque la commande est ouverte.


J'ai besoin de sortir des informations sur les ordres qui ont déjà été ouverts manuellement ou par un autre EA.

 
itum:


J'ai besoin d'afficher des informations sur les ordres existants qui ont déjà été ouverts manuellement ou par un autre EA.

Puis les afficher dans un commentaire à l'écran. Commentaire
 

Quelle est cette erreur ? Si j'envoie un courrier de test à partir du terminal, j'obtiens une erreur

- 2010.12.28 18:23:55 Mail : 530 5.7.0 Doit d'abord émettre une commande STARTTLS. y1sm3265289fak.15

 
dzhini:
et qu'il n'y a aucun moyen de le faire sans elle ?

Vous pouvez, bien sûr, mais l'indicateur permet de vérifier facilement l'algorithme visuellement.
 
itum:


J'ai besoin d'afficher des informations sur les ordres existants qui ont déjà été ouverts manuellement ou par un autre EA.


Sinon, nous pouvons faire un compteur d'impressions. Nous déclarons une variable entière. Puis nous vérifions s'il n'y a pas d'ordres, nous le mettons à zéro. Ensuite, nous vérifions si la variable est égale à zéro et s'il y a des ordres sur le marché, alors nous imprimons les données de l'ordre et incrémentons cette variable de 1. Dès que les ordres sont clôturés, la variable est remise à zéro. Cela signifie que le code attendra qu'au moins un ordre apparaisse et affichera des informations à son sujet dans le journal.