Pergunte! - página 61

 

Pergunta de código

Favor desconsiderar o cargo. Este cenário fez o que eu precisava fazer. Obrigado por começar lá para nos ajudar.

Eu modifiquei um EA para trabalhar com vários métodos. Fiz algumas pesquisas, mas não consigo descobrir como adicionar o nome da EA ao campo de comentários ao abrir um pedido. Alguém pode me indicar a direção correta?

Espero que haja um simples comando de seqüência que eu possa integrar em qualquer EA que eu modifique para que as ordens sejam melhor organizadas ao executar mais de uma EA durante um teste.

Obrigado por seu tempo e perspicácia.

Aqui está uma das seções não modificadas que eu precisarei alterar para inserir o comentário da EA.

if(ObjectFind(BuyStop_TrendName) == 0)

{

SetObject("Active" + BuyStop_TrendName,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME1),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE1) + BuyStop_StepActive*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME2),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE2) + BuyStop_StepActive*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_COLOR));

SetObject("Prepare" + BuyStop_TrendName,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME1),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE1) - BuyStop_StepPrepare*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME2),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE2) - BuyStop_StepPrepare*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_COLOR));

vA = NormalizeDouble(ObjectGetValueByShift("Active"+BuyStop_TrendName,0),Digits);

vM = NormalizeDouble(ObjectGetValueByShift(BuyStop_TrendName,0),Digits);

vP = NormalizeDouble(ObjectGetValueByShift("Prepare"+BuyStop_TrendName,0),Digits);

sl = vA - BuyStop_StopLoss*Point;

tp = vA + BuyStop_TakeProfit*Point;

if(Ask = vP && OrderFind(MagicBuyStop) == false)

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

if(Ask = vP && OrderFind(MagicBuyStop) == true &&

glbOrderType == OP_BUYSTOP)

{

OrderSelect(glbOrderTicket, SELECT_BY_TICKET, MODE_TRADES);

if(vA != OrderOpenPrice())

if(OrderModify(glbOrderTicket, vA, sl, tp, 0, Green) == false)

Print("Err (", GetLastError(), ") Modify BuyStop Price= ", vA,

" SL= ", sl, " TP= ", tp);

}

if(Ask < vP && OrderFind(MagicBuyStop) == true &&

glbOrderType == OP_BUYSTOP && AutoClose==true)

{

OrderDelete(glbOrderTicket);

}

}

[/code]

I am not sure of the logic but can I just input the CommentName in the following location? I have not tested this but it compiles fine.

[code]

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"CommentName", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

Arquivos anexados:
 

Obrigado Coderguru por estar aqui para nós!

Tenho uma pergunta sobre Alertas.

Eu quero mudar o tipo de alerta neste código para que ele toque um arquivo wav que eu escolher e não tenha a janela popup comprar vender coisa. Basta tocar o arquivo wav quando o fractal se desvanecer.

Como deve ser o código. Anexei o indicador de alerta sFractals.

if(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1;

Alerta("sFractals (", Símbolo(), ", ", Período(), ") - BUY!!!");

}

}

if(PrevSignal >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

Alerta("sFractals (", Símbolo(), ", ", Período(), ") - VENDA!!!");

}

}

Arquivos anexados:
sfractals.mq4  8 kb
 
proverbs:
Não tenho certeza da lógica, mas posso simplesmente inserir o CommentName no seguinte local? Eu não testei isto, mas ele compila bem.

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"CommentName", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

Isso vai funcionar bem. Você também pode colocar uma variável de corda nesse lugar.

 
Drivefast:
Obrigado Coderguru por estar aqui para nós!

Tenho uma pergunta sobre os Alertas.

Eu quero mudar o tipo de alerta neste código para que ele toque um arquivo wav que eu escolher e não tenha a janela popup comprar vender coisa. Basta tocar o arquivo wav quando o fractal se desvanece.

Como deve ser o código. Anexei o indicador de alerta sFractals.

if(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1;

Alerta("sFractals (", Símbolo(), ", ", Período(), ") - BUY!!!");

}

}

if(PrevSignal >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

Alerta("sFractals (", Símbolo(), ", ", Período(), ") - VENDA!!!");

}

}

Acho que a CodersGuru morreu ou algo assim. Ele não está por perto há algum tempo.

De qualquer forma.... acrescente esta declaração:

PlaySound("alert.wav");

.... onde "alert.wav" é o nome do arquivo que você quer jogar.

 
ryanklefas:
Acho que a CodersGuru morreu ou algo assim. Ele não está por perto há algum tempo.

De qualquer forma.... acrescente esta declaração:

PlaySound("alert.wav");

.... onde "alert.wav" é o nome do arquivo que você quer jogar.

Obrigado por responder ao meu post.

Não tenho certeza sobre onde colocar PlaySound("alert.wav"); no código.

Posso simplesmente apagar esta parte? Alert("sFractals (", Symbol(), ", ", Period(), ") - BUY!!!");

Ou será que precisa ser algo assim?

PrevSignal = 1;

PlaySound("alert.wav");

Alert("sFractals (", Symbol(), ", ", Period(), ") - BUY!!!");

 

Sim. Basta substituir o alerta inteiro pelo som.

if(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1;

PlaySound("alert.wav");

}

}

if(PrevSignal >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

PlaySound("alert.wav");

}

}
 

Obrigado ryanklefas por toda a sua ajuda, ela funciona exatamente como eu quero que funcione agora.

 

Pergunte sobre a classificação

Eu tenho uma tabela de dados, bidimensional, armazenada em uma matriz bidimensional. Quero fazer alguma manipulação, como ordenar de acordo com qualquer coluna dessa tabela de dados.

A função ArraySort(), na instrução, pode ordenar arrays em sua 1ª dimensão. Não vejo como isso pode funcionar para mim.

Alguma sugestão sobre a ordenação da tabela de dados no MetaTrader?

 

Assessor Especialista em Comunicação entre nós

Olá,

quero saber se existe uma forma de comunicação entre os consultores especializados, digamos que tenho a EA A como estratégia principal

e EA B de backup como estratégia de backup

coloco-a em 2 pares diferentes.

quero acionar se a EA A estiver em posição de drawdown, iniciar a EA B...

quando o lucro acumulado para a EA A e EA B tiver atingido algum ponto-alvo...

fechar todas as posições da EA A e da EA B

isso é possível de fazer ?

 
veematics:
Olá,

quero saber se existe uma forma de comunicação entre os consultores especializados, digamos que tenho a EA A como estratégia principal

e EA B de backup como estratégia de backup

coloco-a em 2 pares diferentes.

quero acionar se a EA A estiver em posição de drawdown, iniciar a EA B...

quando o lucro acumulado para a EA A e EA B tiver atingido algum ponto-alvo...

fechar todas as posições da EA A e da EA B

é isso possível de fazer ?

Penso que variáveis globais seriam o que você está procurando. Você pode verificá-las na seção de referência do MetaEditor. Para visualizar suas variáveis globais atuais, pressione F3 no terminal MT4.