Chiedete! - pagina 82

 

Codersguru aiuta per favore

Codersguru

sto cercando di scrivere un allarme sonoro per l'indicatore bullspower quando attraversa la linea dello zero. non ho esperienza con MQL ma ho messo insieme un po' di codice da diversi altri indicatori. quando compilo il codice non c'è nessun errore. anche se l'allarme dell'indicatore non funziona potresti per favore aiutare a correggerlo o magari mettere un nuovo codice per questo allarme sonoro quando Bullbears attraversa la linea dello zero?

Grazie mille in anticipo

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

//| |

//| |

//| |

//| |

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

#proprietà copyright "forex-tsd"

#property link "https://www.forex-tsd.com"

#proprietà indicator_separate_window

#proprietà indicatore_buffer 2

#proprietà indicator_color1 Lime

#proprietà indicator_color2 Crimson

#proprietà indicator_level1 0

doppio ExtMapBuffer1[]

double ExtMapBuffer2[]

double valbull[]

double valbear[];

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

//|Funzione di inizializzazione dell'indicatore personalizzata |

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

int init()

{

IndicatorBuffer(3);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexDrawBegin(0,2);

SetIndexLabel(0, "ExtMapBuffer1");

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 4);

SetIndexDrawBegin(1,2);

SetIndexLabel(1, "ExtMapBuffer2");

//---- indicatori

//----

return(0);

}

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

//| Funzione di deinizializzazione dell'indicatore Custor

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

int deinit()

{

//---- TODO: aggiungete il vostro codice qui

//----

return(0);

}

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

//|Funzione di iterazione dell'indicatore personalizzata |

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

int start()

{

int shift,counted_bars=IndicatorCounted();

doppio valbear[], valbull[];

//---- controllare eventuali errori

if(counted_bars<0) return(-1);

//---- l'ultima barra contata sarà ricontata

if(counted_bars>0) counted_bars--;

shift=Barre-1;

mentre(shift>=0)

{

valbull[shift]=iBullsPower(NULL, 0, 13,PRICE_CLOSE,0);

valbear[shift]=iBearsPower(NULL, 0, 13,PRICE_CLOSE,0);

se (valbull[shift]>0)

{

ExtMapBuffer1[shift]=valbull[shift];

ExtMapBuffer2[shift]=0;

}

altrimenti

{

ExtMapBuffer2[shift]=valbull[shift];

ExtMapBuffer1[shift]=0;

}

shift--;//

}

//---- modulo di avviso

#define SIGNAL_BAR 1

//---- Variabili statiche dove l'ora dell'ultima barra

//---- e l'ultima direzione dell'allarme sono memorizzati

static int PrevSignal = 0, PrevTime = 0;

//---- Se la barra selezionata per essere analizzata non è una barra zero,

// non ha senso controllare l'allarme

//---- più volte. Se nessuna nuova barra inizia a formarsi, abbandonate.

if(SIGNAL_BAR > 0 && Time[0] <= PrevTime )

return(0);

//---- Segna che questa barra è stata controllata

PrevTime = Time[0];

if(PrevSignal <= 0)

{

se(valbull[SIGNAL_BAR] > 0 )

{

PrevSignal = 1;

Alert("BullChannell_positiv (", Symbol(), ", ", Period(), ") - COMPRA!!!");

}

}

if(PrevSignal >= 0)

{

se(valbull[SIGNAL_BAR] < 0 )

{

PrevSignal = -1;

Alert("BearChannell_negativ (", Symbol(), ", ", Period(), ") - VENDERE!!!");

}

}

//---- fine modulo di avviso

//----

return(0);

}

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

 

Come usare la funzione per distinguere tra ordini aperti e ordini in sospeso?

Come utilizzare la funzione per distinguere tra ordini aperti e ordini in sospeso?

Grazie.

 
vntb:
Come utilizzare la funzione per differenziare gli ordini aperti da quelli in attesa? Grazie.

Controllare l'OrderType() :

OrderType() == OP_BUY //Ordine di acquisto (aperto)

OrderType() == OP_SELL //Ordine di vendita (aperto)

OrderType() == OP_BUYLIMIT //Ordine di acquisto limite (in sospeso)

OrderType() == OP_SELLLIMIT //Ordine limite di vendita (in attesa)

OrderType() == OP_BUYSTOP //Compra stop Ordine (in attesa)

OrderType() == OP_SELLSTOP //Vendere stop Ordine (in attesa)

 

iMAOnArray in EA

Ciao gente,

Sto cercando di fare un EMA basato su incroci di medie mobili su indicatori (ad esempio, CCI, Forza, RSI). Tuttavia, non riesco a capire come dichiarare un array ed eseguire la funzione iMAOnArray per creare delle variabili.

Per esempio, nel codice qui sotto voglio mettere i dati RSI per il grafico in un buffer e poi utilizzare i dati per produrre una media mobile con la quale innescare i trade. Cosa sto facendo di sbagliato?

Grazie per qualsiasi commento o suggerimento.

autunno

doppio RSI[];

ArrayResize(RSI,Bars);

ArraySetAsSeries(RSI,true);

for(int i=Barre; i>=0; i--)

{

RSI = (iRSI(NULL,0,RSIPeriod,RSIPrice,i));

}

double Green0 = iMAOnArray(RSI,0,GreenPeriod,0,GreenPrice,0);

 

Ciao

qualcuno ha il passo-momento con allarme?

Sarà un grande indicatore penso

grazie

saluti!

 

Chiudere il trade in base al livello

Ciao, vorrei sapere come chiudere il trade quando il prezzo ha raggiunto un certo livello. Diciamo, 55 punti sopra la linea MA. Ho provato a includere la MA nella parte TakeProfit di OrderSend, ma il tester rifiuta il mio EA con: "qualcosa di non valido" messaggio di errore. Grazie.

 
Sendra:
Ciao, vorrei sapere come chiudere il trade quando il prezzo ha raggiunto un certo livello. Diciamo, 55 punti sopra la linea MA. Ho provato a includere la MA nella parte TakeProfit di OrderSend, ma il tester rifiuta il mio EA con: "qualcosa di non valido" messaggio di errore. Grazie.

Prima di tutto ottenere la media mobile:

doppio MA = iMA(...);

poi calcolare il TakeProfit in questo modo:

double TP = MA + (55*Point); // o TP = MA-(55*Point); nel caso di vendita.

 

Funziona!

Ehi, grazie, CodersGuru. Funziona davvero. Ma mi fa anche pensare: se posso spostare il take profit ad un certo livello che non è statico, posso fare lo stesso con il mio stoploss (senza usare il trailingstop).

E ho provato.

Ha funzionato, con un cattivo risultato. Quindi, credo di dover fare con il trailingstop. È corretto? (Attenzione, non ho ancora imparato a codificare il trailingstop).

Grazie.

 

Trailing stop interno

Sendra:
Grazie, CodersGuru. Funziona. Ma mi fa anche pensare: se posso spostare il take profit ad un certo livello che non è statico, posso fare lo stesso con il mio stoploss (senza usare il trailingstop).

E ho provato.

Ha funzionato, con un cattivo risultato. Quindi, credo di dover fare con il trailingstop. È corretto? (Attenzione, non ho ancora imparato a codificare il trailingstop).

Grazie.

Ho fatto qualcosa del genere per un trailing stop interno: (questo è un esempio per un ordine lungo) Sembra funzionare. Spero che questo aiuti.

extern int Trailing_Stop=20;

static double Trailing_Long;

bool Read_Long_Open;

se (Inserisci la tua decisione di entrata lunga)

{

Funzione Ordersend() qui

Read_Long_Open=true;

}

if (Read_Long_Open==true)

{

if(OrderSelect(T_1L, SELECT_BY_TICKET)==true)

{

Trailing_Long=OrderOpenPrice();

Print(" Trailing_Long =",Trailing_Long);

Read_Long_Open=false;

}

}

if (Read_Long_Open==false)

{

se (Trailing_Long < Bid)

{

Trailing_Long=Bid;

Print("Adjusted Trailing_Long =",Trailing_Long);

}

}

if (Bid <= Trailing_Long-Trailing_Stop*Point)

{

Funzione OrderClose()

Stampa("Ordine lungo chiuso");

}

 

Grazie

Ciao, Wolfe,

Ho provato il tuo codice, ma ho ottenuto invece un risultato più negativo. Per favore non chiedermi perché, perché non so nemmeno io la risposta. Intendiamoci, sono ancora in fase di botta e risposta nella codifica. Ma grazie comunque, il tuo codice mi ha dato abbastanza ispirazione per scrivere il mio con un risultato sufficiente per me.

Quindi, grazie.