Aiuto per la codifica - pagina 254

 
thefxpros:
Ciao,

Mi sto divertendo a trasformare qualche indicatore in MTF usando icustom. L'indicatore funziona, ma non visualizza correttamente il colore e le frecce, perché?

Dov'è l'errore, per favore?

wilders_trailing_stop_mtf.mq4

wilders_trailing_stop.mq4

//------------------------------------------------------------------

#property copyright "thefxpros"

#property link "thefxpros@katamail.com"

//------------------------------------------------------------------

#property indicator_chart_window

//#property indicator_color1 Orange

//#property indicator_color2 LimeGreen

//#property indicator_color3 LimeGreen

//#property indicator_color4 Orange

//#property indicator_width3 1

//#property indicator_width4 1

//

//

//

extern int TimeFrame = 0;

extern int Length = 2;

extern double Coeff = 1.75;

extern int LineWidth = 1;

extern int ArrowWidth = 1;

extern color UpLineClr = LimeGreen;

extern color DnLineClr = Orange;

extern color UpArrowClr = LimeGreen;

extern color DnArrowClr = Orange;

//

double WTS[];

double WTSDn[];

double arrUp[];

double arrDn[];

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

//| |

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

int init()

{

IndicatorBuffers(4);

SetIndexBuffer(0,WTS); SetIndexStyle(0,DRAW_LINE, EMPTY, LineWidth, DnLineClr);

SetIndexBuffer(1,WTSDn); SetIndexStyle(1,DRAW_LINE, EMPTY, LineWidth, UpLineClr);

SetIndexBuffer(2,arrUp); SetIndexStyle(2,DRAW_ARROW, EMPTY, ArrowWidth, UpArrowClr); SetIndexArrow(2,SYMBOL_ARROWUP);

SetIndexBuffer(3,arrDn); SetIndexStyle(3,DRAW_ARROW, EMPTY, ArrowWidth, DnArrowClr); SetIndexArrow(3,SYMBOL_ARROWDOWN);

IndicatorShortName("Wilders trailing stop MTF ("+Length+","+Coeff+")");

Length = MathMax(Length,1);

switch(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1"; break;

case 5 : TimeFrameStr="Period_M5"; break;

case 15 : TimeFrameStr="Period_M15"; break;

case 30 : TimeFrameStr="Period_M30"; break;

case 60 : TimeFrameStr="Period_H1"; break;

case 240 : TimeFrameStr="Period_H4"; break;

case 1440 : TimeFrameStr="Period_D1"; break;

case 10080 : TimeFrameStr="Period_W1"; break;

case 43200 : TimeFrameStr="Period_MN1"; break;

default : TimeFrameStr="Current Timeframe";

}

IndicatorShortName("Wilders trailing stop MTF ("+TimeFrameStr+")");

return(0);

}

//----

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

//| MTF function |

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

int start()

{

datetime TimeArray[];

int i,limit,y=0,counted_bars=IndicatorCounted();

// Plot defined time frame on to current time frame

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);

limit= MathMin(Bars-counted_bars+3*TimeFrame/Period(),Bars-1);

for(i=0,y=0;i<limit;i++)

{

if (Time<TimeArray[y]) y++;

/*********************************************************************************************************

Add your main indicator loop below. You can reference an existing indicator with its iName or iCustom.

Rule 1: Add extern inputs above for all neccesary values

Rule 2: Use 'TimeFrame' for the indicator time frame

Rule 3: Use 'y' for your indicator's shift value

********************************************************************************************************/

WTS=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,0,y);

WTSDn=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,1,y);

arrUp=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,2,y);

arrDn=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,3,y);

}

return(0);

}

//+------------------------------------------------------------------+[/PHP]

thefxpros

Hai commentato la parte in cui devi dichiarare i buffer di disegno

Questa parte :

[PHP]#proprietà indicator_chart_window

//#proprietà indicator_buffers 4

//#proprietà indicator_color1 Orange

//#proprietà indicator_color2 LimeGreen

//#proprietà indicator_color3 LimeGreen

//#proprietà indicator_color4 Orange

//#proprietà indicator_width3 1

//#proprietà indicator_width4 1

Rimuovi i commenti da quelle linee e funzionerà

 
mladen:
thefxpros

Hai commentato la parte in cui devi dichiarare i buffer di disegno

Questa parte :

#property indicator_chart_window

//#property indicator_buffers 4

//#property indicator_color1 Orange

//#property indicator_color2 LimeGreen

//#property indicator_color3 LimeGreen

//#property indicator_color4 Orange

//#property indicator_width3 1

//#property indicator_width4 1
Rimuovi i commenti da quelle linee e funzionerà

sì, lo so, ma ho specificato dopo, non è sufficiente? Devo sempre specificare all'inizio?

Mi ricordo che spesso ho fatto così, con il precedente build metaeditor e per quanto mi ricordo funzionava, mi ricordo male?

 
thefxpros:
Sì, lo so, ma ho specificato dopo, non è sufficiente? Devo sempre specificare all'inizio? Mi ricordo che spesso ho fatto così, con la precedente build metaeditor e per quanto mi ricordo ha funzionato, mi ricordo male?

thefxpros

All'inizio si specificano i buffer di disegno. Più tardi potrete specificare i buffer di calcolo. Se non specifichi #property indicator_buffers numberOfDrawningBuffer allora non verrà disegnato nulla sul grafico

 

mostra tutta la tua storia Speard. Per favore aiutatemi

 

Qualcuno mi aiuti a controllare questo EA per la funzione CloseInMA.

Mi sono bloccato qui per molti giorni e non riesco a trovare la soluzione .

Grazie.

File:
testing1.5.mq4  38 kb
 
stevenpun:
Qualcuno mi aiuti a controllare questo EA per la funzione CloseInMA.

Mi sono bloccato qui per molti giorni e non riesco a trovare la soluzione .

Grazie.

stevenpun

Prova a fare come è scritto ora

File:
 

Ciao guru dal cuore gentile, sto chiedendo per favore che qualcuno aiuti a codificare questo e poi a costruire una versione robot (EA) di esso:

INDICATORE- Auto disegnare linee orizzontali (preferibilmente linee spezzate) sui prezzi che terminano rispettivamente a 5, 15, 31, 67. Esempio su UJ 103.05, 102.67, 103.15 e.t.c. La lunghezza della linea dovrebbe essere di 1 pollice di un righello matematico con questi numeri sotto in modo che avrò un grafico decente a causa delle linee di coppia che ho già.

PS- Broker a 4 e 5 cifre compatibili

 

Regole per l'EA

COMPRA

Posiziona un ordine di acquisto pendente ogni volta che il prezzo si muove di 3 pip prima del numero magico da SOTTO. Esempio per il numero magico 5, prezzo attualmente a UJ 103.02, posizionare l'ordine pendente buy @103.05.

VENDERE

Posiziona un ordine pendente di vendita ogni volta che il prezzo si avvicina al numero magico di 3 pip da SOPRA. Esempio, prezzo attualmente @103.08, posizionare stop di vendita @103.05

SL e TP 25/50 pip ciascuno.

Quando il commercio ha colpito +3 pip in profitto, sposta lo STOP LOSS per bloccare +1 profitto, sposta 5 blocca 4, sposta 8 blocca 7, sposta 12 blocca 10

Massima posizione aperta o commercio fluttuante o ordine pendente =1 solo fino a quando non viene fermato per un nuovo commercio

Massimo draw down giornaliero 3% e una volta raggiunto, l'EA dovrebbe fermare il trading.

Dimensione predefinita del lotto 0.1 (10.000)

24 ore di trading

P.S: L'EA dovrebbe avere un'opzione per nascondere i numeri magici, trailing stop, take profit/stop loss dal mio broker e dovrebbe essere compatibile con 4/5 cifre. Coppia predefinita UJ.

Sarò molto grato di avere questo codificato presto.

 
mladen:
stevenpun Prova a fare come è scritto ora

Ciao mladen,

Ho provato prima, ma non funziona.

Ecco perché sono molto confuso.

Spero che tu possa aiutarmi a vedere qual è il problema.

Grazie.

 
stevenpun:
Ciao mladen ,

Ho provato prima, ma non funziona.

Ecco perché sono molto confuso.

Spero che tu possa aiutarmi a capire qual è il problema.

Grazie.

Nella versione che hai postato stavi confrontando le costanti (Fastma, Dn_slowma e Up_slowma sono periodi che vengono utilizzati per le medie mobili, non i valori delle medie mobili)

Ora è cambiato per confrontare i valori delle medie mobili. Se non è quello che avete in mente, allora dovete cambiarlo, ma non potete confrontare valori costanti e aspettarvi che cambino da barra a barra

Controlla se quelle sono le esatte condizioni delle medie mobili (nella funzione GetSignalClose()) che hai immaginato come condizioni di uscita, ma continua a confrontare i valori delle medie mobili non i parametri di quelle medie mobili