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

 
melnikas:

Mon cas est-il si difficile ?

double ExtVolumesBuffer[];

vous avez raison au sujet de l'emplacement. Vous devez spécifier la taille du tableau avant de l'utiliser. Ou faites-en un autre tampon

 
//+------------------------------------------------------------------+
int deinit()
  {    
  return(0);
  }
//+------------------------------------------------------------------+
int start()
  {
  f1(); //Как сделать, что-бы после вызова функции, программа могла остановиться?
  Alert("Есть сигнал"); // И до этого места работа программы бы не дошла
  return(0);
  }
//+------------------------------------------------------------------+  
  int f1()
    {
    return(f2());
    }
//+------------------------------------------------------------------+    
  int f2()
    {  
    return(deinit()); //Тут, по задумке, нужно остановить работу всей программы
    }
//+------------------------------------------------------------------+  
Ou, à partir d'une fonction appelée, le fonctionnement du programme ne peut être arrêté ? (Exemple de code à utiliser dans l'indicateur)
 
fore-x:
Ou, à partir d'une fonction appelée, le programme ne peut pas être arrêté ? (Exemple de code, à utiliser dans l'indicateur)
return(deinit());

Que voulez-vous dire par "stop" ? supprimer l'EA/indicateur du graphique ?


à propos de deinit() :

l'appel de deinit ne conduit pas à la désactivation de l'indicateur/indicateur, mais la désactivation conduit à l'appel de deinit

 
ilunga:

Que voulez-vous dire par "stop" ? supprimer l'EA/indicateur du graphique ?


à propos de deinit() :

ce n'est pas l'appel à deinit qui provoque la désactivation de l'indicateur/expert, c'est la désactivation qui provoque l'appel à deinit

Stop signifie arrêter l'exécution de la fonction de départ - à partir de la fonction appelée. Comme return(0).

A propos de deinit, j'en suis conscient, c'est pourquoi je ne sais pas comment résoudre cette énigme. Apparemment, vous ne pouvez pas le faire de cette façon.

 
fore-x:

Stop signifie arrêter l'exécution de la fonction de départ - à partir de la fonction appelée. Comme return(0).

A propos de deinit, je sais, c'est pourquoi je ne sais pas comment résoudre ce puzzle. Apparemment, vous ne pouvez pas le faire de cette façon.

Alors qu'est-ce qui vous empêche de renvoyer (-1) ou autre chose avec cette fonction et de faire un appel à cette fonction dans start() avec un contrôle ? par exemple, comme ceci :

int start()
  {
  if (f1() == -1) return (0);
  Alert("Есть сигнал"); // И до этого места работа программы бы не дошла
  return(0);
  }
//+------------------------------------------------------------------+  
  int f1()
    {
if (все плохо) return (-1); else return(0);
    }
 
ilunga:

Alors qu'est-ce qui vous empêche de renvoyer (-1) ou autre chose avec cette fonction et de faire un appel à cette fonction dans start() avec un contrôle ? par exemple comme ceci :

//+------------------------------------------------------------------+
int start()
  {
  if(f1() < 0) return(0);
  Alert("Есть сигнал"); // И до этого места работа программы бы не дошла
  return(0);
  }
//+------------------------------------------------------------------+  
  int f1()
    {
    return(f2());
    }
//+------------------------------------------------------------------+    
  int f2()
    {  
    return(-1); //Тут, по задумке, нужно остановить работу всей программы
    }
//+------------------------------------------------------------------+  
Je vous comprends, je voulais juste éviter des mouvements inutiles dans le code, clarifié. Merci pour l'exemple !
 
ilunga:

vous avez raison au sujet de l'emplacement. Vous devez spécifier la taille du tableau avant de l'utiliser. Ou faites-en un autre tampon

Merci beaucoup !
 


dkfl.zrjdktdbx 09.12.2011 16:56

Bonsoir, j'ai constaté que le robot de trading ne ferme pas les positions, environ une fois sur 50, lorsqu'il atteint un profit. Il doit alors tout fermer, les ordres en cours et tous les autres, et se remettre en place. Le fait de ne pas fermer crée une confusion dans les ordres et des pertes.


Imaginons donc que, parfois, il s'avère qu'un ordre a été clôturé au takeprofit, le prix Clowes - prix de clôture de l'ordre - est égal à zéro !!!!!.

Voyez la cinquième ligne dans la capture d'écran ci-dessous, c'est la cinquième ligne, l'ordre s'est fermé sur le takeprofit. Et dans la neuvième ligne en partant du bas, le prix de clôture de l'ordre est égal à zéro !!!!!.

Il semble qu'il n'y ait rien de particulièrement compliqué dans le code... Je vais vous le montrer tout de suite.

Lorsque je passe une commande, j'enregistre le temps dans la fenêtre wremjapomnim. Dès qu'un ordre est fermé à currentprofit, je supprime tous les ordres et je me souviens à nouveau de l'heure dans le wremjapomnim pyrimen et je les fixe.

for ( i=OrdersHistoryTotal();i>0;i--){ OrderSelect(i-1,SELECT_BY_POS,MODE_HISTORY  );
Alert( "wremjapomnim " ,wremjapomnim, "  OrderCloseTime(        )   ",  OrderCloseTime( ),  " ",i , " OrderTakeProfit( ) " ,OrderTakeProfit( ),
  " OrderClosePrice(    )  ",OrderClosePrice(   ) );
if ( OrderTakeProfit( )==OrderClosePrice(       )&&wremjapomnim<OrderCloseTime( )|| (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)<2*Point)
   &&wremjapomnim<OrderCloseTime(       )|| (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)>-2*Point)&&wremjapomnim<OrderCloseTime(       )){C=0;A=1 ;  Alert("C",C,"A",A);
   for ( int ii=OrdersTotal();ii>0;ii--){ OrderSelect(ii-1,SELECT_BY_POS );
   if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()|| OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()){ 
  OrderDelete(OrderTicket( )) ; Alert ("OrderDelete-vse",  GetLastError( ) ); stsBUY=0;stsSELL=0;
   OrderClose( OrderTicket( ), OrderLots( ), OrderClosePrice( ) , 0, CLR_NONE);Alert ("OrderClose-vse",  GetLastError( ) ); C=0; }     }              }
   
                                                      } 
 
L'alerte se trouve dans les deuxième et troisième lignes du code et écrit tout dans le journal, y compris le fait queOrderClosePrice( ) de l'ordre 49 est égal à zéro.
 

Dites-moi comment suivre la formation d'une fractale dans l'EA. Je dois ouvrir un ordre après la formation d'une nouvelle fractale. Je ne sais pas comment fonctionne cet indicateur ; il a une sorte de ligne supérieure et une sorte de ligne inférieure.

Si, par exemple, une fractale est formée et que le prix casse ce minimum, la fractale sera-t-elle redessinée ou dois-je simplement ajouter une autre fractale ?
.

 
Bonjour, pourriez-vous me dire comment trouver le bas et le haut de la dernière bougie par exemple.
Raison: