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

 
torah01:

acheter


int start()

{
OrderSend(Symbol(),OP_BUYSTOP,0.01,Ask+20*Point,3,Bid- 50*Point,Bid+50*Point);

retour(0) ;
}

Aidez-nous s'il vous plaît...

Changer le + en -. Et spécifiez les stops et les prises dont vous avez besoin, maintenant vous avez stop=70 + spread, prise=+30 moins spread
 
TheXpert:
S'il vous plaît, ne répandez pas l'hérésie en public. Va t'éclater ailleurs, il y a de quoi faire...

Merci, je venais justement vous consulter.
 
NickXXX:

1. Eh bien ici, le double n'a été appliqué que pour ajouter les minutes et les heures. afin que les points de référence puissent être désignés comme HH.MM (par exemple 16. 23).

2. J'ai regardé les dernières pages, il y a bien sûr la question de la date, mais pas exactement la même. Ils affichent simplement au format HH.MM l'heure de la dernière commande.



Pas une bonne recherche. Page 190, heure du message 18.09.2011 23:03
 
nemo811:

Bonjour.

Veuillez m'aider à corriger le code.

Les deux lignes ci-dessous sont glitchy.

Merci d'avance.

Le programme lui-même :


si(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)

MODE_HISTORY serait plus logique

 
tara:

< 0,6, ou quelque chose comme ça. Le reste de la division est toujours inférieur à un :)

Pourquoi ?) Le reste de 12 divisé par 10 = 2.
NickXXX:

Et s'il y a beaucoup de variables comme ça ?

Est-ce que c'est dommage, ou est-ce que ça va marcher ?

Et une autre petite question, si disons que je fixe un intervalle (par exemple 16.00-16.03) pour qu'une condition soit exécutée. Comment faire en sorte qu'il ne l'exécute qu'une seule fois, malgré l'arrivée de nouveaux ticks ???

Ça marche. Et pour ne le faire qu'une seule fois, entrez une variable de service supplémentaire, quelque chose comme ceci

bool flag=true;

int start()
{
  if (ваше уловие по времени && flag)
  {
    тра-та-та
    flag=false;
  }
}
 
Figar0:

Pourquoi ?) Le reste de 12 divisé par 10 = 2.

Ça va marcher. Et pour le faire une fois, il faut entrer une variable de service supplémentaire, comme ceci :


Oui, il y a un petit problème :)
 
tara:


si(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)

MODE_HISTORY serait plus logique.

Je ne pourrais pas être plus d'accord. La nuit, mon cerveau ralentit.

Cependant, même avec cette correction, j'ai remarqué que le problème ci-dessus (confusion entre variable magique et nombre) dans le script se produit lorsque vous redéclarez la variable int MAGIC ; (cette même magie est verrouillée pour une raison quelconque). Si vous supprimez int MAGIC ; (extern int MAGIC = 1 ; reste), tout fonctionne comme sur des roulettes.

Une question logique : pourquoi en ai-je besoin ? Vous pouvez supprimer int MAGIC ; et vivre votre vie en paix. MAIS.

J'ai besoin de mettre ce code dans une bibliothèque. Mais si je ne définis pas int MAGIC ; il y aura une erreur.

C'est ce que je pense que je devrais faire. Tout cela fonctionnera-t-il dans mon conseiller expert ? Pourquoi cet int MAGIC ; ?

Le script ci-dessous :

extern int MAGIC = 1;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
int OrdTicket=OrdTicket_b();
  Alert (OrdTicket);

   
//----
   return(0);
  }
//+------------------------------------------------------------------+
int OrdTicket_b()
 {
  string SMB=Symbol();
  int OrdTicket;
  int i;
  for(i=0;i<OrdersTotal();i++)
   {
    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
     {
      if(OrderSymbol()==SMB)
       {
        if(OrderMagicNumber()==MAGIC || OrderMagicNumber()==777)
         {
          if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            OrdTicket=OrderTicket();
           }  
         }  
       }          
     }
   }
  return(OrdTicket);
 
Dans quel dossier sont enregistrés les paramètres du serveur de messagerie dans le terminal mt-4 ?
 

Camarades, à l'aide s'il vous plaît... J'ai écrit un code simple, mais lors de la compilation il dit que les parenthèses sont déséquilibrées, mais je les ai déjà comptées 300 fois - tout est en place

L'idée est très simple - si le MACD a été supérieur (ou inférieur) à 0 pendant 7 minutes ou moins, la position est ouverte.

//+------------------------------------------------------------------+
//| MACD ^^^.mq4 | | | MACD ^^^.
//| Droits d'auteur © 2011, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp.
#lien de propriété "http://www.metaquotes.net"

extern int TP = 100 ;
extern int TS = 100 ;
double externe lots = 0.1 ;
int slip = 3 ;
int Magie = 1 ;

//+------------------------------------------------------------------+
//| fonction d'initialisation de l'expert |
//+------------------------------------------------------------------+
int init()
{
//----

//----
retour(0) ;
}
//+------------------------------------------------------------------+
//| fonction de désinitialisation des experts |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
retour(0) ;
}
//+------------------------------------------------------------------+
//| fonction de démarrage de l'expert |
//+------------------------------------------------------------------+
int start()
{
//----

int total,ticket ; //déclaré total et ticket
int signal = signal_MACD() ; // signal_MACD passe la valeur au signal
AnalyzeSignal(signal) ; //analyse le signal
int MACD[8] = {0,1,2,3,4,5,6,7} ; //créer un tableau MACD unidimensionnel
MACD[0] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,7)
MACD[1] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,6) ;
MACD[2] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,5) ;
MACD[3] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,4) ;
MACD[4] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,3) ;
MACD[5] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,2) ;
MACD[6] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,1) ;
MACD[7] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,0) ;

total = OrdersTotal() ; //le total compte les commandes

int signal_MACD() //calculer le signal MACD
{
if(total<1) //si les commandes sont inférieures à 1, considérer les conditions
{
si(MACD[0]<0)
{
si(MACD[1]>0)
{
si(MACD[2]>0)
{
{si(MACD[3]>0)
{
{si(MACD[4]>0)
{
{si(MACD[5]>0)
{
{Si(MACD[6]>0)
{
{Si(MACD[7]<0)
{
retour(-100) ;
}
}
}
}
}
}
}
}
si(MACD[0]>0)
{
si(MACD[1]<0)
{
si(MACD[2]<0)
{
{si(MACD[3]<0)
{
{si(MACD[4]<0)
{
{Si(MACD[5]<0)
{
{Si(MACD[6]<0)
{
si(MACD[7]>0)
{
retour(100) ;
}
}
}
}
}
}
}
}
}
}

void AnalyzeSignal(int signal)
{
si(signal == 100)
{
ticket = OrderSend(Symbol(),OP_BUY,Ask,slip,Bid-TS*Point,Bid+TP*Point, "buy",Magic,0,Green) ;
si(ticket>0)
{
CommandeSelect(ticket,SELECT_BY_TICKET ;)
Print("ouvert à l'achat au prix :" OrderOpenPrice())
}
sinon
{
Print("l'ouverture a échoué en raison de :" GetLastError()) ;
retour(0) ;
}
}
si(signal == -100)
{
ticket = OrderSend(Symbol(),OP_SELL,Bid,slip,Ask+TS*Point,Ask-TP*Point, "Sell",Magic,0,Green) ;
si(ticket>0)
{
CommandeSelect(ticket,SELECT_BY_TICKET) ;
Print("ouvert à la vente au prix :" OrderOpenPrice()) ;
}
sinon
{
Print("l'ouverture a échoué en raison de :" GetLastError()) ;
retour(0) ;
}
}
}

//----
retour(0) ;
}
//+------------------------------------------------------------------+

 
p.s. comment dessiner un scénario aussi beau que le vôtre ?
Raison: