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

 
Run >> :

Potete dirmi come disegnare un quadrato o un rettangolo senza disegnarlo come sfondo, e disegnarlo come cornice?

Grazie

Nell'elenco delle proprietà dell'oggetto, impostare la proprietà del rettangolo da disegnare come sfondo su false:

ObjectSet( nome stringa, OBJPROP_BACK, false) ;

Ma l'oggetto sarà disegnato prima del grafico.

 

modifica | cancella

Mi scuso, forse per una domanda irragionevole...


Sono un po' lento con i buffer degli indicatori.... Oppure, non ho capito bene l'indicatore stesso...


Potreste consigliarmi, se possibile, come fare riferimento all'indicatore BrainTrend2StopN?


Voglio controllare se l'apertura della barra corrente è superiore/inferiore ai valori dell'indicatore.

Accedo all'indicatore dall'EA con la stringa:


iCustom(NULL,0, "BrainTrend2StopN",CountBars, 1,0)

o

iCustom(NULL,0, "BrainTrend2StopN",CountBars, 0,0)

per zero e il primo buffer rispettivamente....

Ma l'Expert Advisor non reagisce a questa stringa...


Molte grazie in anticipo.

File:
 
Morzh09 >> :

iCustom(NULL,0, "BrainTrend2StopN",CountBars,1,0)

o

iCustom(NULL,0, "BrainTrend2StopN",CountBars,0,0)

per zero e il primo buffer rispettivamente....

L'Expert Advisor non reagisce a questa stringa...

Notate che avete 2 parametri esterni nel vostro indicatore:

extern int Simbol =119;

extern intBars=500;

dovete scriverli tutti nell'iCustom:


iCustom(NULL,0,"BrainTrend2StopN", Simbol, CountBars, 0,0);

iCustom(NULL,0,"BrainTrend2StopN", Simbol, CountBars, 1,0);
 

alsu


Grazie mille. Ho corretto il codice, ora passo entrambi i parametri, ma purtroppo, quando chiamo Alert con i valori del buffer dell'indicatore, ottengo solo zeri....


Se hai la possibilità, puoi dirmi come affrontarlo.

File:
bt1_1.mq4  10 kb
 

Prova

Alert("Buy signal",
      "  ",
      DoubleToStr(iCustom(NULL,0,"BrainTrend1StopN", Simbol, CountBars, EnableAlerts, SignalID,1,0),8),
      "   ", 
      DoubleToStr(iCustom(NULL,0,"BrainTrend1StopN", Simbol, CountBars, EnableAlerts, SignalID,0,0),8)
      );
 
Per favore, aiutami, signor programmatore. Ho lottato con questo per una settimana, ma niente funziona, perché non ho idea di come programmare. Puoi scrivere un indicatore per attraversare due HMA con le frecce?
File:
hma.mq4  4 kb
 

per qualche ragione non capisce cos'è uno spostamento e non vuole mettere le frecce

#proprietà indicator_chart_window
//#proprietà indicator_chart_window
#proprietà indicator_buffers 4
#property indicator_color1 Magenta // 12
#property indicator_color2 Blue // 26
#property indicator_color3 MediumBlue
#property indicator_color4 Tomato
#proprietà indicator_width1 2
#proprietà indicator_width2 2
#proprietà indicator_width3 1
#proprietà indicator_width4 1
//---- parametri dell'indicatore
extern int FastHMA = 12;
extern int SlowHMA = 26;
extern inttern ExtmethodFastHMA=0; // MODE_SMA
extern int int ExtmethodSlowHMA=0; // MODE_SMA
extern int ExtpriceFastHMA=0; // PRICE_CLOSE
extern int ExtpriceSlowHMA=0; // PRICE_CLOSE
extern int ExtsdvigFastHMA=0;
extern int ExtsdvigSlowHMA=0;
extern bool EnableAlert=true;
extern string ExtSoundFileName = "";
//---- buffer degli indicatori
doppio PreHMA1[];
doppio PreHMA2[];
doppio CrossUp[];
doppio CrossDown[];
static int bBuy = 0;
static int bSell = 0;

//+------------------------------------------------------------------+
int pF, pS;

//+------------------------------------------------------------------+
//| funzione di inizializzazione dell'indicatore personalizzato
//+------------------------------------------------------------------+
int init()
{

//Medio
SetIndexStyle( 0, DRAW_LINE );
SetIndexStyle( 1, DRAW_LINE );
// Segnali
SetIndexStyle( 2, DRAW_ARROW, EMPTY );
SetIndexArrow( 2, 233 );
SetIndexStyle( 3, DRAW_ARROW, EMPTY );
SetIndexArrow( 3, 234 );

//---- 5 buffer di segnalazione mappatura
SetIndexBuffer(0,PreHMA1);
SetIndexBuffer(1,PreHMA2);
SetIndexBuffer( 2,CrossUp );
SetIndexBuffer( 3,CrossDown );

IndicatoreDigitali( MarketInfo( Symbol(), MODE_DIGITS ) );

//---- nome per DataWindow e l'etichetta della sottofinestra dell'indicatore
IndicatoreNomeCorto("HMA2("+FastHMA+", "+SlowHMA+")");
SetIndexLabel( 0, "HMA("+FastHMA + "," +SlowHMA +")" + FastHMA );
SetIndexLabel( 1, "HMA(" + FastHMA + "," + SlowHMA+")" + SlowHMA );
SetIndexLabel( 2, "Buy" );
SetIndexLabel( 3, "Sell" );

pF = MathSqrt(FastHMA);
pS = MathSqrt(SlowHMA);

//---- inizializzazione fatta
ritorno(0);
}


//+------------------------------------------------------------------+
doppio WMA(int x, int p) {
return(iMA(NULL, 0, p, 0, MODE_SMA, PRICE_CLOSE, x+sdvig))
}


//+------------------------------------------------------------------+
//| Media mobile dell'oscillatore
//+------------------------------------------------------------------+
int start()
{

bool bConditionUp;
{ bConditionDown;
doppia gamma;
doppio AvgRange;

limite int;
contatore int;
int counted_bars=IndicatorCounted();

//---- ultima barra contata sarà ricontata
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;

//---- preparare l'HMA
for(int i=0; i<limit; i++) {
PreHMA1[i] = 2*WMA(i, FastHMA/2) - WMA(i, FastHMA);
PreHMA2[i] = 2*WMA(i, SlowHMA/2) - WMA(i, SlowHMA);

AvgRange = 0;
bConditionUp = 0;
bConditionDown = 0;
for ( contatore = i; contatore <= i + 9; contatore++ ) {
AvgRange += MathAbs( High[ counter ] - Low[ counter ] );
}
Range = AvgRange/10;
bConditionUp = (PreHMA1[i+1] >= PreHMA2[i+1] ) &&
(PreHMA1[i+2] <= PreHMA2[i+2] ) &&
(PreHMA1[i] >= PreHMA2[i] ); // incrocia verso l'alto
bConditionDown = (PreHMA1[i+1] <= PreHMA2[i+1] ) &&
(PreHMA1[i+2] >= PreHMA2[i+2] ) &&
(PreHMA1[i] <= PreHMA2[i] ); // croce verso il basso
if ( bConditionUp) {//
CrossUp[i+1] = PreHMA2[i+1]-Range * 0,75;
CrossDown[i+1] = EMPTY_VALUE;
bConditionDown = false;
}

if ( bConditionDown) {//
CrossDown[i+1] = PreHMA2[i+1]+Range * 0,75;
CrossUp[i+1] = EMPTY_VALUE;
bConditionUp = false;
}

if (!bConditionUp && !bConditionDown) {
CrossDown[i+1] = EMPTY_VALUE;
CrossUp[i+1] = EMPTY_VALUE;
}

if (bConditionUp && !bBuy==1 && i==0 && EnableAlert){
bBuy = 1; // imposta il flag di acquisto
bSell = 0; // resetta la bandiera per vendere
Alert (Symbol()," ",Period(), "M Achtung BUY "); // beep
if ( ExtSoundFileName != "" ) PlaySound( ExtSoundFileName );
}
if (bConditionDown && !bSell==1 && i==0 && EnableAlert){
bBuy = 0; // imposta il flag di acquisto
bSell = 1; // azzera il flag di vendita
Alert (Symbol()," ",Period(), "M Achtung SELL "); // beep
if ( ExtSoundFileName != "" ) PlaySound( ExtSoundFileName );
}
//Commento ("Buy-"+bBuy+"\nSell-"+bSell);
} // per

//return ("0 );
}
//per comprare
// if (bBuy==0 && i < 1 && EnableAlert) {
///Alert (Symbol()," ",Period(), "M Achtung BUY "); // beep
// Alert ("Buy,",bBuy,",i,",EnableAlert);
// if ( ExtSoundFileName != "" ) PlaySound( ExtSoundFileName );
// }

// if (bSell==0 && i < 1 && EnableAlert) {
///Alert (Symbol()," ",Period(), "M Achtung SELL ");
// Alert ("Sell-",bSell," ",i," ",EnableAlert);
// if ( ExtSoundFileName != "" ) PlaySound( ExtSoundFileName );
// }

Qualcuno potrebbe dirmi qual è il mio errore?

 
kurt >> :


Qualcuno può dirmi qual è il mio errore?

Per prima cosa, mettete il codice in una forma leggibile, usando le schede che indicano il livello di annidamento e il pulsante SRC

 

Salve.


Per favore, aiutatemi a capire la funzione di informazione del tutorial https://book.mql4.com/ru/build/info che non ho capito per una settimana, perché non appaiono segnali da esso? Ho preso l'Expert Advisor esattamente dal tutorial, le informazioni sono incluse all'interno.


Devo aggiungere un indicatore al mio grafico? Cosa dovrei usare per riempirlo? L'esempio ha un indicatore vuoto e voglio riempirlo con quello che voglio... Come fargli visualizzare i segnali della funzione Inform()?

 

Sembra che una settimana per noi neofiti sia il termine ultimo dopo il quale si passa a voi pros))))


Concludendo dai post recenti...

Motivazione: