#property copyright"Copyright 2010, MetaQuotes Software Corp."#property link"http://www.mql5.com"#property version"1.00"//-------------------------------------------------------------------//-------------------------------------------------------------------#include <Trade\Trade.mqh>
//--- input parametersinputint StopLoss=-100; // Stop Loss$//input int TakeProfit=100; // Take Profit//input int KD_Period=9; // KD Periodinputint K_Period=9; // K Periodinputint D_Period=3; // D Period//input int MA_Period=8; // Moving Average Periodinputint EA_Magic=12345; // EA Magic Number//input double Adx_Min=22.0; // Minimum ADX Value//---//---input double Lot=0.01; // Lots to Tradeinputdouble MaxPosition=3.00; //Max positioninputdouble P1=0.12; //P1 position1inputdouble P2=0.32;
inputdouble P3=0.77;
inputdouble P4=1.92;
inputdouble P5=2.85;
inputdouble P6=3.57;
//inputdouble PF1=10; //PF1 profit1inputdouble PF2=50;
inputdouble PF3=100;
inputdouble PF4=500;
inputdouble PF5=800;
inputdouble PF6=1500;
////--- Other parametersint KDHandle; // handle for our stochastic indicator//int maHandle; // handle for our Moving Average indicatordouble K[],D[]; // Dynamic arrays to hold the values of K,D values for each bars//double maVal[]; // Dynamic array to hold the values of Moving Average for each barsdouble p_close; // Variable to store the close value of a barint STP, TKP; // To be used for Stop Loss & Take Profit valuesdouble TTL_profit; //to be used for Total profit//double hisBuyLot=0.05;//double hisSellLot=0.05;double TTLBuy_position;
double TTLSell_position;
int Buytimes; //to be use for buy timesint Selltimes; // to be used for sell timesbool special_close_p=false;
double special_profit=0;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- Get handle for KD indicator
KDHandle=iStochastic(NULL,0,K_Period,D_Period,3,MODE_SMA,STO_LOWHIGH);
//--- Get the handle for Moving Average indicator// maHandle=iMA(_Symbol,_Period,MA_Period,0,MODE_EMA,PRICE_CLOSE);//--- What if handle returns Invalid Handleif(KDHandle<0)
{
Alert("Error Creating Handles for indicators - error: ",GetLastError(),"!!");
return(-1);
}
//--- Let us handle currency pairs with 5 or 3 digit prices instead of 4//STP = StopLoss;//TKP = TakeProfit;//if(_Digits==5 || _Digits==3)// {// STP = STP*10;// TKP = TKP*10;// }return(0);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//--- Release our indicator handlesIndicatorRelease(KDHandle);
// IndicatorRelease(maHandle);
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
//--- Do we have enough bars to work withif(Bars(_Symbol,_Period)<60) // if total bars is less than 60 bars
{
Alert("We have less than 60 bars, EA will now exit!!");
return;
}
// We will use the static Old_Time variable to serve the bar time.// At each OnTick execution we will check the current bar time with the saved one.// If the bar time isn't equal to the saved time, it indicates that we have a new tick.staticdatetime Old_Time;
datetime New_Time[1];
bool IsNewBar=false;
// copying the last bar time to the element New_Time[0]int copied=CopyTime(_Symbol,_Period,0,1,New_Time);
if(copied>0) // ok, the data has been copied successfully
{
if(Old_Time!=New_Time[0]) // if old time isn't equal to new bar time
{
IsNewBar=true; // if it isn't a first call, the new bar has appearedif(MQL5InfoInteger(MQL5_DEBUGGING)) Print("We have new bar here ",New_Time[0]," old time was ",Old_Time);
Old_Time=New_Time[0]; // saving bar time
}
}
else
{
Alert("Error in copying historical times data, error =",GetLastError());
ResetLastError();
return;
}
//--- EA should only check for new trade if we have a new barif(IsNewBar==false)
{
return;
}
//--- Do we have enough bars to work withint Mybars=Bars(_Symbol,_Period);
if(Mybars<60) // if total bars is less than 60 bars
{
Alert("We have less than 60 bars, EA will now exit!!");
return;
}
//--- Define some MQL5 Structures we will use for our tradeMqlTick latest_price; // To be used for getting recent/latest price quotesMqlTradeRequest mrequest; // To be used for sending our trade requestsMqlTradeResult mresult; // To be used to get our trade resultsMqlRates mrate[]; // To be used to store the prices, volumes and spread of each barZeroMemory(mrequest); // Initialization of mrequest structure/*
Let's make sure our arrays values for the Rates, KD Values
is store serially similar to the timeseries array
*/// the rates arraysArraySetAsSeries(mrate,true);
// the KD Kvalues arrayArraySetAsSeries(K,true);
// the KD Dvalues arrayArraySetAsSeries(D,true);
// the ADX values arrays// ArraySetAsSeries(adxVal,true);// the MA-8 values arrays// ArraySetAsSeries(maVal,true);//--- Get the last price quote using the MQL5 MqlTick Structureif(!SymbolInfoTick(_Symbol,latest_price))
{
Alert("Error getting the latest price quote - error:",GetLastError(),"!!");
return;
}
//--- Get the details of the latest 3 bars,default period,if(CopyRates(_Symbol,_Period,0,3,mrate)<0)
{
Alert("Error copying rates/history data - error:",GetLastError(),"!!");
ResetLastError();
return;
}
//--- Copy the new values of our indicators to buffers (arrays) using the handleif(CopyBuffer(KDHandle,0,0,2,K)<0 || CopyBuffer(KDHandle,1,0,2,D)<0)
{
Alert("Error copying Stochastic KD indicator Buffers - error:",GetLastError(),"!!");
ResetLastError();
return;
}
// double Buy_order=0.02; //Buy order double Sell_order=0.02;
//--- we have no errors, so continue//--- Do we have positions opened already?bool Buy_opened=false; // variable to hold the result of Buy opened positionbool Sell_opened=false; // variables to hold the result of Sell opened positionif(PositionSelect(_Symbol)==true) // we have an opened position
{
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{
Buy_opened=true; //It is a Buy//Print("here - " , PositionsTotal());Print("1-Buy_opened - Total Buy position is ", PositionGetDouble(POSITION_VOLUME));
TTLBuy_position=PositionGetDouble(POSITION_VOLUME);
}
elseif(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
{
Sell_opened=true; // It is a Sell//Print("here - " , PositionsTotal());Print("1-Sell_opened - Total Sell position is ", PositionGetDouble(POSITION_VOLUME));
TTLSell_position=PositionGetDouble(POSITION_VOLUME);
}
}
// Copy the bar close price for the previous bar prior to the current bar, that is Bar 1
p_close=mrate[1].close; // bar 1 close price/*
1. Check for a long/Buy Setup : k/d cross 20
*///--- Declare bool type variables to hold our Buy Conditionsbool Buy_Condition_1 = (K[0]>=D[0] && K[1]<=D[1]); // k>=D and K1<=D1bool Buy_Condition_2 = (K[1]<=20 && D[0]<=20); // k1<=20 and d<=20//--- Check buy condition if(Buy_Condition_1 && Buy_Condition_2)
{
Print("Buy-1:When buy OK, K0 is:",K[0]," D0 is:",D[0]," K1 is:",K[1]," D1 is:",D[1]);
Eu imprimo o cache destas variáveis e eu disse antes, é o mesmo, no momento em que deveria ser enviado o sinal, mas o valor K / D está errado, mas olha programa é corrente, se este é um bug na MQL5 fazer?
Eu imprimo o cache destas variáveis e eu disse antes, é o mesmo, no momento em que deveria ser enviado o sinal, mas o valor K / D está errado, mas olha programa é corrente, se este é um bug na MQL5 fazer?
A pergunta é uma pergunta básica, há algum problema em verificar o tempo de barra na parte abaixo?
//--- Do we have enough bars to work withif(Bars(_Symbol,_Period)<60) // if total bars is less than 60 bars
{
Alert("We have less than 60 bars, EA will now exit!!");
return;
}
// We will use the static Old_Time variable to serve the bar time.// At each OnTick execution we will check the current bar time with the saved one.// If the bar time isn't equal to the saved time, it indicates that we have a new tick.staticdatetime Old_Time;
datetime New_Time[1];
bool IsNewBar=false;
// copying the last bar time to the element New_Time[0]int copied=CopyTime(_Symbol,_Period,0,1,New_Time);
if(copied>0) // ok, the data has been copied successfully
{
if(Old_Time!=New_Time[0]) // if old time isn't equal to new bar time
{
IsNewBar=true; // if it isn't a first call, the new bar has appearedif(MQL5InfoInteger(MQL5_DEBUGGING)) Print("We have new bar here ",New_Time[0]," old time was ",Old_Time);
Old_Time=New_Time[0]; // saving bar time
}
}
else
{
Alert("Error in copying historical times data, error =",GetLastError());
ResetLastError();
return;
}
//--- EA should only check for new trade if we have a new barif(IsNewBar==false)
{
return;
}
//--- Do we have enough bars to work withint Mybars=Bars(_Symbol,_Period);
if(Mybars<60) // if total bars is less than 60 bars
{
Alert("We have less than 60 bars, EA will now exit!!");
return;
}
eu verifiquei sua outra resposta, talvez você esteja certo:Sim, sinal em vela fechada é melhor, pois sinal em corrente pode ser sinal falso. Embora haja comerciantes que negociam em velas abertas, provavelmente com alguns filtros.
Uma tendência de alta é composta por altos e baixos mais altos. Os comerciantes podem usar os estocásticos para encontrar um excelente risco para recompensar as entradas naqueles pontos baixos de apoio na tendência.
Uma tendência de baixa é composta de altas mais baixas e baixas mais baixas. Os negociadores Forex podem usar os Estocásticos para encontrar um excelente risco para recompensar as entradas nestes pontos de resistência altos.
Os estocásticos podem ser usados para alertar um negociador forex para apertar paradas, reduzir o tamanho da posição ou ter lucro uma vez em uma negociação de tendência.
De longe, os comerciantes que comercializam na direção da tendência diária predominante têm uma porcentagem maior de sucesso do que aqueles que comercializam a tendência contrária. Uma das maiores atrações do mercado Forex é caracterizada por longas tendências que oferecem aos negociadores o potencial de fazer centenas de pips se eles cronometraram suas entradas com precisão e usaram paradas protetoras para limitar o risco.
Mas como os comerciantes podem encontrar onde entrar com um risco para obter o máximo de lucro?
O mantra, "a tendência é seu amigo até o fim", pode ser encontrado em muitos livros de negociação, mas parece que muitos comerciantes forex não fizeram da tendência seu amigo e, em alguns casos, a tendência se tornou o inimigo. Ao invés de estar no lado receptor daqueles pips oferecidos aos comerciantes que entraram corretamente na tendência, muitos comerciantes estiveram no lado "doador" do comércio perdendo pips enquanto lutavam contra a tendência.
Como as pessoas se voltaram para os serviços de encontros on-line para encontrar seu par ideal, os comerciantes forex podem recorrer aos estocásticos como uma forma de fazer da tendência o seu amigo novamente.
Em uma tendência ascendente em um gráfico diário, as linhas estocásticas %K e %D movendo-se abaixo da linha de referência horizontal '20' e voltando acima da linha 20 indicam que a correção de tomada de lucro está chegando ao fim. O cruzamento estocástico para cima também nos diz que os compradores estão começando a entrar no mercado novamente. Além disso, isto mostra que há um bom suporte.
Como negociar a tendência usando os estocásticos
Paciência é o nome do jogo quando se tenta negociar com a tendência. Entrar na tendência muito cedo pode expor os comerciantes a grandes drawdowns. Entrar tarde demais reduz a quantidade de lucro antes que o swing seja completado.
Use o indicador estocástico para descobrir que a entrada "Goldilocks" de não muito cedo e não muito tarde. Uma vez encontrada uma forte tendência de alta, aguarde que os estocásticos com as configurações de 15, 5, 5 se movam para a região sobre-vendida abaixo da linha de referência horizontal de 20. Em seguida, aguarde que as linhas %K e %D se movam para trás acima das 20 linhas. Entrar longo com uma parada colocada alguns pips abaixo da última baixa. Defina um limite para pelo menos o dobro do tamanho da parada.
Uma vez em uma posição de tendência de alta, os comerciantes tentarão espremer o máximo de lucro possível. Os comerciantes geralmente obtêm lucros em sua posição aberta ou o rastro pára quando os estocásticos se movem para a região de sobre-compra. É importante notar que um par de moedas estrangeiras pode continuar a fazer novos máximos, mesmo que os estocásticos estejam na região de sobre-compra.
Portanto, da próxima vez que você vir uma tendência e não souber como fazer dela seu "amigo", deixe que o indicador dos estocásticos lhe apresente! Uma vez que estas oscilações são destacadas pelos estochásticos, a parada de colocação também se torna mais fácil. Os cruzamentos estocásticos em uma tendência ascendente podem ajudá-lo a identificar suas entradas para se juntar à tendência principal.
Isto é muito bom EA para iniciantes - para os comerciantes que estão aprendendo o indicador estocástico sobre como ele funciona. O EA está negociando nos níveis de sobre-compra/sobre-vendido do indicador estocástico com os seguintes parâmetros que foram codificados para estar dentro deste EA:
os parâmetros do indicador estocástico que foram codificados dentro deste EA: 5/3/3
níveis sobre-comprados/sobre-vendidos a serem codificados na EA: 80/20
"Advisor analisa as leituras do indicador Stochastic tem, sinal para a compra é a interseção das linhas principais e de sinal indicador na zona de sobre-venda, um sinal para a interseção das vendas é o indicador principal e linhas de sinal na zona de sobre-compra".
O codificador propôs um arquivo de conjunto para este EA, de modo que podemos usar este EA em EURUSD M15 de acordo com este arquivo/parâmetros de conjunto.
Eu testei o EA apenas para ver como ele funciona - por favor, encontre os resultados dos testes e alguns gráficos com as idéias sobre os níveis de overbought/sobrebold:
Este livro é uma coleção de exercícios que cobrem todos os principais tópicos da moderna teoria dos processos estocásticos e suas aplicações, incluindo finanças, matemática atuarial, teoria das filas de espera e teoria dos riscos.
O objetivo deste livro é fornecer ao leitor o material teórico e prático necessário para o entendimento mais profundo dos principais tópicos da teoria dos processos estocásticos e seus campos relacionados.
O livro é dividido em capítulos de acordo com os vários tópicos. Cada capítulo contém problemas, dicas, soluções, assim como uma parte teórica autônoma que dá todo o material necessário para a solução dos problemas. Referências à literatura também são dadas.
Os exercícios têm vários níveis de complexidade e variam de simples, úteis para os estudantes que estudam noções básicas e técnicas, a exercícios muito avançados que revelam alguns fatos teóricos e construções importantes.
Este livro é uma das maiores coleções de problemas na teoria dos processos estocásticos e suas aplicações. Os problemas deste livro podem ser úteis para estudantes de graduação e pós-graduação, bem como para especialistas na teoria dos processos estocásticos.
nesta foto, duas setas devem produzir dois sinais, mas minha ea não pode enviar, por quê?
Graças ao angevoyageur!
Eu imprimo o cache destas variáveis e eu disse antes, é o mesmo, no momento em que deveria ser enviado o sinal, mas o valor K / D está errado, mas olha programa é corrente, se este é um bug na MQL5 fazer?
Graças ao angevoyageur!
Eu imprimo o cache destas variáveis e eu disse antes, é o mesmo, no momento em que deveria ser enviado o sinal, mas o valor K / D está errado, mas olha programa é corrente, se este é um bug na MQL5 fazer?
A pergunta é uma pergunta básica, há algum problema em verificar o tempo de barra na parte abaixo?
Esta é uma pergunta básica, há algum problema na verificação do tempo de bar?
Quem pode me ajudar? Obrigado de antemão!
Obrigadoangevoyageur
eu verifiquei sua outra resposta, talvez você esteja certo:Sim, sinal em vela fechada é melhor, pois sinal em corrente pode ser sinal falso. Embora haja comerciantes que negociam em velas abertas, provavelmente com alguns filtros.
vou tentar testar!
Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste
Indicadores: Oscilador estocástico
newdigital, 2013.10.09 07:23
Identificando Entradas de Comércio de Tendências de Forex com Estocásticos
De longe, os comerciantes que comercializam na direção da tendência diária predominante têm uma porcentagem maior de sucesso do que aqueles que comercializam a tendência contrária. Uma das maiores atrações do mercado Forex é caracterizada por longas tendências que oferecem aos negociadores o potencial de fazer centenas de pips se eles cronometraram suas entradas com precisão e usaram paradas protetoras para limitar o risco.
Mas como os comerciantes podem encontrar onde entrar com um risco para obter o máximo de lucro?
O mantra, "a tendência é seu amigo até o fim", pode ser encontrado em muitos livros de negociação, mas parece que muitos comerciantes forex não fizeram da tendência seu amigo e, em alguns casos, a tendência se tornou o inimigo. Ao invés de estar no lado receptor daqueles pips oferecidos aos comerciantes que entraram corretamente na tendência, muitos comerciantes estiveram no lado "doador" do comércio perdendo pips enquanto lutavam contra a tendência.
Como as pessoas se voltaram para os serviços de encontros on-line para encontrar seu par ideal, os comerciantes forex podem recorrer aos estocásticos como uma forma de fazer da tendência o seu amigo novamente.
Em uma tendência ascendente em um gráfico diário, as linhas estocásticas %K e %D movendo-se abaixo da linha de referência horizontal '20' e voltando acima da linha 20 indicam que a correção de tomada de lucro está chegando ao fim. O cruzamento estocástico para cima também nos diz que os compradores estão começando a entrar no mercado novamente. Além disso, isto mostra que há um bom suporte.
Como negociar a tendência usando os estocásticos
Paciência é o nome do jogo quando se tenta negociar com a tendência. Entrar na tendência muito cedo pode expor os comerciantes a grandes drawdowns. Entrar tarde demais reduz a quantidade de lucro antes que o swing seja completado.
Use o indicador estocástico para descobrir que a entrada "Goldilocks" de não muito cedo e não muito tarde. Uma vez encontrada uma forte tendência de alta, aguarde que os estocásticos com as configurações de 15, 5, 5 se movam para a região sobre-vendida abaixo da linha de referência horizontal de 20. Em seguida, aguarde que as linhas %K e %D se movam para trás acima das 20 linhas. Entrar longo com uma parada colocada alguns pips abaixo da última baixa. Defina um limite para pelo menos o dobro do tamanho da parada.
Uma vez em uma posição de tendência de alta, os comerciantes tentarão espremer o máximo de lucro possível. Os comerciantes geralmente obtêm lucros em sua posição aberta ou o rastro pára quando os estocásticos se movem para a região de sobre-compra. É importante notar que um par de moedas estrangeiras pode continuar a fazer novos máximos, mesmo que os estocásticos estejam na região de sobre-compra.
Portanto, da próxima vez que você vir uma tendência e não souber como fazer dela seu "amigo", deixe que o indicador dos estocásticos lhe apresente! Uma vez que estas oscilações são destacadas pelos estochásticos, a parada de colocação também se torna mais fácil. Os cruzamentos estocásticos em uma tendência ascendente podem ajudá-lo a identificar suas entradas para se juntar à tendência principal.
Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste
Algo interessante
Sergey Golubev, 2016.03.28 14:13
Isto é muito bom EA para iniciantes - para os comerciantes que estão aprendendo o indicador estocástico sobre como ele funciona. O EA está negociando nos níveis de sobre-compra/sobre-vendido do indicador estocástico com os seguintes parâmetros que foram codificados para estar dentro deste EA:
- os parâmetros do indicador estocástico que foram codificados dentro deste EA: 5/3/3
- níveis sobre-comprados/sobre-vendidos a serem codificados na EA: 80/20
ea_Stochastic_system - especialista para MetaTrader 4O codificador propôs um arquivo de conjunto para este EA, de modo que podemos usar este EA em EURUSD M15 de acordo com este arquivo/parâmetros de conjunto.
Eu testei o EA apenas para ver como ele funciona - por favor, encontre os resultados dos testes e alguns gráficos com as idéias sobre os níveis de overbought/sobrebold:
Hi
Recentemente encontrei um problema com relação ao estocástico.
Eu mesmo escrevi para uma EA. Uma das condições para entrar em um comércio para venda é que Stoch Main no bar 1 < Stoch Signal Bar 1.
Do arquivo anexo para um GBPUSD, podemos ver que às 10:00, Stoch Main Bar 1 > Stoch Signal Bar 1, mas um trdae para venda estava aberto.
A fórmula que usei para Stochstic é
duplo StochMain1T30 = iStochastic(NULL,30,10,10,3,MODE_EMA,0,MODE_MAIN,1); // T30 MODE_MAIN
duplo StochSignal1T30 = iStochastic(NULL,30,10,10,3,MODE_EMA,0,MODE_SIGNAL,1); // T30 MODE_SIGNAL
Uma possibilidade que suspeito é que, com base no StochMain1T30 < StochSignal1T30 acima, mas isto não é o que vemos no gráfico.
Pode me ajudar a explicar o acima?
Eu liguei para Oanda, o corretor, eles me disseram que a posição não foi aberta por eles e foi aberta pela EA.
Obrigado.
Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste
Algo interessante para ler em abril de 2014
Sergey Golubev, 2014.04.14 20:48
Teoria dos Processos Estocásticos : Com Aplicações à Matemática Financeira e Teoria do Risco
Este livro é uma coleção de exercícios que cobrem todos os principais tópicos da moderna teoria dos processos estocásticos e suas aplicações, incluindo finanças, matemática atuarial, teoria das filas de espera e teoria dos riscos.
O objetivo deste livro é fornecer ao leitor o material teórico e prático necessário para o entendimento mais profundo dos principais tópicos da teoria dos processos estocásticos e seus campos relacionados.
O livro é dividido em capítulos de acordo com os vários tópicos. Cada capítulo contém problemas, dicas, soluções, assim como uma parte teórica autônoma que dá todo o material necessário para a solução dos problemas. Referências à literatura também são dadas.
Os exercícios têm vários níveis de complexidade e variam de simples, úteis para os estudantes que estudam noções básicas e técnicas, a exercícios muito avançados que revelam alguns fatos teóricos e construções importantes.
Este livro é uma das maiores coleções de problemas na teoria dos processos estocásticos e suas aplicações. Os problemas deste livro podem ser úteis para estudantes de graduação e pós-graduação, bem como para especialistas na teoria dos processos estocásticos.