Aiuto per la codifica - pagina 606

 

Salve,

Ho un problema con il mio indicatore. Questo codice funziona molto bene:

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

//| RSMA.mq4 |

//| |

//| |

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

#property copyright "Tartut"

#property link ""

#property indicator_separate_window

#property indicator_minimum -40

#property indicator_maximum 100

#property indicator_level1 19

#property indicator_level2 -19

#property indicator_level3 0

#property indicator_buffers 3

#property indicator_color1 Lime

#property indicator_color2 Yellow

#property indicator_color3 MediumOrchid

extern int RSI_Period = 9;

extern int RSI_Applied_Price = 0;//0=close, 1=open, 2=high, 3=low, 4=(high+low)/2, 5=(high+low+close)/3, 6=(high+low+close+close)/4

extern int MA_Period = 12;

extern int MA_Method = 1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA

double MA_Array[],RSI[], Histo[];

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators setting

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);

SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1);

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

IndicatorShortName("RSMA");

SetIndexBuffer(0,Histo);

SetIndexLabel(0,"RSMA");

SetIndexBuffer(1,MA_Array);

SetIndexLabel(1,"MA("+MA_Period+")");

SetIndexBuffer(2,RSI);

SetIndexLabel(2,"RSI("+RSI_Period+")");

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

int limit = Bars - IndicatorCounted() - 1;

//---- indicator calculation

ArrayResize(RSI,limit+1);

ArrayResize(MA_Array,limit+1);

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

{

RSI= iRSI(NULL,0,RSI_Period,RSI_Applied_Price,i);

}

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

{

MA_Array = iMAOnArray(RSI,0,MA_Period,0,MA_Method,i);

}

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

{

Histo = RSI-MA_Array;

}

//----

return(0);

}

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

Vorrei cancellare la linea RSI e EMA, ma quando lo faccio, l'istogramma cambia valore :/

Ho aggiunto due indicatori in allegato. Aiutatemi!

Scusa per il mio inglese.

File:
 
Tartut:
Ciao,

Ho un problema con il mio indicatore. Questo codice funziona molto bene:

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

//| RSMA.mq4 |

//| |

//| |

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

#property copyright "Tartut"

#property link ""

#property indicator_separate_window

#property indicator_minimum -40

#property indicator_maximum 100

#property indicator_level1 19

#property indicator_level2 -19

#property indicator_level3 0

#property indicator_buffers 3

#property indicator_color1 Lime

#property indicator_color2 Yellow

#property indicator_color3 MediumOrchid

extern int RSI_Period = 9;

extern int RSI_Applied_Price = 0;//0=close, 1=open, 2=high, 3=low, 4=(high+low)/2, 5=(high+low+close)/3, 6=(high+low+close+close)/4

extern int MA_Period = 12;

extern int MA_Method = 1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA

double MA_Array[],RSI[], Histo[];

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators setting

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);

SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1);

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

IndicatorShortName("RSMA");

SetIndexBuffer(0,Histo);

SetIndexLabel(0,"RSMA");

SetIndexBuffer(1,MA_Array);

SetIndexLabel(1,"MA("+MA_Period+")");

SetIndexBuffer(2,RSI);

SetIndexLabel(2,"RSI("+RSI_Period+")");

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

int limit = Bars - IndicatorCounted() - 1;

//---- indicator calculation

ArrayResize(RSI,limit+1);

ArrayResize(MA_Array,limit+1);

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

{

RSI= iRSI(NULL,0,RSI_Period,RSI_Applied_Price,i);

}

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

{

MA_Array = iMAOnArray(RSI,0,MA_Period,0,MA_Method,i);

}

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

{

Histo = RSI-MA_Array;

}

//----

return(0);

}

//+------------------------------------------------------------------+[/CODE]

I would like delete RSI and EMA line, but when I do it, histogram change value. :/

I add attachment two indicators. Help me!

Sorry for my English.

Cambia l'inizio in questo :

[CODE]//+------------------------------------------------------------------+

//| RSMA.mq4 |

//| |

//| |

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

#proprietà copyright "Tartut"

#proprietà link ""

#proprietà indicator_separate_window

#proprietà indicatore_minimo -40

#proprietà indicatore_massimo 100

#Proprietà indicatore_livello1 19

#proprietà indicatore_livello2 -19

#proprietà indicatore_livello3 0

#proprietà indicatore_buffer 1

#proprietà indicator_color1 Lime

extern int RSI_Period = 9;

extern int RSI_Applied_Price = 0;//0=chiuso, 1=aperto, 2=alto, 3=basso, 4=(alto+basso)/2, 5=(alto+basso+chiuso)/3, 6=(alto+basso+chiuso+chiuso)/4

extern int MA_Period = 12;

extern int MA_Method = 1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA

double MA_Array[],RSI[], Histo[];

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

//|Funzione di inizializzazione dell'indicatore personalizzato |

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

int init()

{

IndicatorBuffers)3);

//---- impostazione degli indicatori
 
mladen:

Cambia l'inizio con questo:

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

//| RSMA.mq4 |

//| |

//| |

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

#property copyright "Tartut"

#property link ""

#property indicator_separate_window

#property indicator_minimum -40

#property indicator_maximum 100

#property indicator_level1 19

#property indicator_level2 -19

#property indicator_level3 0

#property indicator_buffers 1

#property indicator_color1 Lime

extern int RSI_Period = 9;

extern int RSI_Applied_Price = 0;//0=close, 1=open, 2=high, 3=low, 4=(high+low)/2, 5=(high+low+close)/3, 6=(high+low+close+close)/4

extern int MA_Period = 12;

extern int MA_Method = 1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA

double MA_Array[],RSI[], Histo[];

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

//| Custom indicator initialization function |

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

int init()

{

IndicatorBuffers)3);

//---- indicators setting

Sì! Funziona. Grazie.

 

Ho il prossimo problema. Il mio indicatore non cambia il valore della barra corrente. Devo aggiornare il grafico.

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

//| RSMA Histogram.mq4 |

//| |

//| |

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

#property copyright "Tartut"

#property link ""

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 Lime

#property indicator_minimum -35

#property indicator_maximum 35

#property indicator_level1 19

#property indicator_level2 -19

#property indicator_level3 0

//#property indicator_color2 Yellow

//#property indicator_color3 MediumOrchid

extern double OverSold=-19.0;

extern double OverBought=19.0;

extern int RSI_Period=9;

extern int RSI_Applied_Price=0;

extern int MA_Period=12;

extern int MA_Method=1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA

extern bool ShowArrows=true;

extern color OverSoldColor=Gold;

extern color OverBoughtColor = Gold;

extern string arrowsIdentifier = "RSMA arrows";

extern int arrowsWidth = 1;

extern int IDWindow=1;

extern string _Divergence="<>";

extern string _CBars="<>";

extern int CBars=99;

extern bool CheckDivergence=false;

extern bool CheckSlowDownMomentum=false;

extern string DivergenceIndentifier="RSMA Divergence";

double MA_Array[],RSI[],Histo[];

int trend[];

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

//| Custom indicator initialization function |

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

int init()

{

IndicatorBuffers(3);

//---- indicators setting

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);

SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1);

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

IndicatorShortName("RSMA Histogram");

SetIndexBuffer(0,Histo);

SetIndexLabel(0,"RSMA");

SetIndexBuffer(1,MA_Array);

SetIndexLabel(1,"MA("+MA_Period+")");

SetIndexBuffer(2,RSI);

SetIndexLabel(2,"RSI("+RSI_Period+")");

return(0);

}

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

//| |

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

int deinit()

{

deleteArrows();

fnDeleteAllDivergence();

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

int limit=Bars-IndicatorCounted();

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

if(limit>0) limit--;

//---- indicator calculation

ArrayResize(trend,limit+1);

ArrayResize(RSI,limit+1);

ArrayResize(MA_Array,limit+1);

for(int i=0; i<limit; i++)

{

RSI=iRSI(NULL,0,RSI_Period,RSI_Applied_Price,i);

}

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

{

MA_Array=iMAOnArray(RSI,0,MA_Period,0,MA_Method,i);

}

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

{

Histo=RSI-MA_Array;

if(Histo>OverBought)

trend=1;

else if(Histo<OverSold)

trend=-1;

manageArrow(i);

}

if(CheckDivergence==true)

{

int x= CBars/3;

for(i=0; i<x; i++)

{

double open0=iOpen(NULL,0,i);

double close0= iClose(NULL,0,i);

double open1 = iOpen(NULL,0,i+1);

double close1= iClose(NULL,0,i+1);

double open2 = iOpen(NULL,0,i+2);

double close2 = iClose(NULL, 0, i+2);

bool momentum = true;

if(CheckSlowDownMomentum==true)

{

double bar0 = MathAbs(open0-close0);

double bar1 = MathAbs(open1-close1);

double bar2 = MathAbs(open2-close2);

if(bar0<bar1 && bar1<bar2)

momentum=true;

else

momentum=false;

}

//PUT

if(Histo<Histo && Histo<Histo && open0<close0 && open1<close1 && open2<close2 && momentum==true)

{

double high0 = iHigh(NULL, 0, i);

double high2 = iHigh(NULL, 0, i+2);

TrendCreate(DivergenceIndentifier+"Sub"+i,Time,Histo,Time,Histo,Red,STYLE_SOLID,1,IDWindow);

TrendCreate(DivergenceIndentifier+"Main"+i,Time,high2,Time,high0,Red,STYLE_SOLID,1,0);

}

else if(Histo>Histo && Histo>Histo && open0>close0 && open1>close1 && open2>close2 && momentum==true)

{

double low0 = iLow(NULL, 0, i);

double low2 = iLow(NULL, 0, i+2);

TrendCreate(DivergenceIndentifier+"Sub"+i,Time,Histo,Time,Histo,Red,STYLE_SOLID,1,IDWindow);

TrendCreate(DivergenceIndentifier+"Main"+i,Time,low2,Time,low0,Red,STYLE_SOLID,1,0);

}

}

}

return(0);

}

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

void manageArrow(int i)

{

if(ShowArrows)

{

deleteArrow(Time);

if(trend ==-1) drawArrow(i,OverBoughtColor,159,false);

if(trend == 1) drawArrow(i,OverSoldColor ,159,true );

}

}

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

//| |

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

void fnDeleteAllDivergence()

{

string lookFor=DivergenceIndentifier;

string objectName;

int lookForLength=StringLen(lookFor);

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

{

objectName=ObjectName(i);

if(StringSubstr(objectName,0,lookForLength)==lookFor) ObjectDelete(objectName);

}

}

//

//

//

//

//

void drawArrow(int i,color theColor,int theCode,bool up)

{

string name=arrowsIdentifier+":"+Time;

double gap=3.0*iATR(NULL,0,10,i)/4.0; //20

//

//

//

//

//

ObjectCreate(name,OBJ_ARROW,0,Time,0);

ObjectSet(name,OBJPROP_ARROWCODE,theCode);

ObjectSet(name,OBJPROP_COLOR,theColor);

ObjectSet(name,OBJPROP_WIDTH,arrowsWidth);

if(up)

ObjectSet(name,OBJPROP_PRICE1,High+gap);

else ObjectSet(name,OBJPROP_PRICE1,Low-gap);

}

//

//

//

//

//

void deleteArrows()

{

string lookFor = arrowsIdentifier+":";

int lookForLength = StringLen(lookFor);

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

{

string objectName=ObjectName(i);

if(StringSubstr(objectName,0,lookForLength)==lookFor) ObjectDelete(objectName);

}

}

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

//| |

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

void deleteArrow(datetime time)

{

string lookFor=arrowsIdentifier+":"+time; ObjectDelete(lookFor);

}

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

//| |

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

//

//

//

//

//

bool TrendCreate(string name="Line1",

datetime time1=0, // first point time

double price1=0, // first point price

datetime time2=0, // second point time

double price2=0, // second point price

const color clr=clrRed, // line color

const ENUM_LINE_STYLE style=STYLE_SOLID, // line style

const int width=1,

const int window=0 // line width // highlight to move

)

{

//--- reset the error value

ResetLastError();

//--- create a trend line by the given coordinates

if(!ObjectCreate(name,OBJ_TREND,window,time1,price1,time2,price2))

{

Print(__FUNCTION__,": failed to create a trend line! Error code = ",GetLastError());

return(false);

}

//--- set line color

ObjectSetInteger(0,name,OBJPROP_COLOR,clr);

//--- set line display style

ObjectSetInteger(0,name,OBJPROP_STYLE,style);

//--- set line width

ObjectSetInteger(0,name,OBJPROP_WIDTH,width);

ObjectSetInteger(0,name,OBJPROP_SELECTED,false);

//--- enable (true) or disable (false) the mode of continuation of the line's display to the right

ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);

//--- successful execution

return(true);

}

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

//| |

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

void CleanPoint(int i,double &first[],double &second[])

{

if((second!=EMPTY_VALUE) &&(second !=EMPTY_VALUE))

second=EMPTY_VALUE;

else

if((first!=EMPTY_VALUE) && (first!=EMPTY_VALUE) && (first==EMPTY_VALUE))

first=EMPTY_VALUE;

}

//

//

//

//

//

void PlotPoint(int i,double &first[],double &second[],double &from[])

{

if(first==EMPTY_VALUE)

{

if(first==EMPTY_VALUE)

{

first = from;

first = from;

second = EMPTY_VALUE;

}

else

{

second = from;

second = from;

first = EMPTY_VALUE;

}

}

else

{

first = from;

second = EMPTY_VALUE;

}

}

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

//---

 
Tartut:
Ho il prossimo problema. Il mio indicatore non cambia il valore della barra corrente. Devo aggiornare il grafico.

Provate così:

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

//| RSMA Histogram.mq4 |

//| |

//| |

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

#property copyright "Tartut"

#property link ""

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 Lime

#property indicator_minimum -35

#property indicator_maximum 35

#property indicator_level1 19

#property indicator_level2 -19

#property indicator_level3 0

//#property indicator_color2 Yellow

//#property indicator_color3 MediumOrchid

extern double OverSold=-19.0;

extern double OverBought=19.0;

extern int RSI_Period=9;

extern int RSI_Applied_Price=0;

extern int MA_Period=12;

extern int MA_Method=1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA

extern bool ShowArrows=true;

extern color OverSoldColor=Gold;

extern color OverBoughtColor = Gold;

extern string arrowsIdentifier = "RSMA arrows";

extern int arrowsWidth = 1;

extern int IDWindow=1;

extern string _Divergence="<>";

extern string _CBars="<>";

extern int CBars=99;

extern bool CheckDivergence=false;

extern bool CheckSlowDownMomentum=false;

extern string DivergenceIndentifier="RSMA Divergence";

double MA_Array[],RSI[],Histo[];

double trend[];

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

//| Custom indicator initialization function |

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

int init()

{

IndicatorBuffers(4);

//---- indicators setting

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);

SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1);

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

IndicatorShortName("RSMA Histogram");

SetIndexBuffer(0,Histo);

SetIndexLabel(0,"RSMA");

SetIndexBuffer(1,MA_Array);

SetIndexLabel(1,"MA("+MA_Period+")");

SetIndexBuffer(2,RSI);

SetIndexLabel(2,"RSI("+RSI_Period+")");

SetIndexBuffer(3,trend);

return(0);

}

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

//| |

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

int deinit()

{

deleteArrows();

fnDeleteAllDivergence();

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

int counted_bars=IndicatorCounted();

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

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

//---- indicator calculation

Comment(limit);

for(int i=0; i<limit; i++)

{

RSI=iRSI(NULL,0,RSI_Period,RSI_Applied_Price,i);

}

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

{

MA_Array=iMAOnArray(RSI,0,MA_Period,0,MA_Method,i);

}

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

{

Histo=RSI-MA_Array;

if(Histo>OverBought)

trend=1;

else if(Histo<OverSold)

trend=-1;

manageArrow(i);

}

if(CheckDivergence==true)

{

int x= CBars/3;

for(i=0; i<x; i++)

{

double open0=iOpen(NULL,0,i);

double close0= iClose(NULL,0,i);

double open1 = iOpen(NULL,0,i+1);

double close1= iClose(NULL,0,i+1);

double open2 = iOpen(NULL,0,i+2);

double close2 = iClose(NULL, 0, i+2);

bool momentum = true;

if(CheckSlowDownMomentum==true)

{

double bar0 = MathAbs(open0-close0);

double bar1 = MathAbs(open1-close1);

double bar2 = MathAbs(open2-close2);

if(bar0<bar1 && bar1<bar2)

momentum=true;

else

momentum=false;

}

//PUT

if(Histo<Histo && Histo<Histo && open0<close0 && open1<close1 && open2<close2 && momentum==true)

{

double high0 = iHigh(NULL, 0, i);

double high2 = iHigh(NULL, 0, i+2);

TrendCreate(DivergenceIndentifier+"Sub"+i,Time,Histo,Time,Histo,Red,STYLE_SOLID,1,IDWindow);

TrendCreate(DivergenceIndentifier+"Main"+i,Time,high2,Time,high0,Red,STYLE_SOLID,1,0);

}

else if(Histo>Histo && Histo>Histo && open0>close0 && open1>close1 && open2>close2 && momentum==true)

{

double low0 = iLow(NULL, 0, i);

double low2 = iLow(NULL, 0, i+2);

TrendCreate(DivergenceIndentifier+"Sub"+i,Time,Histo,Time,Histo,Red,STYLE_SOLID,1,IDWindow);

TrendCreate(DivergenceIndentifier+"Main"+i,Time,low2,Time,low0,Red,STYLE_SOLID,1,0);

}

}

}

return(0);

}

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

void manageArrow(int i)

{

if(ShowArrows)

{

deleteArrow(Time);

if(trend ==-1) drawArrow(i,OverBoughtColor,159,false);

if(trend == 1) drawArrow(i,OverSoldColor ,159,true );

}

}

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

//| |

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

void fnDeleteAllDivergence()

{

string lookFor=DivergenceIndentifier;

string objectName;

int lookForLength=StringLen(lookFor);

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

{

objectName=ObjectName(i);

if(StringSubstr(objectName,0,lookForLength)==lookFor) ObjectDelete(objectName);

}

}

//

//

//

//

//

void drawArrow(int i,color theColor,int theCode,bool up)

{

string name=arrowsIdentifier+":"+Time;

double gap=3.0*iATR(NULL,0,10,i)/4.0; //20

//

//

//

//

//

ObjectCreate(name,OBJ_ARROW,0,Time,0);

ObjectSet(name,OBJPROP_ARROWCODE,theCode);

ObjectSet(name,OBJPROP_COLOR,theColor);

ObjectSet(name,OBJPROP_WIDTH,arrowsWidth);

if(up)

ObjectSet(name,OBJPROP_PRICE1,High+gap);

else ObjectSet(name,OBJPROP_PRICE1,Low-gap);

}

//

//

//

//

//

void deleteArrows()

{

string lookFor = arrowsIdentifier+":";

int lookForLength = StringLen(lookFor);

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

{

string objectName=ObjectName(i);

if(StringSubstr(objectName,0,lookForLength)==lookFor) ObjectDelete(objectName);

}

}

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

//| |

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

void deleteArrow(datetime time)

{

string lookFor=arrowsIdentifier+":"+time; ObjectDelete(lookFor);

}

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

//| |

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

//

//

//

//

//

bool TrendCreate(string name="Line1",

datetime time1=0, // first point time

double price1=0, // first point price

datetime time2=0, // second point time

double price2=0, // second point price

const color clr=clrRed, // line color

const ENUM_LINE_STYLE style=STYLE_SOLID, // line style

const int width=1,

const int window=0 // line width // highlight to move

)

{

//--- reset the error value

ResetLastError();

//--- create a trend line by the given coordinates

if(!ObjectCreate(name,OBJ_TREND,window,time1,price1,time2,price2))

{

Print(__FUNCTION__,": failed to create a trend line! Error code = ",GetLastError());

return(false);

}

//--- set line color

ObjectSetInteger(0,name,OBJPROP_COLOR,clr);

//--- set line display style

ObjectSetInteger(0,name,OBJPROP_STYLE,style);

//--- set line width

ObjectSetInteger(0,name,OBJPROP_WIDTH,width);

ObjectSetInteger(0,name,OBJPROP_SELECTED,false);

//--- enable (true) or disable (false) the mode of continuation of the line's display to the right

ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);

//--- successful execution

return(true);

}

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

//| |

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

void CleanPoint(int i,double &first[],double &second[])

{

if((second!=EMPTY_VALUE) &&(second !=EMPTY_VALUE))

second=EMPTY_VALUE;

else

if((first!=EMPTY_VALUE) && (first!=EMPTY_VALUE) && (first==EMPTY_VALUE))

first=EMPTY_VALUE;

}

//

//

//

//

//

void PlotPoint(int i,double &first[],double &second[],double &from[])

{

if(first==EMPTY_VALUE)

{

if(first==EMPTY_VALUE)

{

first = from;

first = from;

second = EMPTY_VALUE;

}

else

{

second = from;

second = from;

first = EMPTY_VALUE;

}

}

else

{

first = from;

second = EMPTY_VALUE;

}

}

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

//---
 
mladen:

Prova così:

Sei il migliore Grazie

 

Ciao a tutti, qualcuno può per favore correggere questo indicatore per mostrare le barre rosse verso il basso come posso solo vedere le verdi verso l'alto. Grazie in anticipo. (Deltaforce Volume)

Inoltre potreste per favore aggiustare questo in modo che io possa regolare lo spessore delle barre. (Deltaforce) Grazie ancora

 

Ciao Mladen e Mr. Tools

Ho un problema e non ho idea di come farlo, forse con un indicatore o con EA, ma ne ho davvero bisogno, forse potete aiutarmi:

Ho bisogno di un sistema di ordini semi-automatico, voglio dire, ottengo manualmente il primo trade, "ordine a mercato" con SL e TP, se lo SL viene colpito il sistema crea un nuovo ordine nella direzione opposta con SL (per il nuovo ordine è l'entrata), l'entrata del primo trade è ora lo SL e TP che è sempre lo stesso valore in pip, ma vorrei mettere manualmente nel set-up, quanti lotti o mini lotti dovrebbero essere aperti nel trade progressivo, tipo martingala, ma non proprio..., fino a quando il TP viene colpito, il sistema dovrebbe creare nuovi ordini, quando il TP viene colpito il sistema si ferma o si chiude, fino a quando non metto manualmente il primo ordine di nuovo. Spero di non aver creato confusione nella spiegazione ;-)

C'è qualcosa di simile che posso usare?

Grazie mille

 
laborax:
Ciao Mladen e Mr. Tools

Ho un problema e non ho idea di come farlo, forse con un indicatore o con EA, ma ne ho davvero bisogno, forse potete aiutarmi:

Ho bisogno di un sistema di ordini semi-automatico, voglio dire, ottengo manualmente il primo trade, "ordine a mercato" con SL e TP, se lo SL viene colpito il sistema crea un nuovo ordine nella direzione opposta con SL (per il nuovo ordine è l'entrata), l'entrata del primo trade è ora lo SL e TP che è sempre lo stesso valore in pip, ma vorrei mettere manualmente nel set-up, quanti lotti o mini lotti dovrebbero essere aperti nel trade progressivo, tipo martingala, ma non proprio..., fino a quando il TP viene colpito, il sistema dovrebbe creare nuovi ordini, quando il TP viene colpito il sistema si ferma o si chiude, fino a quando non metto manualmente il primo ordine di nuovo. Spero di non aver creato confusione nella spiegazione ;-)

C'è qualcosa di simile che posso usare?

Grazie mille

laborax

Queste regole sono troppo vaghe per fare un EA basato su questo e, per quanto ne so, non esiste un EA del genere

 

Ho trovato questo EA, che è quello che stavo cercando... cosa ne pensi?

https://www.mql5.com/en/forum/184476

Motivazione: