Come codificare? - pagina 117

 
mystified:
Ho aggiunto i livelli alla HMA:

#proprietà indicator_separate_window

#proprietà indicatore_buffer 2

#proprietà indicator_color1 Black

#proprietà indicatore_colore2 Rosso

#proprietà indicator_width1 2

#proprietà indicator_minimum 0

#Proprietà indicatore_massimo 100

#Proprietà indicatore_livello1 80

#Proprietà indicatore_livello2 60

#proprietà indicator_level3 40

#proprietà indicatore_livello4 20

#proprietà indicator_levelcolor DarkSlateGray

Ma l'indicatore non appare correttamente in una finestra separata.

Perché l'indicatore è delimitato in modo forzato:

Rimuovi queste due linee:

#proprietà indicatore_minimo 0

#proprietà indicatore_massimo 100

I livelli funzionano bene solo su indicatori delimitati, ma per fare un indicatore delimitato il calcolo deve includere i limiti.

Esempio: RSI = 100-(100/(1+U/D))

Sappiamo da quella formula che l'indicatore si muoverà tra 0-100 e per questo potremmo includere i livelli 70-30 senza paura che spariscano.

Un altro esempio è MACD = EMA(CLOSE, 12)-EMA(CLOSE, 26)).

Abbiamo impostato un livello su M5 e quando ci spostiamo su H1 è molto probabile che il livello sia sparito.

Quindi, prendiamo la stessa formula e facciamo alcune modifiche MACD = (EMA(CLOSE, 12)-EMA(CLOSE, 26))/EMA(CLOSE, 26). E ora abbiamo un indicatore percentuale. Non è delimitato ma abbiamo meno probabilità di perdere i nostri livelli.

 

Grazie Linuxer.

 
Ho creato un EA molto semplice e un sistema che uso in almeno 3 timeframe... Il problema è che non smette di aprirsi e non voglio avere 3 EA e 3 grafici per una coppia.

i need a code that would only do one order for buy and for sell per bar per TF and still open if it is on a different bar. i can have buy and sell and the same bar.

A volte ho 3 segnali in 3 diversi TF. Voglio prendere tutti gli ordini ma voglio solo un ordine per TF e posso ancora prendere un altro ordine in un altro TF se è ancora aperto ma in una barra diversa.

esempio:

1 segnale in 4h

1 segnale in 1h ma cade in barra per 4h

1 segnale in 30 min ma solo una barra per 1h e 4h.

3 segnali saranno aperti.

mi va bene usare il numero magico come mezzo di filtro.

qualcuno può aiutarmi? grazie mille.

Finora questo è quello che ho pensato:

per 30 minuti

se (magicnumber == 123)

{

if (iTime(OrderOpenTime()) != iTime(Symbol(),PERIOD_M30,0))

{//il mio codice d'ordine}

}

Non ho MT4 ma so che qualcosa non va nella logica o nel codice. Quindi ragazzi per favore aiutatemi.

Penso anche che abbiamo un problema simile con matrixebiz

Qualcuno può aiutarmi per favore?

 
mystified:
Grazie Linuxer.

Questo è solo l'esempio (perché ora hai l'oscillatore HMA ) del post precedente, è ancora MACD ma calcolato in modo diverso.

 
 

Come iniziare il trading sulla candela di apertura in D1?

c'è qualcuno che conosce il codice per chiedere all'EA di iniziare il commercio aperto quando la nuova barra inizia in D1 time frame?

Ecco la logica:

in D1 TF, quando la nuova candela (significa un nuovo giorno) inizia, l'EA aprirà 2 posizioni, COMPRA e VENDI con TP=10 pips per ogni posizione.

Quando la candela si chiude, l'EA chiude tutte le posizioni e ricomincia ad aprire posizioni per la nuova candela.

regola molto semplice, ma ancora non riesco a trovare il codice per questa semplice regola....

Sono davvero nuovo nella codifica MQL4 e ho già cercato e letto molte fonti e forum per imparare di più sulla codifica MQL4, ma non riesco a trovare ciò di cui ho bisogno.

Grazie prima...

 

ecco il mio codice.... per favore aiutatemi a sistemarlo

Ho provato a codificare quello che ho chiesto prima, ecco il codice EA di esempio:

int start()

{

LastPrice=0;

LastProfit=0;

LastTicket=0;

LastLots=Lots;

Profit=0;

ProfitPip=0;

PairOrder=0;

OrdersOpened = 0;

PreviousOrders = OrdersOpened;

double Spread = MarketInfo(Symbol(),MODE_SPREAD);

PipValue=MarketInfo(Symbol(),MODE_TICKVALUE);

ArrayCopyRates(rates, Symbol(), PERIOD_D1);

if(DayOfWeek()==0 || DayOfWeek()==6)

{

//nessuna negoziazione in vacanza;

return(0);

}

else

{

if (newbar()==Period())

{

for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt --)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

{

OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, Color1);

}

}

OpenBuy();

OpenSell();

}

}

}

int newbar()

{

doppio g;

int m,s,k;

m=Time[0]+Period()*60-TimeCurrent();

g=m/60.0;

s=m%60;

m=(m-m%60)/60;

return(m);

}

void OpenBuy()

{

double ldLot, ldStop, ldTake;

stringa lsComm;

ldLot = GetSizeLot();

ldStop = Ask-Point*StopLoss;

ldTake = NormalizeDouble(GetTakeProfitBuy(),Digits);

OrderSend(Symbol(),OP_BUY,ldLot,NormalizeDouble(Ask,Digits),Slippage,ldStop,ldTake, "BUY",Magic,0,Color1);

}

void OpenSell()

{

double ldLot, ldStop, ldTake;

stringa lsComm;

ldLot = GetSizeLot();

ldStop = Bid+Point*StopLoss;

ldTake = NormalizeDouble(GetTakeProfitSell(),Digits);

OrderSend(Symbol(),OP_SELL,ldLot,NormalizeDouble(Bid,Digits),Slippage,ldStop,ldTake, "SELL",Magic,0,Color1);

}

doppio GetSizeLot()

{

return(Lotti);

}

double GetTakeProfitBuy()

{

return(Ask+TakeProfit*Point);

}

double GetTakeProfitSell()

{

return(Bid-TakeProfit*Point);

}

Ieri sera ho caricato sul mio vps, ma stamattina l'ho controllato ma il mio EA di esempio non apre nessun trade, qualcuno può aiutarmi a sistemare il mio EA di esempio qui?

btw, l'ho allegato anche qui

 

Avvisi che durano più a lungo

Ciao, sono un principiante e sto cercando di capire i pro e i contro di questo e qualsiasi aiuto sarà apprezzato!

il mio indicatore attuale ha il seguente codice per la generazione di avvisi, ma questo avviso dura solo un segnale acustico, c'è un modo per farlo suonare per 30 o 60 secondi o almeno un po' più a lungo di 1 segnale acustico

if (setalert == 1 && shift == 0) {

Alert(Symbol(), " ", period, " ", pattern);

setalert = 0;

}

Grazie

 

Ricodifica in metatrader (Oscillatore di volume Klinger)

L'oscillatore Klinger (KO) è stato sviluppato da Stephen J. Klinger. Imparando da precedenti ricerche sul volume da parte di noti tecnici come Joseph Granville, Larry Williams e Marc Chaikin, Klinger ha deciso di sviluppare un indicatore basato sul volume per aiutare nell'analisi a breve e lungo termine.

Il KO è stato sviluppato con due obiettivi apparentemente opposti in mente: essere abbastanza sensibile da segnalare top e bottom a breve termine, ma abbastanza accurato da riflettere il flusso di denaro a lungo termine dentro e fuori un titolo.

Il KO si basa sui seguenti principi:

* L'intervallo di prezzo (cioè Alto - Basso) è una misura del movimento e il volume è la forza dietro il movimento. La somma di High + Low + Close definisce un trend. L'accumulo si verifica quando la somma di oggi è maggiore di quella del giorno precedente. Al contrario, la distribuzione si verifica quando la somma di oggi è inferiore a quella del giorno precedente. Quando le somme sono uguali, la tendenza esistente viene mantenuta.

* Il volume produce continue variazioni intragiornaliere del prezzo che riflettono la pressione di acquisto e di vendita. La KO quantifica la differenza tra il numero di azioni accumulate e distribuite ogni giorno come "forza del volume". Una forza di volume forte e crescente dovrebbe accompagnare una tendenza al rialzo e poi contrarsi gradualmente nel tempo durante le ultime fasi della tendenza al rialzo e le prime fasi della tendenza al ribasso successiva. Questo dovrebbe essere seguito da una forza di volume crescente che riflette una certa accumulazione prima che si sviluppi un fondo.

* Convertendo la forza del volume in un oscillatore che rappresenta la differenza tra una media mobile esponenziale di 34 e 55 periodi con un trigger di 13 periodi, la forza del volume in entrata e in uscita da un titolo può essere facilmente monitorata. Il confronto di questa forza con l'azione dei prezzi può aiutare a identificare le divergenze ai massimi e ai minimi.

Interpretazione

Klinger raccomanda le seguenti linee guida per l'utilizzo del KO:

1. I segnali più affidabili si verificano nella direzione del trend prevalente. Dovrebbero rimanere in vigore severe linee guida per lo stop (cioè la mancata penetrazione della linea dello zero o una violazione della linea di trigger).

2. Il segnale più importante si verifica quando il KO diverge con la price action sottostante, specialmente su nuovi massimi o nuovi minimi in territorio di ipercomprato/ipervenduto. Per esempio, quando un'azione fa un nuovo massimo o un nuovo minimo per un ciclo e il KO non riesce a confermarlo, la tendenza potrebbe perdere slancio e avvicinarsi alla conclusione.

3. Se il prezzo è in un trend rialzista (cioè sopra una media mobile esponenziale di 89 giorni), comprate quando il KO scende a livelli insolitamente bassi sotto lo zero, gira al rialzo e incrocia la sua linea di innesco. Se il prezzo è in una tendenza al ribasso (cioè sotto una media mobile esponenziale di 89 giorni), vendi quando il KO sale a livelli insolitamente alti sopra lo zero, scende e attraversa la sua linea di innesco.

Mentre il KO funziona bene per le operazioni a tempo nella direzione del trend, è meno efficace contro il trend. Questo può creare problemi per il trader che cerca di fare lo "scalping" di un'operazione contro il trend prevalente. Tuttavia, quando il KO è usato insieme ad altri indicatori tecnici, si possono ottenere risultati migliori. La %R di William è raccomandata per confermare una condizione di ipercomprato/ipervenduto e il MACD di Gerald Appel è raccomandato per confermare la direzione a breve termine del prezzo.

Suggerimento

Stephen Klinger suggerisce la seguente formula per visualizzare il flusso cumulativo di denaro in entrata e in uscita da un titolo:

cum(kvo())

Traccia una media mobile a 13 periodi della formula come linea di attivazione per entrare in operazioni di acquisto e vendita.

fonte codenya untuk trade station

Tipo: Funzione, Nome: VForce

Vars: TSum(0), Trend(0), DM(0), CM(0);

TSum = High + Low + Close;

SE TSum > TSum[1] Allora

Trend = 1

Altrimenti

Trend = -1;

IF Trend = Trend[1] Allora

CM = CM + Intervallo

Altrimenti

CM = Range + Range[1];

SE CM 0 Allora

VForce = Volume * AbsValue(2 * (DM/CM) -1) * Trend * 100;

Tipo: Funzione, Nome: KVO

Ingressi:

FastX(Numeric),

SlowX(Numerico); Vars:

FXAvg(0),

SXAvg(0);

FXAvg = XAverage(VForce, FastX);

SXAvg = XAverage(VForce, SlowX);

KVO = FXAvg - SXAvg;

Tipo: Indicatore, Nome: Oscillatore del volume di Klinger

Ingressi:

FastX(34),

SlowX(55),

TrigLen(13),

Smooth(1);

Vars:

Trigger(0);Trigger = XAverage(KVO(FastX, SlowX), TrigLen);SE Smooth <= 1 Allora inizia

Plot1(KVO(FastX, SlowX), "KVO");

Plot2(Trigger, "KVO Trigger");

End Else BeginPlot1(Summation(KVO(FastX, SlowX), Smooth), "KVO");

Plot2(Sommatoria(Trigger, Smooth), "KVO Trigger");

Fine;

Plot3(0, "Zero");

SE Plot1 passa sopra Plot2 O Plot1 passa sotto Plot2 O

Plot2 passa sopra Plot3 O Plot2 passa sotto Plot3 Allora

Allarme = Vero;

qualcuno vorrebbe aiutarmi a convertire questa codifica in Mql4?

grazie

 
Motivazione: