Come codificare? - pagina 291

 

dettaglio ultima candela

Ciao,

ho bisogno di un indicatore che mostri il valore dell'ultima candela alta, bassa, aperta e chiusa...

 
mladen:
Perché non usare un trailing stop allora? Voglio dire che farebbe quasi il 100% (quasi) di quello che è la tua idea originale ed è molto, molto più facile da codificare

Il fatto è che (non credo di essermi espresso correttamente o di non essere stato corretto al 100%) gli stop (per ora comunque) rimarranno gli stessi per tutto il trade. Che ne dite di un approccio come questo, quando due trade sono aperti, un codice può controllare il numero di ordini aperti, se è superiore a 1 (in pratica 2) allora entrambi i trade hanno i loro take profit modificati ad un certo importo che era più alto di prima. Essenzialmente una sorta di copertura va avanti qui.

Grazie,

madmax3

 

[langtitle=pl]Proszę o pomoc w napisaniu EA działającego n[/langtitle]

[lang=pl]Witam czy bugł by ktoś mi to dopracować był rym wdzięczny : Chciałbym rzeby kupywał LevelRSIbuy=20; a sprzeawał jak dojdzie LevelRSIsell=80; i żeby dało się ustawiać pozostałe żeczy kt�re są pod extern int MagicNumber

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#define SIGNAL_CLOSESELL 4

#proprietà copyright "Expert Advisor Builder"

#proprietà link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = True;;

extern double Lots = 0.1;

extern int Slippage = 1;

extern bool UseStopLoss = True;

extern int StopLoss = 10;

extern bool UseTakeProfit = True;

extern int TakeProfit = 5;

extern bool UseTrailingStop = Falso;

extern int TrailingStop = 30;

extern int LevelRSIbuy=20;

extern int LevelRSIsell=80;

int BarCount;

int Current;

bool TickCheck = False;

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

//| funzione di inizializzazione esperto |

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

int init() {

BarCount = Bars;

se (EachTickMode) Current = 0; altrimenti Current = 1;

return(0);

}

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

//| funzione di deinizializzazione esperto |

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

int deinit() {

return(0);

}

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

//| funzione di avvio esperto |

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

int start() {

int Ordine = SIGNAL_NONE;

int Total, Ticket;

doppio StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Totale = OrdiniTotali();

Ordine = SIGNAL_NONE;

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

//| Variabile Inizio |

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

double Var1 = iRSI("EURUSD", PERIOD_M1, 14, PRICE_OPEN, Current + 0);

double Buy1_1 = iRSI("EURUSD", PERIOD_M1, 14, PRICE_OPEN, Current + 0);

double Sell1_1 = iRSI("EURUSD", PERIOD_M1, 14, PRICE_OPEN, Current + 0);

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

//| Fine della variabile |

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

//Controlla la posizione

bool IsTrade = Falso;

for (int i = 0; i < Totale; i ++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {

IsTrade = True;

if(OrderType() == OP_BUY) {

//Chiudere

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

//| Segnale Inizio(Esci Compra) |

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

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

//| Segnale Fine(Esci dall'Acquisto) |

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

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");

if (!EachTickMode) BarCount = Bars;

IsTrade = Falso;

continuare;

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Punto * TrailingStop) {

if(OrderStopLoss() < Bid - Point * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

if (!EachTickMode) BarCount = Bars;

continua;

}

}

}

} else {

//Chiudi

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

//| Segnale Inizio(Esci Vendi) |

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

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

//| Segnale Fine(Esci Vendi) |

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

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");

if (!EachTickMode) BarCount = Bars;

IsTrade = Falso;

continuare;

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

se((OrderOpenPrice() - Ask) > (Punto * TrailingStop)) {

if((OrderStopLoss() > (Ask + Punto * TrailingStop)) || (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);

if (!EachTickMode) BarCount = Bars;

continuare;

}

}

}

}

}

}

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

//| Signal Begin(Entry) |

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

if (False) Ordine = SIGNAL_BUY;

se (Falso) Ordine = SIGNAL_SELL;

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

//| Segnale Fine |

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

//Compra

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Controlla il margine libero

if (AccountFreeMargin() < (1000 * Lotti)) {

Print("Non abbiamo soldi. Margine libero = ", ContoFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; altrimenti StopLossLevel = 0,0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; altrimenti TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

se(Biglietto > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("Ordine BUY aperto : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Errore nell'apertura dell'ordine BUY: ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

//Vendere

if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Controlla il margine libero

if (AccountFreeMargin() < (1000 * Lotti)) {

Print("Non abbiamo soldi. Margine libero = ", ContoFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; altrimenti StopLossLevel = 0,0;

if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; altrimenti TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);

se(Biglietto > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("Ordine SELL aperto : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");

} else {

Print("Errore nell'apertura dell'ordine SELL: ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

if (!EachTickMode) BarCount = Bars;

return(0);

}

//+------------------------------------------------------------------+[/lang]

 

Sto cercando di usare questo codice per aumentare il take profit dei trade aperti (se ci sono due trade aperti).

if(total>2)

if(OrderType()==OP_BUY)

OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Ask+((TakeProfit+20)*Point),0,Blue);

if(OrderType()==OP_SELL)

OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Ask+((TakeProfit+20)*Point),0,Blue);

total=OrdersTotal(); btw.

Non riesco ancora a farlo funzionare, qualche suggerimento?

Grazie,

madmax3

 

Aiuto per limitare il numero di compravendite giornaliere a 1

Sono nuovo nella programmazione e ho bisogno di aiuto in MQL4. Ho studiato alcune guide per codificatori e ho capito come aprire e chiudere le operazioni in base alla mia strategia di trading. La mia difficoltà è limitare il numero di trade giornalieri a 1. Voglio aprire non più di 1 trade al giorno (secondo l'orario del server). Quindi vorrei controllare gli ordini aperti e chiusi per vedere se un ordine è stato aperto oggi. Se un ordine è stato aperto oggi, allora non aprire altri ordini per la giornata.

Per favore aiutatemi.

 
Prova qualcosa del genere:
bool uniqueOnDay()

{

datetime startTime = iTime(NULL,PERIOD_D1,Time[0]);

datetime endTime = startTime+24*60*PERIOD_D1;

for (int i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;

if (OrderSymbol() != Symbol()) continue;

if (OrderMagicNumber() != MagicNumber) continue;

if (OrderOpenTime()endTime) continue;

return(false);

}

return(true);

}
Controlla se uno degli ordini chiusi per il simbolo corrente è stato aperto nel giorno corrente. Se c'è stato un ordine aperto nel giorno corrente restituisce falso (c'è già stato un ordine aperto in quel giorno) altrimenti restituisce vero (non c'è stato un ordine aperto in quel giorno). Non controlla gli ordini attualmente aperti (solo la cronologia) poiché presumo che non vogliate più di 1 ordine aperto e che sia controllato diversamente. L'utilizzo sarebbe qualcosa del genere:

if (UniqueOnDay() && CurrentlyOpenedOrders==0) ...

PS: presuppone che il tuo EA abbia un parametro MagicNumber (quel nome esatto)

PPS: funzionerà su time frame fino a daiy. Non funzionerà bene su grafici settimanali e mensili

dresolo1:
Sono nuovo nella programmazione e ho bisogno di aiuto in MQL4. Ho studiato alcune guide per codificatori e ho capito come aprire e chiudere le operazioni in base alla mia strategia di trading. La mia difficoltà è limitare il numero di operazioni giornaliere a 1. Voglio aprire non più di 1 operazione al giorno (secondo l'ora del server). Quindi vorrei controllare gli ordini aperti e chiusi per vedere se un ordine è stato aperto oggi. Se un ordine è stato aperto oggi, allora non aprire altri ordini per la giornata. Per favore, aiutatemi.
 

[langtitle=pl]Convertire la funzione Tema in Tema(close,period)[/langtitle]

Witam

Jeszcze raz bo cos sie zle wkleilo. Jak przekazac wartosc funkcji Tema do Var1. Jak robie tak jak w kodzie ponizej to Var1 jest puste.

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 DarkBlue

#property indicator_width1 2

//---- input parameters

extern int EMA_period=4;

//---- buffers

string txt;

double TemaBuffer[];

double Ema[];

double EmaOfEma[];

double EmaOfEmaOfEma[];

double Var1;

int Var2;

int i,limit,limit2,limit3;

extern int Apply_To_Price=1;

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

IndicatorBuffers(5);

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,Var1);

SetIndexBuffer(1,TemaBuffer);

SetIndexBuffer(2,Ema);

SetIndexBuffer(3,EmaOfEma);

SetIndexBuffer(4,EmaOfEmaOfEma);

IndicatorShortName("TEMA("+EMA_period+")");

switch(Apply_To_Price)

{

case 1:

{txt="Open";break;}

case 2:

{txt="High";break;}

case 3:

{txt="Low"; break;}

case 4:

{txt="Median"; break;}

case 5:

{txt="Typical"; break;}

case 6:

{txt="WghtdClose"; break;}

default:

{txt="Close";}

}

//----

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

//----

int counted_bars=IndicatorCounted();

if (counted_bars==0)

{

limit=Bars-1;

limit2=limit-EMA_period;

limit3=limit2-EMA_period;

}

if (counted_bars>0)

{

limit=Bars-counted_bars-1;

limit2=limit;

limit3=limit2;

}

for (i=limit3;i>=0;i--)

{

Var1 = Tema(Apply_To_Price,4); //=======================TUTAJ JEST PROBLEM W VAR1 NIC NIE MA. DLACZEGO?

// Alert(Var1);

}

Var2 = dodawanie (2,3);

return(0);

}

double Tema(int Cena, int cykl)

{

//----

for (i=limit;i>=0;i--) Ema=iMA(NULL,0,cykl,0,MODE_EMA,Cena,i);

for (i=limit2;i>=0;i--) EmaOfEma=iMAOnArray(Ema,0,cykl,0,MODE_EMA,i);

for (i=limit3;i>=0;i--) EmaOfEmaOfEma=iMAOnArray(EmaOfEma,0,cykl,0,MODE_EMA,i);

for (i=limit3;i>=0;i--)

{

TemaBuffer=3*Ema-3*EmaOfEma+EmaOfEmaOfEma;

//Alert(TemaBuffer);

}

return(TemaBuffer);

}

int dodawanie (int a, int b)

{

int c;

c=a+b;

return(c);

}

 

Come questo (TEMA) ...

Se lo vuoi come funzione, allora dovrebbe essere qualcosa come questo:
double workTema[][3];

#define _ema1 0

#define _ema2 1

#define _ema3 2

double iTema(double price, double period, int r, int instanceNo=0)

{

if (ArrayRange(workTema,0)!= Bars) ArrayResize(workTema,Bars); instanceNo*=3; r = Bars-r-1;

//

//

//

//

//

double alpha = 2.0 / (1.0+period);

workTema[r][_ema1+instanceNo] = workTema[r-1][_ema1+instanceNo]+alpha*(price -workTema[r-1][_ema1+instanceNo]);

workTema[r][_ema2+instanceNo] = workTema[r-1][_ema2+instanceNo]+alpha*(workTema[r][_ema1+instanceNo]-workTema[r-1][_ema2+instanceNo]);

workTema[r][_ema3+instanceNo] = workTema[r-1][_ema3+instanceNo]+alpha*(workTema[r][_ema2+instanceNo]-workTema[r-1][_ema3+instanceNo]);

return(workTema[r][_ema3+instanceNo]+3.0*(workTema[r][_ema1+instanceNo]-workTema[r][_ema2+instanceNo]));

}[/PHP]

Allego anche un indicatore di esempio. Il vantaggio di passare un valore invece del tipo di prezzo è che in questo modo si può applicare il tema a qualsiasi valore (non deve essere necessariamente un tema di un prezzo, può essere tema di un altro indicatore per esempio)

lukibest:
Witam

Jeszcze raz bo cos sie zle wkleilo. Jak przekazac wartosc funkcji Tema do Var1. Jak robie tak jak w kodzie ponizej to Var1 jest puste.

[PHP]

#property indicator_chart_window

#proprietà indicator_buffers 1

#property indicator_color1 DarkBlue

#proprietà indicator_width1 2

//---- parametri di input

extern int EMA_period=4;

//---- buffer

stringa txt;

doppio TemaBuffer[]

doppio Ema[]

double EmaOfEma[]

double EmaOfEmaOfEma[]

doppio Var1;

int Var2;

int i, limite, limite2, limite3;

extern int Apply_To_Price=1;

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

//|Funzione di inizializzazione dell'indicatore personalizzata

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

int init()

{

//---- indicatori

IndicatorBuffers(5);

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,Var1);

SetIndexBuffer(1,TemaBuffer);

SetIndexBuffer(2,Ema);

SetIndexBuffer(3,EmaOfEma);

SetIndexBuffer(4,EmaOfEmaOfEma);

IndicatoreShortName("TEMA("+EMA_periodo+")");

switch(Apply_To_Price)

{

caso 1:

{txt="Open";break;}

caso 2:

{txt="High";break;}

caso 3:

{txt="Low"; break;}

caso 4:

{txt="Mediana"; break;}

caso 5:

{txt="Tipico"; break;}

caso 6:

{txt="WghtdClose"; break;}

default:

{txt="Close";}

}

//----

return(0);

}

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

//| Funzione di deinizializzazione dell'indicatore personalizzato |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Funzione di iterazione dell'indicatore personalizzato |

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

int start()

{

//----

int counted_bars=IndicatorCounted();

se (counted_bars==0)

{

limit=Bars-1;

limit2=limit-EMA_periodo;

limit3=limit2-EMA_periodo;

}

se (counted_bars>0)

{

limit=Bars-counted_bars-1;

limit2=limit;

limit3=limit2;

}

for (i=limit3;i>=0;i--)

{

Var1 = Tema(Apply_To_Price,4); //=======================TUTAJ JEST PROBLEM W VAR1 NIC NIE MA. DLACZEGO?

// Alert(Var1);

}

Var2 = dodawanie (2,3);

return(0);

}

doppio Tema(int Cena, int cykl)

{

//----

for (i=limit;i>=0;i--) Ema=iMA(NULL,0,cykl,0,MODE_EMA,Cena,i);

for (i=limit2;i>=0;i--) EmaOfEma=iMAOnArray(Ema,0,cykl,0,MODE_EMA,i);

for (i=limit3;i>=0;i--) EmaOfEmaOfEma=iMAOnArray(EmaOfEma,0,cykl,0,MODE_EMA,i);

for (i=limit3;i>=0;i--)

{

TemaBuffer=3*Ema-3*EmaOfEma+EmaOfEma;

//Alert(TemaBuffer);

}

return(TemaBuffer);

}

int dodawanie (int a, int b)

{

int c;

c=a+b;

return(c);

}

File:
tema.mq4  3 kb
 

Aiuto con il codice HAMMER per favore

Salve,

Sto iniziando da poco in mql4. Sto cercando di scegliere i martelli bianchi e neri nelle candele con il seguente indicatore. Tuttavia, nel grafico a volte le candele ottengono un testo di identificazione sbagliato (la candela bianca del martello è identificata come candela nera del martello e viceversa). Per favore aiutatemi con questa situazione, grazie in anticipo.

#proprietà indicator_chart_window

limite int;

//---- buffer

stringa hammer[200000];

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

//| funzione di inizializzazione dell'indicatore CuStom

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

int init()

{

return(0);

}

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

//| Funzione di deinizializzazione dell'indicatore CuStor |

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

int deinit()

{

//----

ObjectsDeleteAll(hammer,OBJ_TEXT);

//----

return(0);

}

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

//| Funzione di iterazione dell'indicatore CuStom |

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

int start()

{

int N;

int N1;

int N2;

stringa di testo;

int counted_bars=IndicatorCounted();

limite=Bars_contate;

for(N = 1; N < limite; N++) {

martello[N]= CharToStr(N);

N1 = N + 1;

N2 = N + 2;

//----

//---- controllare eventuali errori

if(counted_bars<0) {

Alert("NO Bars..");

return(-1);

}

// Controlla per il martello bianco

se (((Close[N1]>Open[N1]) && ((Open[N1]-Low[N1])>=2*(Close[N1]-Open[N1])) && ((High[N1]-Close[N1])<=(Open[N1]-Low[N1])*0.10)) {

ObjectCreate(hammer[N], OBJ_TEXT, 0, Time[N1], Low[N1] - Point);

ObjectSetText(hammer[N], "WHmr", 9, "Times New Roman", LawnGreen);

}

// Controlla il martello nero

if (((Close[N1]=2*(Open[N1]-Close[N1])) && ((High[N1]-Open[N1])<=(Close[N1]-Low[N1])*0.10))) {

ObjectCreate(hammer[N], OBJ_TEXT, 0, Time[N1], Low[N1] - Point);

ObjectSetText(hammer[N], "BHmr", 9, "Times New Roman", LawnGreen);

}

//----

} // Fine del ciclo for

return(0);

}

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

 
svezir:
Ciao,

Sto iniziando da poco in mql4. Sto cercando di scegliere i martelli bianchi e neri nelle candele con il seguente indicatore. Tuttavia, nel grafico a volte le candele hanno un testo di identificazione sbagliato (la candela bianca a martello viene identificata come candela nera a martello e viceversa). Per favore aiutatemi con questa situazione, grazie in anticipo.

#proprietà indicator_chart_window

limite int;

//---- buffer

stringa hammer[200000];

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

//| funzione di inizializzazione dell'indicatore CuStom

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

int init()

{

return(0);

}

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

//| Funzione di deinizializzazione dell'indicatore CuStor |

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

int deinit()

{

//----

ObjectsDeleteAll(hammer,OBJ_TEXT);

//----

return(0);

}

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

//| Funzione di iterazione dell'indicatore CuStom |

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

int start()

{

int N;

int N1;

int N2;

stringa di testo;

int counted_bars=IndicatorCounted();

limite=Bars_contate;

for(N = 1; N < limite; N++) {

martello[N]= CharToStr(N);

N1 = N + 1;

N2 = N + 2;

//----

//---- controllare eventuali errori

if(counted_bars<0) {

Alert("NO Bars..");

return(-1);

}

// Controlla per il martello bianco

se (((Close[N1]>Open[N1]) && ((Open[N1]-Low[N1])>=2*(Close[N1]-Open[N1])) && ((High[N1]-Close[N1])<=(Open[N1]-Low[N1])*0.10)) {

ObjectCreate(hammer[N], OBJ_TEXT, 0, Time[N1], Low[N1] - Point);

ObjectSetText(hammer[N], "WHmr", 9, "Times New Roman", LawnGreen);

}

// Controlla il martello nero

if (((Close[N1]=2*(Open[N1]-Close[N1])) && ((High[N1]-Open[N1])<=(Close[N1]-Low[N1])*0.10))) {

ObjectCreate(hammer[N], OBJ_TEXT, 0, Time[N1], Low[N1] - Point);

ObjectSetText(hammer[N], "BHmr", 9, "Times New Roman", LawnGreen);

}

//----

} // Fine del ciclo for

return(0);

}

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

Ciao Svezir,

Ho questo indicatore per i modelli di candela forse ti aiuterà.