[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 737

 
trader265:
Les gars, merci beaucoup à vous tous. Je vais m'en occuper. Si ça ne marche pas, je peux te déranger ?

Même si personne n'est là aujourd'hui, votre message sera vu demain. Ce n'est pas comme si nous avions un bureau ici :) où tout le monde part à la fin de la journée :)
 
drknn:


La logique est la suivante :

La limite de 8 tampons d'indicateurs est due au langage lui-même. Il est inutile de limiter le nombre d'autres tableaux, car il ne peut pas dépasser la taille de la RAM + le fichier d'échange de toute façon. Il n'est donc pas utile d'en faire trop. Je veux dire qu'une certaine quantité de mémoire est allouée pour le tableau.

Voici mon problème :'SymbolSellColor' - débordement de pile interne - simplifiez le programme, s'il vous plaît.

Augmenter la pile n'aide pas. Code - simple, je ne suis pas doué pour écrire du complexe. RAM, swap - pas de problème, c'est suffisant.

 
Abzasc:

Voici mon problème : 'SymbolSellColor' - débordement de pile interne - simplifiez le programme, s'il vous plaît.

Stack overflow - n'aide pas. Le code est simple, je ne suis pas doué pour écrire du complexe. RAM, swap - pas de problème, c'est suffisant.


Demandez aux développeurs - peut-être y a-t-il des problèmes que nous ne connaissons pas.
 

J'ai une question sur la raison pour laquelle un ordre en attente ne s'ouvre pas, veuillez m'aider.

extern int TakeProfit=100;
extern int StopLoss=100;
extern double Lot=0.01;
extern int StartTime=0;
int Today=0;
int h=100;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
int total = OrdersTotal();
if(total == 0)

   {NewOrder(OP_BUY,Lot);
    NewOrder(OP_SELL,Lot);
    NewOrder(OP_BUYLIMIT,Lot);
    Today=TimeDay(TimeCurrent());}
return(0);}

  
//+------------------------------------------------------------------+
int NewOrder(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR=0; //Цена
double PR1=0; //Цена1
while(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUY)
   {PR=Ask;
    if(TakeProfit>0) TP=Ask+TakeProfit*Point;
    if(StopLoss>0) SL=Ask-StopLoss*Point;}
if(Cmd==OP_SELL)
   {PR=Bid;
    if(TakeProfit>0) TP=Bid-TakeProfit*Point;
    if(StopLoss>0) SL=Bid+StopLoss*Point;}
if(Cmd==OP_BUYLIMIT)
   {PR1=Ask-Point*h;
    if(TakeProfit>0) TP=PR+TakeProfit*Point;
    if(StopLoss>0) SL=PR-StopLoss*Point;}
int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,0,0,CLR_NONE);
int tic1=OrderSend(Symbol(),Cmd,Lot,PR1,3,SL,TP,0,0,CLR_NONE);
if(tic<0) Print(GetLastError());
if(tic1<0) Print(GetLastError());
return(tic);}
 
FoxUA:

question quelle est l'erreur qui fait qu'un ordre en attente ne s'ouvre pas aidez moi svp

Je reconnais mes commentaires dans votre code :))))))))))

Vérifiez ce que vous passez exactement à la fonction comme paramètre et ce que la fonction obtient exactement lorsqu'elle s'exécute - imprimez-le.

 
drknn:
Je reconnais mes commentaires dans votre code :))))))))))

Vérifiez exactement ce que vous passez à la fonction comme paramètre et exactement ce que la fonction obtient lorsqu'elle s'exécute - imprimez cela.


Je collectionne le Lego Constructor depuis environ 3 heures et l'ordre en attente ne veut pas s'ouvrir.
 
drknn:
Je reconnais mes commentaires dans votre code :))))))))))

Vérifiez exactement ce que vous passez à la fonction comme paramètre et exactement ce que la fonction obtient lorsqu'elle s'exécute - imprimez cela.


Je vois comment faire la fonction suivante

int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,0,0,CLR_NONE);


après cette fonction

int NewOrder1(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR1=0; //Цена1
while(!IsTradeAllowed()) Sleep(100);

if(Cmd==OP_BUYLIMIT)
   {PR1=Ask-Point*h;
    if(TakeProfit>0) TP=PR1+TakeProfit*Point;
    if(StopLoss>0) SL=PR1-StopLoss*Point;}

int tic1=OrderSend(Symbol(),Cmd,Lot,PR1,3,SL,TP,0,0,CLR_NONE);

if(tic1<0) Print(GetLastError());
return(tic1);}
 

J'ai compris, tu dois juste définir l'opérateur pas seulement un paramètre, mais à travers d'autres.

 

Question : quelle est la fonction responsable de la date d'expiration d'un ordre en attente ? Je ne la vois pas et il est indiqué que l'utilisation de la date d'expiration n'est pas autorisée par le courtier.

 

expiration - date d'expiration de l'ordre en attente. Lorsque l'heure d'expiration arrive, l'ordre en attente sera automatiquement fermé sur le serveur de négociation. Sur certains serveurs commerciaux, l'application du délai d'expiration des ordres en attente peut être interdite. Dans ce cas, si l'on tente de définir une valeur non nulle du paramètre, l'ordre de transaction sera rejeté.

Quelle valeur doit être fixée pour que la commande ne soit pas rejetée ?