Ajuda na codificação - página 477

 

Olá programador mestre,

Estou tentando escrever um indicador PPO_alt que é o gráfico 1 nas figuras a e b, mas não é plotado corretamente no modo de tempo real

por isso tento modificar o PPO orignal (gráfico 2), mas ele ainda não está correto também. Por favor, dê uma olhada e poderia consertar os dois.

Obrigado de antemão.

PS. Por favor, faça mais perguntas se não estiver claro para você.

Arquivos anexados:
ppo_mod.rar  80 kb
 
download38:
Olá mestre codificador,

Estou tentando escrever um indicador PPO_alt que é o gráfico 1 nas figuras a e b, mas não é plotado corretamente no modo de tempo real

por isso tento modificar o PPO orignal (gráfico 2), mas ele ainda não está correto também. Por favor, dê uma olhada e poderia consertar os dois.

Obrigado de antemão.

PS. Por favor, faça mais perguntas se não estiver claro para você.

Por que você está fazendo exatamente a mesma coisa em duas voltas?

 

Olá Mladen

precisam de ajuda

não receber cotação ao vivo por favor ajude

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

//| função de iniciação de especialista |

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

#janela_do_cartão_indicador de propriedade

duplo ExtMapBuffer1[];

externo int RSI_periódico = 14;

nível RSI_externo int = 50;

cor externa BuyColor = clrLime;

cor externa SellColor = clrRed;

extern int horizontal = 20;

Exterior int vertical = 50;

extern int shift = 1;

extern double percentage = 0,25;

extern string fontmode = "Arial";

tamanho da fonte int externo = 10;

cor externa fontcolor = clrSkyBlue;

espaçamento entre colunas int externo = 100;

int init()

{

//----

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

//----

retorno(0);

}

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

//| função de desinicialização especializada |

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

int deinit()

{

//----

ObjetosDeleteAll();

ObjectDelete("INFO");

//----

retorno(0);

}

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

//| função de início especializado |

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

int start()

{

//----

string symlist2[] = {"NIFTY", "B.NIFTY", "XAUUSD", "GOLD"};

símbolo de corda;

string info2[] = {MODE_HIGH,MODE_LOW,MODE_BID,MODE_ASK};

infolabel de cadeia de caracteres;

string timeText[] = {"DayHigh", "DayLow", "Bid", "Ask"};

fonte de corda = "Terminal";

int counted_bars=IndicatorCounted();

int symlimit = ArraySize(symlist2);

int timelimit = ArraySize(info2);

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

{

símbolo = symlist2;

Display("symlabel" + símbolo + i, horizontal, vertical);

ObjectSetText("symlabel" + símbolo + i, "SYMBOL", tamanho da fonte, fonte, Pink);

Display("sym" + símbolo + i, horizontal,vertical +((i+1)*18)); ObjectSetText("symlabel" + símbolo + i, horizontal,vertical +((i+1)*18));

ObjectSetText("sym" + símbolo + i, "" + símbolo + "", tamanho da fonte, fonte, Amarelo);

for(int j=0;j<timelimit;j++)

{

infolabel = info2[j];

Display("infolabel" + j, horizontal+((j+1)*100),vertical);

ObjectSetText("infolabel" + j, timeText[j], tamanho da fonte, fonte, Pink);

Display("infolabel2" + símbolo + ((j+1)* espaçamento de colunas), horizontal+((j+1)*100),vertical +((i+1)*18)));

ObjectSetText("infolabel2" +símbolo + ((j+1)*espaçamento de colunas), infolabel , tamanho da fonte, fonte, fontcolor);

}

}

//----

retorno(0);

}

Display vazio(nome da corda, int x, int y)

{

ObjectCreate(nome, OBJ_LABEL, 0, 0, 0, 0);

ObjectSet(nome, OBJPROP_CORNER, 0);

ObjectSet(nome, OBJPROP_XDISTANCE, x);

ObjectSet(nome, OBJPROP_YDISTANCE, y);

ObjectSet(nome, OBJPROP_BACK, FALSE);

}

 
nbtrading:
Por que você está fazendo exatamente a mesma coisa em duas voltas?

oh, eu só quero traçar uma linha com pontos para facilitar a sua visualização.

A linha importante é a multielevada com a qual tenho problemas.

Obrigado por perguntar.

 

Algoritmo "Close BUY" e "Close SELL".

Olá Pro-Coders,

Estou me perguntando se alguém poderia rever o algoritmo "Close BUY" e "Close SELL".

A EA não está abrindo nova posição depois que a interrupção da perda ou mudança de tendência tiver ocorrido.

O sistema está apenas fechando a posição, a próxima posição será optando por uma nova mudança de tendência, o que leva à perda de oportunidades.

(Por favor, veja a captura de tela).

void CheckForClose()

{

RefreshRates();

duplo cl_diCustom0 = iCustom(s_símbolo,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,0,bar);

duplo cl_diCustom1 = iCustom(s_símbolo,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar);

duplo cl_diCustom2 = iCustom(s_símbolo,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar);

duplo cl_diCustom3 = iCustom(s_símbolo,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar+1);

double cl_diMA3 = iMA(s_símbolo,MaTimeframe,MaPeriod,0,MaType,PRICE_CLOSE,bar);

double cl_diMA4 = iMA(s_símbolo,MaTimeframe,MaPeriod,0,MaType,PRICE_CLOSE,bar+1);

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

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break;

if(OrderMagicNumber()!= MAGIC) continua;

if(OrderSymbol() != s_symbol) continue;

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

//| Fechar COMPRA |

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

if(cl_diCustom0!=cl_diCustom1) // Verificar tendência

{

if(OrderType()==OP_BUY)

{

if(cl_diCustom0<cl_diCustom1 && cl_diCustom2=cl_diMA4)

{

bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseCloseBuy);

if(buyClose==false)

{

int ErrorCode = GetLastError();

string ErrDesc = ErrorDescription(ErrorCode);

string ErrAlert= StringConcatenate("Fechar Pedido de Compra - Erro ",ErrorCode,": ",ErrorDesc);

if(ShowAlerts == true) Alert(ErrAlert);

string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)", muitos: ",OrderLots()"," Ticket: ",OrderTicket());

Print(ErrLog);

}

pausa;

} // mod

}

}

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

//| Fechar a venda |

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

if(cl_diCustom0!=cl_diCustom1)

{

if(OrderType()==OP_SELL)

{

if(cl_diCustom0>cl_diCustom1 && cl_diCustom2>cl_diMA3 && cl_diCustom3<=cl_diMA4)

{

bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell);

if(sellClose == falso)

{

ErrorCode = GetLastError();

ErrDesc = ErrorDescription(ErrorCode);

ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode",": ",ErrDesc);

if(ShowAlerts===verdadeiro) Alert(ErrAlert);

ErrLog=StringConcatenate("Perguntar: ",MarketInfo(s_symbol,MODE_ASK)", muitos: ",OrderLots()"," Ticket: ",OrderTicket()),";

Print(ErrLog);

}

pausa;

} // mod

}

}

}

}

Arquivos anexados:
 
tfi_markets:
Olá Pro-Coders,

Estou me perguntando se alguém poderia rever o algoritmo "Close BUY" e "Close SELL".

A EA não está abrindo nova posição depois que a interrupção da perda ou mudança de tendência tiver ocorrido.

O sistema está apenas fechando a posição, a próxima posição será optando por uma nova mudança de tendência, o que leva à perda de oportunidades.

(Por favor, veja a captura de tela).

Mude isto :

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

a isto

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

 
mladen:
Informe-nos o que aconteceu. Talvez seja apenas um problema de construção de um metatrader específico (uso atualmente o build 788).

construção de mina 765

Pruchik forneceu esta versão aqui,

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

mas precisa de um roteiro extra para remover as linhas do indicador Gann sq9 se ele for alterado, deixando linhas no gráfico.

 

precisa de ajuda para esta edição de informações de exibição......

vegadigitalco:
Olá Mladen & All senior Codder

precisa de ajuda para esta edição de informações de exibição......

não obtendo cotação ao vivo por favor, ajude

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

//| função de iniciação de especialista |

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

#janela_do_cartão_indicador de propriedade

duplo ExtMapBuffer1[];

externo int RSI_periódico = 14;

nível RSI_externo int = 50;

cor externa BuyColor = clrLime;

cor externa SellColor = clrRed;

extern int horizontal = 20;

Exterior int vertical = 50;

extern int shift = 1;

extern double percentage = 0,25;

extern string fontmode = "Arial";

tamanho da fonte int externo = 10;

cor externa fontcolor = clrSkyBlue;

espaçamento entre colunas int externo = 100;

int init()

{

//----

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

//----

retorno(0);

}

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

//| função de desinicialização especializada |

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

int deinit()

{

//----

ObjetosDeleteAll();

ObjectDelete("INFO");

//----

retorno(0);

}

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

//| função de início especializado |

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

int start()

{

//----

string symlist2[] = {"NIFTY", "B.NIFTY", "XAUUSD", "GOLD"};

símbolo de corda;

string info2[] = {MODE_HIGH,MODE_LOW,MODE_BID,MODE_ASK};

infolabel de cadeia de caracteres;

string timeText[] = {"DayHigh", "DayLow", "Bid", "Ask"};

fonte de corda = "Terminal";

int counted_bars=IndicatorCounted();

int symlimit = ArraySize(symlist2);

int timelimit = ArraySize(info2);

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

{

símbolo = symlist2;

Display("symlabel" + símbolo + i, horizontal, vertical);

ObjectSetText("symlabel" + símbolo + i, "SYMBOL", tamanho da fonte, fonte, Pink);

Display("sym" + símbolo + i, horizontal,vertical +((i+1)*18)); ObjectSetText("symlabel" + símbolo + i, horizontal,vertical +((i+1)*18));

ObjectSetText("sym" + símbolo + i, "" + símbolo + "", tamanho da fonte, fonte, Amarelo);

for(int j=0;j<timelimit;j++)

{

infolabel = info2[j];

Display("infolabel" + j, horizontal+((j+1)*100),vertical);

ObjectSetText("infolabel" + j, timeText[j], tamanho da fonte, fonte, Pink);

Display("infolabel2" + símbolo + ((j+1)* espaçamento de colunas), horizontal+((j+1)*100),vertical +((i+1)*18)));

ObjectSetText("infolabel2" +símbolo + ((j+1)*espaçamento de colunas), infolabel , tamanho da fonte, fonte, fontcolor);

}

}

//----

retorno(0);

}

Display vazio(nome da corda, int x, int y)

{

ObjectCreate(nome, OBJ_LABEL, 0, 0, 0, 0);

ObjectSet(nome, OBJPROP_CORNER, 0);

ObjectSet(nome, OBJPROP_XDISTANCE, x);

ObjectSet(nome, OBJPROP_YDISTANCE, y);

ObjectSet(nome, OBJPROP_BACK, FALSE);

}
 

Oi pessoal, tenho um pequeno pedido... tenho tentado escrever uma função que lê de um arquivo de texto e retornar seus valores para uma matriz de caracteres... o arquivo de texto é formado por várias linhas cada uma delas é um nome de par, exceto a primeira linha que é o número total de pares

Por ex:

7

CADJPY

CHFJPY

EURJPY

GBPJPY

NZDJPY

USDJPY

AUDJPY

encontrei no site de metaquotas o seguinte código mas estou preso...gostaria de criar uma matriz de caracteres e depois de ler a primeira linha do texto redimensioná-la para este valor e depois preenchê-la com o nome dos pares...alguém pode me ajudar muito por favor!?

int handle, NL,i,pos[];

string str,word;

handle=FileOpen("test.txt",FILE_READ);//try to open file

if(handle==-1)return(0);// if not exist

if(FileSize(handle)==0){FileClose(handle); return(0); } //if empty

while(!FileIsEnding(handle))//read file to the end by paragraph. if you have only one string, omit it

{

str=FileReadString(handle);//read one paragraph to the string variable

if(str!="")//if string not empty

{

NL=0;

for(i=0;i<StringLen(str);i++)

{

if(StringGetChar(str,i)==10)// look for newline (Charcode:10) only

{

NL++;//yes, we found one more newline

ArrayResize(pos,NL);//increase array

pos[NL-1]=i;//write the number of newline position to array

}

}//now we have array with numbers of positions of all newline

for(i=0;i<=NL;i++)//start to read elements of string

{

if(i==0) word=StringSubstr(str,0,pos[0]);//the first element of string (in this case is the number 7)

else word=StringSubstr(str,pos+1,pos-pos-1);

}

}

}

FileClose(handle); //close file

return(0);

 
download38:
Olá programador mestre,

Estou tentando escrever um indicador PPO_alt que é o gráfico 1 nas figuras a e b, mas não é plotado corretamente no modo de tempo real

por isso tento modificar o PPO orignal (gráfico 2), mas ele ainda não está correto também. Por favor, dê uma olhada e poderia consertar os dois.

Obrigado de antemão.

PS. Por favor, faça mais perguntas se não estiver claro para você.

Alguém poderia explicar a diferença entre for(i=0; i=0; i--) e quando os estamos usando?

Obrigado de antemão.