[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 - 5. - page 35

 
keep87:

double get_extrem(int n) {

   for(int i=1;;i++) {

      double ind=iCustom(Symbol(),0,"indicator_name",0,i);

      if(n>1)  

         if(ind!=0) n--;

         else

         if(ind!=0) return(ind);

      }

   }


Si vous avez besoin du numéro de barre du pic, changez le type de fonction en int et au lieu de return(ind) ; écrivez return(i) ;

C'est à cela que je pense en ce moment. Toutes les fonctions de type double et int renvoient toujours des valeurs fixes concrètes. Par exemple, 1, 0, -1 et dans ce cas, la condition doit être traitée avec cette fonction d'une manière différente de ce que j'ai fait auparavant, par ex :

if(FindOrders() > 1)

{

   Ordersend(...........); 

} 

Dans ce cas, nous devons comparer, par exemple, pour 3 tribus :

if (get_extrem(3) == ind)
{
   // Делаем что-то при выполнении заданного условия
}

Est-ce la façon logique de l'écrire ? Peut-être est-il plus raisonnable de définir le type bool pour cette fonction ? Par exemple : si nous avons trouvé le troisième genou, alors au prix (inférieur ou supérieur à ind) nous achetons ou vendons.

Et dans ce cas, nous comparons la fonction avec son paramètre n-seuil avec le prix à ce genou, et puis quoi ?

 
hoz:

Je suis en train d'y réfléchir en ce moment. Toutes mes fonctions de type double et int renvoient toujours des valeurs fixes spécifiques. Par exemple, 1, 0, -1, mais dans ce cas, la condition doit être exécutée avec cette fonction d'une manière différente de ce que j'ai fait auparavant, par exemple :

Dans ce cas, nous devons comparer, par exemple, pour 3 tribus :

Est-ce la façon logique de l'écrire ? Peut-être est-il plus raisonnable de définir le type bool pour cette fonction ? Par exemple : si nous avons trouvé le troisième genou, nous achetons ou vendons à un prix (inférieur ou supérieur à ind).

Dans ce cas, nous comparons la fonction avec son paramètre n genou au prix à ce genou, et puis quoi ?



double ind=iCustom(Symbol(),0,"indicator_name",0,i);

Double ind peut retourner -2, -3 et ainsi de suite et même Pi 3.14159......

Et dans ce cas, nous comparons la fonction avec ses paramètres n-genoux au prix à ce genou, et ensuite quoi ? Ce n'est pas très clair.....

 
hoz:

Je suis en train d'y réfléchir en ce moment. Toutes mes fonctions de type double et int renvoient toujours des valeurs fixes spécifiques. Par exemple, 1, 0, -1, mais dans ce cas, la condition doit être exécutée avec cette fonction d'une manière différente de ce que j'ai fait auparavant, par exemple :

Dans ce cas, nous devons comparer, par exemple, pour 3 tribus :

Est-ce la façon logique de l'écrire ? Peut-être est-il plus raisonnable de définir le type bool pour cette fonction ? Par exemple : si nous avons trouvé le troisième genou, nous achetons ou vendons à un prix (inférieur ou supérieur à ind).

Et dans ce cas, nous comparons la fonction avec son paramètre n-genou avec le prix à ce genou, et puis quoi ?



Eh bien non, essayez d'expérimenter...... c'est n'importe quoi......
 
Sepulca:


Double ind peut retourner -2, -3 et ainsi de suite et même Pi 3.14159......

Et dans ce cas, on compare la fonction avec ses paramètres à n genoux avec le prix à ce genou, et puis quoi ?


Pourquoi devrions-nous faire ça tout d'un coup ? Double ind renvoie un nombre fractionnaire... et -2, -3 ... sont des entiers. Et si je comprends bien,Double ind est le prix du genou dans le paramètreget_extrem(int n)
 
Sepulca:



Ce site n'est pas destiné au commerce... Il est principalement consacré à la programmation MQL. Si vous avez fait attention, dans de nombreux codes, ils préviennent même "Pas pour le commerce réel".

Et où est le professeur qui fait du commerce comme un professeur ? Et si les administrateurs apprenaient cela, je pense qu'ils ne prendraient pas la peine de maintenir le site...)))

Comme des pois dans un mur).

Ce dont nous avons besoin, c'est d'un exemple d'achat approprié, sur n'importe quelle période choisie au hasard.

Oui ils écrivent pas pour le vrai métier... Alors quoi, et pourquoi ?

Pourquoi ne pas montrer un exemple pour une transaction réelle, sans annoncer la stratégie.

Ou bien il n'y a pas d'exemple approprié en principe.

 

Bon après-midi. Pouvez-vous me dire comment obtenir le paramètre Heiken Ashi(HA) Hi-Lo (amplitude) à partir de l'indicateur correspondant. J'ai essayé de gérer les variables globales, mais j'ai du mal à le faire. Dans le code HA, j'ai intégré l'obtention de la manière suivante

int start()

{

double haOpen, haHigh, haLow, haClose

...

GlobalVariableGet(pip) ;

...(il s'agit d'un code standard avec calcul de l'HA)

alors nous obtenons les paramètres des chandeliers Hi-Lo HA

result2=MathMin(ExtMapBuffer3[pos+1],ExtMapBuffer4[pos+1])

result22=MathMax(ExtMapBuffer3[pos+1],ExtMapBuffer4[pos+1]) ;

result3=MathMin(Low[pos+1],result2) ;

result33=MathMax(High[pos+1],result22) ;

result0=result33-result3 ; / calcul de l'amplitude HA

GlobalVariableSet(pip,result0) ;/assigne la valeur de l'amplitude à globalVariableSet (pip,result0)

pos-- ;

}

//----

retour(0) ;

}

Ensuite, je viens d'insérerGlobalVariableGet(pip) dans la formule de l'EA,mais quelque chose ne va pas du tout, c'est-à-dire que la valeur du pip n'est pas ce qu'elle devrait être. S'il vous plaît, dites-moi ce qui ne va pas. Ou peut-être qu'il est plus facile d'obtenir l'amplitude HA pour le fonctionnement EA.

 
Salutations, tout le monde. Je suis moi-même novice en matière de programmation, alors veuillez résoudre le problème.

Il est nécessaire que plusieurs EAs sur le même compte, ouvrent un nombre limité d'ordres.

Par exemple : 10 EAs mais ne peuvent ouvrir que 5 ordres, mais pas plus d'un par paire de devises.

Cela est mis en œuvre comme suit, mais cela ne fonctionne pas de cette façon.

extern int МаксКолОрдеров   = 5;

//+------------------------------------------------------------------+

int ПодсчетОткрОрдеров() {
  int k=OrdersTotal();
   if (Символ=="0") Символ=Symbol();
    for (int i=МаксКолОрдеров; i<k; i++) {
     if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Символ || Символ=="") {
       if (МагикНомер<0 || OrderMagicNumber()==МагикНомер) {
      if (OrderMagicNumber()<1) return(True);
     }
    }
   }
  }
 return;

}

//+------------------------------------------------------------------+
int start()
  {
   if(ПодсчетОткрОрдеров()==0)ПровТоргУсловий();
   }

 
evgenGX:

1. On m'a parlé plus haut des variables globales, merci. Je suis en train de lire la documentation. Dans votre version, comment cela se passe-t-il ?

2. Je veux que le conseiller expert n'entre pas à nouveau sur le marché après avoir réalisé un profit, jusqu'à la confirmation manuelle de l'autorisation de négociation.


1. le niveau de profit sur chaque barre est surveillé. S'il dépasse le pourcentage spécifié du dépôt, toutes les affaires sont conclues.

2. Voir et éditer cet Expert Advisor, ajouter un filtre sur magik et tout ce dont vous avez besoin...


 

Aidez-moi à compléter le code. J'ai essayé d'écrire un code qui dit :

-si MA50 croise MA200 de bas en haut et ensuite

-si le prix descend à МА50...

-Deux lignes sont tracées sur le graphique, support et résistance (tracées pour les 15 dernières barres) ;

C'est comme si tout fonctionnait, mais je ne peux pas m'assurer que ces lignes sont apparues la première fois, puis sont restées en place, il faut à l'algorithme de négociation(et elles continuent à être dessinées).

Puis-je les lier au temps ou à la barre ?

Voici le code. Que dois-je ajouter ?

#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"


bool  Fact_1 = false;                    // Глобальная перемен для бай.   
bool  Fact_2 = false;                    // Глобальная перемен для бай
bool  Fact_3 = false;                    // Глобальная перемен для бай

double support;
double resist;

 int timeFrame = 5;
 int numBars = 15;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

  ObjectsDeleteAll(); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----


   //---------------------------------------------------------------------------
if (Fact_3==true)                            //Если событие уже..
         
                                              //..было, то выходим
     return(0);
 
//----

  //---- БЛОК ОТКРЫТИЯ  BUY--------------------------------------------------------------
 
 if (iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,2)<iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0)&&
iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,1)>=iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0))//если МА50 пересекает МА200 снизу вверх по M5
Fact_1 = true;       // Произошло событие 1 
//-
if (Fact_1 == true &&  Low[0]<= iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,0))//если цена опустилась до МА50
 Fact_2 = true; // Произошло событие 2 
 if (Fact_2 == true)

{
// Определяем линии поддержки\сопротивления
  support = 10000;
  resist = 0;
 
  for(int u = 1;u<=numBars;u++)
  {
   if(support>iLow(Symbol(),timeFrame,u))
     support = iLow(Symbol(),timeFrame,u);
   if(resist<iHigh(Symbol(),timeFrame,u))
     resist = iHigh(Symbol(),timeFrame,u);
  }  
   ObjectSet("lineSupport",OBJPROP_PRICE1,support);
  ObjectSet("lineResist",OBJPROP_PRICE1,resist);
 
 }


 //----
  {
    ObjectCreate("lineSupport",OBJ_HLINE,0,0,0);
    ObjectSet("lineSupport",OBJPROP_COLOR,Blue);
   
    ObjectCreate("lineResist",OBJ_HLINE,0,0,0);
    ObjectSet("lineResist",OBJPROP_COLOR,Red);
    }
//----

//что сюда добавить что бы линии появившись, оставались на месте?




//----
   return(0);
  }

 

Que va-t-il se passer, que peut-il se passer si

acheter, vendre sans spécifier de marge pour le slippage, généralement +- 2 points.

La réponse est une requote.

Et si aucune valeur de slippage n'est fixée, l'achat est-il garanti ?

Raison: