[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 491

 
rasvet >>:

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

Per chiudere gli ordini, uso l'Expert Advisor JimsCloseOrders che può chiudere qualsiasi ordine a piacimento - sia quelli in profitto o in perdita, sia tutti, anche se devo correggerlo un po' - ecco due righe di codice

extern bool CloseOpenOrders = true;

extern bool CloseOrdersWithPlusProfit = false;

false e true dovrebbero essere scambiati, altrimenti, se questa impostazione viene fatta quando si installa su un grafico, in qualche modo inizia a chiudere tutti gli ordini (probabilmente a causa della sequenza di comandi del programma, ma non sono sicuro, non sono qualificato).

Ho una domanda per un professionista.

Voglio eseguire, per esempio, l'Expert Advisor che ho menzionato sopra il più presto possibile. Tuttavia, tutti gli Expert Advisor e gli script iniziano a lavorare non appena il primo tick viene ricevuto sul grafico. Se la coppia di valute selezionata per l'installazione dell'Expert Advisor si è rivelata non molto "attiva" in quel momento, le perdite possono essere significative.

C'è la possibilità di creare un grafico "comune" per tutte le valute o di utilizzare i tick in entrata di qualsiasi altra coppia? I tick vengono ricevuti nel terminale quasi continuamente. Dove possono essere intercettati?

 
hedger писал(а) >>

Ho una domanda per i professionisti.

Voglio eseguire, per esempio, l'Expert Advisor che ho menzionato sopra il più presto possibile, ma tutti gli Expert Advisor e gli script iniziano a lavorare non appena il primo tick viene ricevuto sul grafico. Se la coppia di valute selezionata per l'installazione dell'Expert Advisor si è rivelata non molto "attiva" in quel momento, le perdite possono essere significative.

C'è la possibilità di creare un grafico "comune" per tutte le valute, o di utilizzare i tick in entrata di qualsiasi altra coppia? I ticchettii vengono ricevuti nel terminale quasi continuamente. Dove posso intercettarli?


È sufficiente mettere in loop l'Expert Advisor. Allora non funzionerà a tick, ma con un certo ritardo (impostato dall'utente). Per le opzioni multivaluta (IMHO) la soluzione migliore.

 
Vinin >>:


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

Ovviamente, non è così complicato, ma purtroppo "non ci siamo passati" e non posso ancora farlo. Ma sarebbe bello vedere come si comporterebbe un EA con un tale perfezionamento. Grazie.

 
C'è un indicatore che usa questa formula (V - volume, high-low - candele max. e min.)
V
___________ =
alto-basso

Se no, qualcuno può abbozzare un istogramma in una finestra separata?
 
C'è un indicatore che usa questa formula (V - volume, high-low - candele max. e min.)
V
___________ =
alto-basso

Se no, qualcuno può abbozzare un istogramma in una finestra separata?
 
hedger >>:

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

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

Si può fare un avvio a caldo in

init(){

mentre (vero) {

/L'eterno alto.

}

 
//+------------------------------------------------------------------+
//|                                 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);
    }
 

 
In qualche modo ho fatto uno script tutorial per aprire una posizione -

int start()
{
biglietto int;
se(iRSI(NULL,0,5,PRICE_CLOSE,0)<10)
{
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,Bid-10*Point,Ask+10*Point);
se(biglietto<0)
{
Print("OrderSend failed with error #",GetLastError());
ritorno(0);
}
}
ritorno(0);

Lo collego a una coppia di valute - nessun effetto. Ce ne sarà uno o c'è qualcosa che non va? Si prega di spiegare.
 

Allora, che errore c'è scritto?

 
OrderSend(Symbol(),OP_BUY,1,Ask,0/*invece di zero, metti qualsiasi slittamento consentito*/,Bid-10*Point,Ask+10*Point);