Pergunte! - página 16

 

mais alguns problemas

1. uma das coisas que notei nos resultados foi que se uma negociação fosse aberta, não abriria outra até que a negociação anterior estivesse completa, você tem alguma maneira de mudar isso? fazer negociações sobrepostas?

(por favor poste um segundo arquivo com as trocas sobrepostas se você puder, eu ainda preciso testar as duas)

2. Pergunta simples,

se o testador não mostra resultados quando você insere um saldo inicial de 500 ou 1000, mas faz em 3.000 ou mais, o que isso significa exatamente, (significa que você vai à falência nas negociações com esse saldo inicial baixo?)

 

Como você sai do loop?!

Tenho adicionado alguns de meus próprios alertas e finalmente obtive algum sucesso, mas muitas vezes eu mesmo o faço um loop de alerta sempre terminando e a única maneira de quebrá-lo é forçando o MT4 a fechar, como posso colocar um break lá dentro, ou há um break de teclado que eu possa usar?

do que ks para qualquer ajuda com minhas perguntas básicas

 

Você poderia/deveria me mostrar isto...

a programação ainda me confunde...

Será que você poderia me acompanhar através de algo muito básico e me mostrar como o código deveria ser para que isso acontecesse...

duas médias móveis se cruzam...entra em uma ordem com uma parada móvel...

//---- input parameters

extern double lots=1.0;

extern int MA1=1;

extern int MA2=5;

extern int trailingstop=8;

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

//| expert initialization function |

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

int init()

{

//----

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| expert start function |

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

int start()

{

//----

//----

return(0);

}

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

Usei esta utilidade e criei esta....

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

//| This MQL is generated by Expert Advisor Builder |

//| http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ |

//| |

//| In no event will author be liable for any damages whatsoever. |

//| Use at your own risk. |

//| |

//| Please do not remove this header. |

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

#property copyright "Expert Advisor Builder"

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

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = False;

extern double Lots = 1.0;

extern int Slippage = 0;

extern bool StopLossMode = False;

extern int StopLoss = 10;

extern bool TakeProfitMode = False;

extern int TakeProfit = 8;

extern bool TrailingStopMode = True;

extern int TrailingStop = 10;

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#define SIGNAL_CLOSESELL 4

int BarCount;

int Current;

bool TickCheck = False;

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

//| expert initialization function |

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

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);

}

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

//| expert deinitialization function |

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

int deinit() {

return(0);

}

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

//| expert start function |

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

int start() {

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

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

Total = OrdersTotal();

Order = SIGNAL_NONE;

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

//| Variable Begin |

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

double Buy1_1 = iClose("EURUSD", PERIOD_M1, Current + 0);

double Buy1_2 = iMA("EURUSD", PERIOD_M1, 5, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell1_1 = iClose("EURUSD", PERIOD_M1, Current + 0);

double Sell1_2 = iMA("EURUSD", PERIOD_M1, 5, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

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

//| Variable End |

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

//Check position

bool IsTrade = False;

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

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

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

IsTrade = True;

if(OrderType() == OP_BUY) {

//Close

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

//| Signal Begin(Exit Buy) |

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

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

//| Signal End(Exit Buy) |

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

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 = False;

continue;

}

//Trailing stop

if(TrailingStopMode && TrailingStop > 0) {

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

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

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

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

} else {

//Close

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

//| Signal Begin(Exit Sell) |

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

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

//| Signal End(Exit Sell) |

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

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 = False;

continue;

}

//Trailing stop

if(TrailingStopMode && TrailingStop > 0) {

if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {

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

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

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

}

}

}

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

//| Signal Begin(Entry) |

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

if (Buy1_1 > Buy1_2) Order = SIGNAL_BUY;

if (Sell1_1 < Sell1_2) Order = SIGNAL_SELL;

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

//| Signal End |

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

//Buy

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

if(!IsTrade) {

//Check free margin

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

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

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

if(Ticket > 0) {

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

Print("BUY order opened : ", OrderOpenPrice());

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

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

//Sell

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

if(!IsTrade) {

//Check free margin

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

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (StopLossMode) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;

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

if(Ticket > 0) {

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

Print("SELL order opened : ", OrderOpenPrice());

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

} else {

Print("Error opening SELL order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

if (!EachTickMode) BarCount = Bars;

return(0);

}

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

O problema é que quando funciona no testador de estratégia, não dá nenhum resultado.

 

Oh, eu descobri! muito obrigado por seu tutorial

 
skorcht:
Tenho duas perguntas simples, acho eu.

como posso fazer o heiken ashi As velas têm uma espessura de 5 por padrão ao invés de 3? toda vez que eu trago uma nova tabela, elas voltam a 3.

Além disso, como posso fazer uma marca acima ou abaixo da vela, dependendo do valor de um indicador RSI?

Eu entendo um pouco de programação, mas não sei a sintaxe disso...então aja como se eu não soubesse nada

Muito obrigado...se eu descobrir alguma coisa, eu vou postar

PS que o construtor consultor especializado é NICE, existe e INDICADOR também construtor? isso seria incrível

Eu só o consertei o Heiken Ashi.

Arquivos anexados:
 

Novo - Perguntas - Necessidade de ajuda

Eu sou novo neste fórum. Gostaria de saber se alguém pode me dar alguma informação sobre o valor da Seção Elite (além do campo de vendas com praticamente nenhuma informação sobre o link acima).

Também tentei enviar uma pergunta da página web para a qual o link acima me levou, mas o formulário continua mostrando que um dos campos está em branco. Esse campo é o campo Prioritário e não há nada na caixa drop down (está tudo em branco) e não há maneira de eu ter um valor nesse campo. Portanto, não posso apresentar nenhuma pergunta dessa maneira.

DD

 

Alguém mais já experimentou isso? Estou testando meu sistema usando dados alpari, eu teria erro 4107 preço inválido e 131 volume inválido. O 4107 foi gerado porque o preço que ele recebe é como 4 dígitos decimais a mais do que o par de moedas. Estou surpreso por receber 4107, pois o preço que eu passo para OrderSend() é o Bid and Ask pré-definido. Também acrescentei um Comentário(Bid, " ", Ask); antes da OrderSend() para ver o que Bid e Ask estavam retornando. E no Comentário() era a precisão decimal adequada, porém OrderSend() ainda geraria o erro. Acabei atribuindo o valor de Bid/Ask a uma variável e usando NormalizeDouble() sobre a variável e depois a passaria para OrderSend() e isto funciona.

Entretanto, eu ainda recebo a 131 e não sei de uma solução para isso.

PipChick, pessoalmente, acho que não vale a pena entrar na seção de elite.

 

Novato.

Eu conheço alguns c++, mas estou lutando com um código muito básico.

O que eu quero:

O preço é 1,2788. Se ele subir até 10 pips, eu quero comprar. Se ele se mover para baixo 10 pips eu quero vender.

Eu tenho o código certo?

OrderSend(Symbol(),OP_BUYSTOP,1,Ask+10*Point,slippage,

(Ask+10*Point)-10*Point,

( Perguntar+10*Ponto)+200*Ponto, "Meu comentário de pedido",0,0,Verde);

OrderSend(Symbol(),OP_SELLSTOP,1,Bid-10*Point,slippage,

(Bid-10*Point)+10*Point,

(Licitação -10*Ponto)-200*Ponto, "Meu comentário de pedido",0,0,Verde);

Estive lendo http://www.metatrader.info/node/34, mas estou perdido. Obrigado por sua paciência.

 

Hi,

Meu problema: MT3,

Não está funcionando. Por que não está funcionando?

Obrigado, Bongo.

sell=false;

comprar=falso;

se ((C[1]>O[1])<O[0]) então { comprar=verdadeiro; vender=falso; }

se ((C[1]O[0]) então { vender=verdadeiro; comprar=falso; }

Razão: