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

 
rasvet >>:

вот скрипт. присоединяешь к любому графику-он закрывает все открытые ордера.

Pour fermer les ordres, j'utilise l'Expert Advisor JimsCloseOrders qui peut fermer n'importe quel ordre à volonté - que ce soit les ordres à profit ou à perte, ou tous les ordres, bien que je doive le corriger un peu - voici deux lignes de code

extern bool CloseOpenOrders = true ;

extern bool CloseOrdersWithPlusProfit = false ;

false et true doivent être interchangés, sinon, si ce paramètre est fait lors de l'installation sur un graphique, il commence en quelque sorte à fermer tous les ordres (probablement en raison de la séquence des commandes du programme, mais je ne suis pas sûr, je ne suis pas qualifié).

J'ai unequestion à poser à un professionnel.

Je veux exécuter, par exemple, l'Expert Advisor que j'ai mentionné ci-dessus dès que possible. Cependant, tous les Expert Advisors et les scripts commencent à travailler dès que le premier tick a été reçu sur le graphique. Si la paire de devises sélectionnée pour l'installation du conseiller expert s'avère ne pas être très "active" à ce moment-là, les pertes peuvent être importantes.

Est-il possible de créer un graphique "commun" pour toutes les devises ou d'utiliser les ticks entrants de n'importe quelle autre paire ? Les ticks sont reçus dans le terminal de façon presque continue. Où peuvent-ils être interceptés ?

 
hedger писал(а) >>

J'ai une question pour les pros.

Je veux exécuter, par exemple, le conseiller expert que j'ai mentionné ci-dessus dès que possible, mais tous les conseillers experts et les scripts commencent à fonctionner dès que le premier tick est reçu sur le graphique. Si la paire de devises sélectionnée pour l'installation du conseiller expert s'avère ne pas être très "active" à ce moment-là, les pertes peuvent être importantes.

Est-il possible de créer un graphique "commun" pour toutes les devises, ou d'utiliser les ticks entrants de toute autre paire ? Les tiques sont reçues dans le terminal de façon presque continue. Où puis-je les intercepter ?


Il suffit de boucler le conseiller expert. Dans ce cas, il ne fonctionnera pas par ticks, mais avec un certain délai (défini par l'utilisateur). Pour les options multidevises (IMHO), la meilleure solution.

 
Vinin >>:


Достаточно зациклить эксперта. Тогда он будет работать не по тикам, а с определенной временной задержкой (задаваемой пользователем). Для мультивалютных вариантов (ИМХО) лучшее решение.

De toute évidence, ce n'est pas si compliqué, mais malheureusement, "nous ne sommes pas encore passés par là" et je ne peux pas encore le faire. Mais il serait agréable de voir comment une EA se comporterait avec un tel raffinement. Merci.

 
Il existe un indicateur utilisant cette formule (V - volume, high-low - bougies maxi et mini).
V
___________ =
haut-bas

Sinon, quelqu'un peut-il dessiner un histogramme dans une fenêtre séparée ?
 
Il existe un indicateur utilisant cette formule (V - volume, high-low - bougies maxi et mini).
V
___________ =
haut-bas

Sinon, quelqu'un peut-il dessiner un histogramme dans une fenêtre séparée ?
 
hedger >>:

Требуется, как можно быстрее запустить, например, советника, о котором шла речь выше, но все советники и скрипты начинают действовать с момента поступления первого тика на график. Если же выбранная для установки советника валютная пара оказалась не очень "активной" в этот момент, то потери могут быть значительными.

Существует ли возможность создания "общего" графика для всех валют, или воспользоваться поступающим тикам любой другой пары? Тики же в терминал поступают почти непрерывно. Где их можно перехватить?

Vous pouvez faire un démarrage à chaud dans

init(){

while (true) {

/Haut de gamme.

}

 
//+------------------------------------------------------------------+
//|                                 BW Market Facilitation Index.mq4 |
//|                                           объединенный с Volumes |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//|                             Доработка AlexSilver http://viac.ru/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
//---- indicator settings
#property  indicator_separate_window
#property indicator_minimum 0
#property indicator_buffers 5
#property indicator_color1 Black
#property indicator_color2 Green // Зеленая свеча
#property indicator_color3 Blue // Угасающая
#property indicator_color4 Gold // Фальшивая
#property indicator_color5 Red // приседающая 
//---- indicator buffers
extern int Period_MFI =   14;
double dMFIBuffer[];
double dMFIUpVUpBuffer[]; // Зеленая 
double dMFIDownVDownBuffer[]; // Угасающая
double dMFIUpVDownBuffer[]; // Фальшивая
double dMFIDownVUpBuffer[]; // приседающая 

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
  
//---- indicator buffers mapping
   SetIndexBuffer(0,dMFIBuffer);       
   SetIndexBuffer(1,dMFIUpVUpBuffer);
   SetIndexBuffer(2,dMFIDownVDownBuffer);
   SetIndexBuffer(3,dMFIUpVDownBuffer);
   SetIndexBuffer(4,dMFIDownVUpBuffer);
//---- drawing settings
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexStyle(3,DRAW_HISTOGRAM);
   SetIndexStyle(4,DRAW_HISTOGRAM);   

//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("BW MFI + Volumes");
   SetIndexLabel(0,"BW MFI");      
   SetIndexLabel(1,"Зелёный");
   SetIndexLabel(2,"Угасающий");
   SetIndexLabel(3,"Фальшивый");
   SetIndexLabel(4,"Приседающий");

//---- sets drawing line empty value
   SetIndexEmptyValue(1, 0.0);
   SetIndexEmptyValue(2, 0.0);       
   SetIndexEmptyValue(3, 0.0);
   SetIndexEmptyValue(4, 0.0);      
   
   IndicatorDigits(0);   
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| BW Market Facilitation Index                                     |
//+------------------------------------------------------------------+
int start()
  {
   int    i,nLimit,nCountedBars;
//---- bars count that does not changed after last indicator launch.
   nCountedBars=IndicatorCounted();
//---- last counted bar will be recounted
   if(nCountedBars>0) nCountedBars--;
   nLimit=Bars-nCountedBars;
//---- Market Facilitation Index calculation
   for(i=0; i<nLimit; i++)
     if(i==0 && Volume[i]<Period()*1.5)
        dMFIBuffer[i]=0.0;
     else   
        dMFIBuffer[i]=(High[i]-Low[i])/(Volume[i]*Point);
//---- dispatch values between 4 buffers   
   for(i=nLimit-1; i>=0; i--)
    {
     if((i!=nLimit-1&&bCompareDouble(dMFIBuffer[i],dMFIBuffer[i+1])&&dMFIBuffer[i]>dMFIBuffer[i+2]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1))||
        (i!=nLimit-1&&dMFIBuffer[i]>dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+2])/iMFI(NULL,0,Period_MFI,i+2)||
        (i<nLimit-2&&dMFIBuffer[i]>dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+3]/iMFI(NULL,0,Period_MFI,i+3))||        
        (i!=nLimit-1&&bCompareDouble(dMFIBuffer[i],dMFIBuffer[i+1])&&dMFIBuffer[i]>dMFIBuffer[i+2]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2))||
        (dMFIBuffer[i]>dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1))) 
       {
        dMFIUpVUpBuffer[i]=Volume[i]/iMFI(NULL,0,Period_MFI,i);
        dMFIDownVDownBuffer[i]=0.0;
        dMFIUpVDownBuffer[i]=0.0;
        dMFIDownVUpBuffer[i]=0.0;
        continue;
       }
     if((i!=nLimit-1&&bCompareDouble(dMFIBuffer[i],dMFIBuffer[i+1])&&dMFIBuffer[i]<dMFIBuffer[i+2]&&Volume[i]<Volume[i+1])||
        (i!=nLimit-1&&dMFIBuffer[i]<dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)<Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2))||
        (i<nLimit-2&&dMFIBuffer[i]<dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2)&&Volume[i]<Volume[i+3]/iMFI(NULL,0,Period_MFI,i+3))||        
        (i!=nLimit-1&&bCompareDouble(dMFIBuffer[i],dMFIBuffer[i+1])&&dMFIBuffer[i]<dMFIBuffer[i+2]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)<Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2))||        
        (dMFIBuffer[i]<dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)<Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1))) 
       {
        dMFIUpVUpBuffer[i]=0.0;
        dMFIDownVDownBuffer[i]=Volume[i]/iMFI(NULL,0,Period_MFI,i);
        dMFIUpVDownBuffer[i]=0.0;
        dMFIDownVUpBuffer[i]=0.0;
        continue;         
       }
     if((i!=nLimit-1&&bCompareDouble(dMFIBuffer[i],dMFIBuffer[i+1])&&dMFIBuffer[i]>dMFIBuffer[i+2]&&Volume[i]/iMFI(NULL,0,Period_MFI,i+1)<Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1))||
        (i!=nLimit-1&&dMFIBuffer[i]>dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)<Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2))||
        (i<nLimit-2&&dMFIBuffer[i]>dMFIBuffer[i+1]&&Volume[i]==Volume[i+1]&&Volume[i]==Volume[i+2]&&Volume[i]<Volume[i+3])||        
        (i!=nLimit-1&&bCompareDouble(dMFIBuffer[i],dMFIBuffer[i+1])&&dMFIBuffer[i]>dMFIBuffer[i+2]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)<Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2))||        
        (dMFIBuffer[i]>dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)<Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1))) 
       {
        dMFIUpVUpBuffer[i]=0.0;
        dMFIDownVDownBuffer[i]=0.0;
        dMFIUpVDownBuffer[i]=Volume[i]/iMFI(NULL,0,Period_MFI,i);
        dMFIDownVUpBuffer[i]=0.0;
        continue;         
       }
     if((i!=nLimit-1&&bCompareDouble(dMFIBuffer[i],dMFIBuffer[i+1])&&dMFIBuffer[i]<dMFIBuffer[i+2]&&Volume[i]>Volume[i+1])||
        (i!=nLimit-1&&dMFIBuffer[i]<dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2))||
        (i<nLimit-2&&dMFIBuffer[i]<dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i+1)==Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2)/iMFI(NULL,0,Period_MFI,i+2)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+3]/iMFI(NULL,0,Period_MFI,i+3))||        
        (i!=nLimit-1&&bCompareDouble(dMFIBuffer[i],dMFIBuffer[i+1])&&dMFIBuffer[i]<dMFIBuffer[i+2]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2))||        
        (dMFIBuffer[i]<dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1))) 
       {
        dMFIUpVUpBuffer[i]=0.0;
        dMFIDownVDownBuffer[i]=0.0;
        dMFIUpVDownBuffer[i]=0.0;
        dMFIDownVUpBuffer[i]=Volume[i]/iMFI(NULL,0,Period_MFI,i);
        continue;         
       }        
    }                     
//---- done
   return(0);
  }
//+------------------------------------------------------------------+
 bool bCompareDouble (double dNumber1, double dNumber2)
    {
     bool bCompare=NormalizeDouble(dNumber1 - dNumber2,8) == 0;
     return(bCompare);
    }
 

 
J'ai créé un script de tutoriel pour ouvrir une position -

int start()
{
int ticket ;
si(iRSI(NULL,0,5,PRICE_CLOSE,0)<10)
{
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,Bid-10*Point,Ask+10*Point) ;
si(ticket<0)
{
Print("OrderSend a échoué avec l'erreur #",GetLastError()) ;
retour(0) ;
}
}
retour(0) ;

Je l'attache à une paire de devises - aucun effet. Y en aura-t-il un ou y a-t-il un problème ? Veuillez expliquer.
 

Alors quelle erreur dit-elle ?

 
OrderSend(Symbol(),OP_BUY,1,Ask,0/*au lieu de zéro, mettez tout slippage autorisé*/,Bid-10*Point,Ask+10*Point) ;
Raison: