#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]);
J'imprime ces variables cache et je l'ai dit avant, est le même, au moment où il devrait être envoyé le signal, mais K / D valeur est erronée, mais regardez programme il est corrent, si c'est un bug dans MQL5 faire ?
J'imprime ces variables cache et je l'ai dit avant, est le même, au moment où il devrait être envoyé le signal, mais K / D valeur est erronée, mais regardez programme il est corrent, si c'est un bug dans MQL5 faire ?
La question est une question de base, y at-il un problème dans la vérification du temps de barre dans la partie ci-dessous ?
//--- 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;
}
J'ai vérifié votre autre réponse, peut-être avez-vous raison :Oui, le signal sur une bougie fermée est meilleur, car le signal sur le courant peut être un faux signal. Bien qu'il y ait des traders qui tradent sur des bougies ouvertes, probablement avec certains filtres.
Une tendance haussière est constituée de hauts plus élevés et de bas plus élevés. Les traders peuvent utiliser le stochastique pour trouver d'excellentes entrées de risque à récompense à ces points de soutien bas dans la tendance.
Une tendance baissière se compose de hauts et de bas plus bas. Les traders peuvent utiliser les stochastiques pour trouver d'excellentes entrées à risque et à récompense à ces points de résistance élevés.
Les stochastiques peuvent être utilisés pour alerter un trader forex afin qu'il resserre ses stops, réduise la taille de sa position ou prenne ses bénéfices une fois dans une tendance.
De loin, les traders qui négocient dans la direction de la tendance quotidienne prédominante ont un pourcentage de réussite plus élevé que ceux qui négocient à contre-tendance. L'un des plus grands attraits du marché Forex est qu'il est caractérisé par de longues tendances qui offrent aux traders le potentiel de gagner des centaines de pips s'ils ont chronométré leurs entrées avec précision et utilisé des stops de protection pour limiter le risque.
Mais comment les traders peuvent-ils trouver où entrer avec un risque pour un gain maximum ?
Le mantra "la tendance est votre amie jusqu'à ce qu'elle se termine" se trouve dans de nombreux livres de trading, mais il semble que de nombreux traders forex n'ont pas fait de la tendance leur amie et dans certains cas, la tendance est devenue leur ennemie. Au lieu de recevoir les pips offerts aux traders qui sont entrés correctement dans la tendance, de nombreux traders se sont retrouvés à l'extrémité "donneuse" du trade, perdant des pips tout en combattant la tendance.
Tout comme les gens se sont tournés vers les services de rencontres en ligne pour rencontrer leur partenaire idéal, les traders forex peuvent se tourner vers les stochastiques pour faire en sorte que la tendance redevienne leur amie.
Dans une tendance haussière sur un graphique journalier, les lignes stochastiques %K et %D se déplaçant sous la ligne de référence horizontale '20' et revenant au-dessus de la ligne 20 indiquent que la correction de prise de bénéfices touche à sa fin. Le croisement à la hausse de la stochastique nous indique également que les acheteurs recommencent à entrer sur le marché. En outre, cela montre qu'il existe un bon support.
Comment négocier la tendance à l'aide des stochastiques ?
La patience est le nom du jeu lorsque vous essayez de négocier avec la tendance. Entrer dans la tendance trop tôt peut exposer les traders à d'importants drawdowns. Entrer trop tard dans la tendance réduit le montant du profit avant que le swing ne soit terminé.
Utilisez l'indicateur stochastique pour trouver cette entrée "Boucle d'or", ni trop tôt ni trop tard. Une fois qu'une forte tendance à la hausse est trouvée, attendez que les stochastiques avec les paramètres 15, 5, 5 se déplacent dans la région de survente sous la ligne de référence horizontale 20. Ensuite, attendez que les lignes %K et %D repassent au-dessus de la ligne 20. Entrez en position longue avec un stop placé quelques pips en dessous du dernier bas. Fixez une limite d'au moins deux fois la taille du stop.
Une fois dans une position de tendance haussière, les traders tenteront d'extraire le plus de bénéfices possible. Les traders prennent généralement des profits sur leur position ouverte ou des stops de suivi une fois que les stochastiques passent dans la région de surachat. Il est important de noter qu'une paire de devises forex peut continuer à atteindre de nouveaux sommets même si la stochastique se trouve dans la région de surachat.
Alors la prochaine fois que vous voyez une tendance et que vous ne savez pas comment en faire votre "ami", laissez l'indicateur stochastique vous initier ! Une fois que ces oscillations sont mises en évidence par la stochastique, le placement des stops devient également plus facile. Les croisements stochastiques dans une tendance haussière peuvent vous aider à repérer vos entrées pour rejoindre la tendance majeure.
C'est un très bon EA pour les débutants - pour les traders qui apprennent le fonctionnement de l'indicateur stochastique. L'EA négocie sur les niveaux de surachat/survente de l'indicateur stochastique avec les paramètres suivants qui ont été codés pour être dans cet EA :
les paramètres de l'indicateur stochastique qui ont été codés à l'intérieur de cet EA: 5/3/3.
lesniveaux de surachat/survente qui ont été codés dans l'EA: 80/20
"Le conseiller analyse les lectures de l'indicateur Stochastique a, le signal pour l'achat est l'intersection des lignes de l'indicateur principal et de signal dans la zone de survente, un signal pour l'intersection des ventes est l'indicateur principal et les lignes de signal dans la zone de surachat."
Le codeur a proposé un fichier d'ensemble pour cet EA afin que nous puissions utiliser cet EA sur l'EURUSD M15 en fonction de ce fichier d'ensemble/paramètres.
J'ai backtesté l'EA juste pour voir comment il fonctionne - veuillez trouver les résultats du backtesting et quelques graphiques avec les idées sur les niveaux de surachat/survente :
J'ai récemment rencontré un problème concernant la stochastique.
Je trade avec un EA que j'ai écrit moi-même. Une des conditions pour entrer un trade pour la vente est que la Stoch Main à la barre 1 < Stoch Signal Bar 1.
Dans le fichier joint pour un GBPUSD, on peut voir qu'à 10:00, la Stoch Main Bar 1 > Stoch Signal Bar 1, mais qu'un trdae pour la vente était ouvert.
La formule que j'ai utilisée pour Stochstic est la suivante
Une possibilité que je soupçonne est que sur la base de ce qui précède StochMain1T30 < StochSignal1T30, mais ce n'est pas ce que nous voyons sur le graphique.
Pouvez-vous m'aider à expliquer ce qui précède ?
J'ai appelé Oanda, le courtier, ils m'ont dit que la position n'a pas été ouverte par eux et qu'elle a été ouverte par l'EA.
Ce livre est un recueil d'exercices couvrant tous les principaux sujets de la théorie moderne des processus stochastiques et de ses applications, notamment en finance, en mathématiques actuarielles, en théorie des files d'attente et en théorie du risque.
L'objectif de ce livre est de fournir au lecteur le matériel théorique et pratique nécessaire à une compréhension approfondie des principaux sujets de la théorie des processus stochastiques et de ses domaines connexes.
Le livre est divisé en chapitres selon les différents thèmes abordés. Chaque chapitre contient des problèmes, des conseils, des solutions, ainsi qu'une partie théorique indépendante qui fournit tout le matériel nécessaire à la résolution des problèmes. Des références à la littérature sont également données.
Les exercices ont différents niveaux de complexité et varient de simples, utiles pour les étudiants qui étudient les notions et techniques de base, à des exercices très avancés qui révèlent certains faits théoriques et constructions importants.
Ce livre est l'une des plus grandes collections de problèmes de la théorie des processus stochastiques et de ses applications. Les problèmes de ce livre peuvent être utiles aux étudiants de premier et deuxième cycles, ainsi qu'aux spécialistes de la théorie des processus stochastiques.
dans cette image, deux flèches devraient produire deux signaux mais mon ea ne peut pas les envoyer, pourquoi ?
Merci angevoyageur!
J'imprime ces variables cache et je l'ai dit avant, est le même, au moment où il devrait être envoyé le signal, mais K / D valeur est erronée, mais regardez programme il est corrent, si c'est un bug dans MQL5 faire ?
Merci angevoyageur!
J'imprime ces variables cache et je l'ai dit avant, est le même, au moment où il devrait être envoyé le signal, mais K / D valeur est erronée, mais regardez programme il est corrent, si c'est un bug dans MQL5 faire ?
La question est une question de base, y at-il un problème dans la vérification du temps de barre dans la partie ci-dessous ?
C'est une question de base, y a-t-il un problème pour vérifier l'heure du bar ?
Qui peut m'aider ? Merci d'avance !
Merciangevoyageur
J'ai vérifié votre autre réponse, peut-être avez-vous raison :Oui, le signal sur une bougie fermée est meilleur, car le signal sur le courant peut être un faux signal. Bien qu'il y ait des traders qui tradent sur des bougies ouvertes, probablement avec certains filtres.
Je vais essayer de tester !
Forum sur le trading, les systèmes de trading automatisés et le test des stratégies de trading
Indicateurs : Oscillateur stochastique
newdigital, 2013.10.09 07:23
Déterminer les entrées de tendance avec les stochastiques
De loin, les traders qui négocient dans la direction de la tendance quotidienne prédominante ont un pourcentage de réussite plus élevé que ceux qui négocient à contre-tendance. L'un des plus grands attraits du marché Forex est qu'il est caractérisé par de longues tendances qui offrent aux traders le potentiel de gagner des centaines de pips s'ils ont chronométré leurs entrées avec précision et utilisé des stops de protection pour limiter le risque.
Mais comment les traders peuvent-ils trouver où entrer avec un risque pour un gain maximum ?
Le mantra "la tendance est votre amie jusqu'à ce qu'elle se termine" se trouve dans de nombreux livres de trading, mais il semble que de nombreux traders forex n'ont pas fait de la tendance leur amie et dans certains cas, la tendance est devenue leur ennemie. Au lieu de recevoir les pips offerts aux traders qui sont entrés correctement dans la tendance, de nombreux traders se sont retrouvés à l'extrémité "donneuse" du trade, perdant des pips tout en combattant la tendance.
Tout comme les gens se sont tournés vers les services de rencontres en ligne pour rencontrer leur partenaire idéal, les traders forex peuvent se tourner vers les stochastiques pour faire en sorte que la tendance redevienne leur amie.
Dans une tendance haussière sur un graphique journalier, les lignes stochastiques %K et %D se déplaçant sous la ligne de référence horizontale '20' et revenant au-dessus de la ligne 20 indiquent que la correction de prise de bénéfices touche à sa fin. Le croisement à la hausse de la stochastique nous indique également que les acheteurs recommencent à entrer sur le marché. En outre, cela montre qu'il existe un bon support.
Comment négocier la tendance à l'aide des stochastiques ?
La patience est le nom du jeu lorsque vous essayez de négocier avec la tendance. Entrer dans la tendance trop tôt peut exposer les traders à d'importants drawdowns. Entrer trop tard dans la tendance réduit le montant du profit avant que le swing ne soit terminé.
Utilisez l'indicateur stochastique pour trouver cette entrée "Boucle d'or", ni trop tôt ni trop tard. Une fois qu'une forte tendance à la hausse est trouvée, attendez que les stochastiques avec les paramètres 15, 5, 5 se déplacent dans la région de survente sous la ligne de référence horizontale 20. Ensuite, attendez que les lignes %K et %D repassent au-dessus de la ligne 20. Entrez en position longue avec un stop placé quelques pips en dessous du dernier bas. Fixez une limite d'au moins deux fois la taille du stop.
Une fois dans une position de tendance haussière, les traders tenteront d'extraire le plus de bénéfices possible. Les traders prennent généralement des profits sur leur position ouverte ou des stops de suivi une fois que les stochastiques passent dans la région de surachat. Il est important de noter qu'une paire de devises forex peut continuer à atteindre de nouveaux sommets même si la stochastique se trouve dans la région de surachat.
Alors la prochaine fois que vous voyez une tendance et que vous ne savez pas comment en faire votre "ami", laissez l'indicateur stochastique vous initier ! Une fois que ces oscillations sont mises en évidence par la stochastique, le placement des stops devient également plus facile. Les croisements stochastiques dans une tendance haussière peuvent vous aider à repérer vos entrées pour rejoindre la tendance majeure.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Quelque chose d'intéressant
Sergey Golubev, 2016.03.28 14:13
C'est un très bon EA pour les débutants - pour les traders qui apprennent le fonctionnement de l'indicateur stochastique. L'EA négocie sur les niveaux de surachat/survente de l'indicateur stochastique avec les paramètres suivants qui ont été codés pour être dans cet EA :
- les paramètres de l'indicateur stochastique qui ont été codés à l'intérieur de cet EA: 5/3/3.
- lesniveaux de surachat/survente qui ont été codés dans l'EA: 80/20
ea_Stochastic_system - expert pour MetaTrader 4Le codeur a proposé un fichier d'ensemble pour cet EA afin que nous puissions utiliser cet EA sur l'EURUSD M15 en fonction de ce fichier d'ensemble/paramètres.
J'ai backtesté l'EA juste pour voir comment il fonctionne - veuillez trouver les résultats du backtesting et quelques graphiques avec les idées sur les niveaux de surachat/survente :
Bonjour
J'ai récemment rencontré un problème concernant la stochastique.
Je trade avec un EA que j'ai écrit moi-même. Une des conditions pour entrer un trade pour la vente est que la Stoch Main à la barre 1 < Stoch Signal Bar 1.
Dans le fichier joint pour un GBPUSD, on peut voir qu'à 10:00, la Stoch Main Bar 1 > Stoch Signal Bar 1, mais qu'un trdae pour la vente était ouvert.
La formule que j'ai utilisée pour Stochstic est la suivante
double StochMain1T30 = iStochastic(NULL,30,10,10,3,MODE_EMA,0,MODE_MAIN,1) ; // T30 MODE_MAIN
double StochSignal1T30 = iStochastic(NULL,30,10,10,3,MODE_EMA,0,MODE_SIGNAL,1) ; // T30 MODE_SIGNAL
Une possibilité que je soupçonne est que sur la base de ce qui précède StochMain1T30 < StochSignal1T30, mais ce n'est pas ce que nous voyons sur le graphique.
Pouvez-vous m'aider à expliquer ce qui précède ?
J'ai appelé Oanda, le courtier, ils m'ont dit que la position n'a pas été ouverte par eux et qu'elle a été ouverte par l'EA.
Merci.
Forum sur le trading, les systèmes de trading automatisés et le test des stratégies de trading.
Quelque chose d'intéressant à lire en avril 2014
Sergey Golubev, 2014.04.14 20:48
Théorie des processus stochastiques : avec des applications aux mathématiques financières et à la théorie du risque.
Ce livre est un recueil d'exercices couvrant tous les principaux sujets de la théorie moderne des processus stochastiques et de ses applications, notamment en finance, en mathématiques actuarielles, en théorie des files d'attente et en théorie du risque.
L'objectif de ce livre est de fournir au lecteur le matériel théorique et pratique nécessaire à une compréhension approfondie des principaux sujets de la théorie des processus stochastiques et de ses domaines connexes.
Le livre est divisé en chapitres selon les différents thèmes abordés. Chaque chapitre contient des problèmes, des conseils, des solutions, ainsi qu'une partie théorique indépendante qui fournit tout le matériel nécessaire à la résolution des problèmes. Des références à la littérature sont également données.
Les exercices ont différents niveaux de complexité et varient de simples, utiles pour les étudiants qui étudient les notions et techniques de base, à des exercices très avancés qui révèlent certains faits théoriques et constructions importants.
Ce livre est l'une des plus grandes collections de problèmes de la théorie des processus stochastiques et de ses applications. Les problèmes de ce livre peuvent être utiles aux étudiants de premier et deuxième cycles, ainsi qu'aux spécialistes de la théorie des processus stochastiques.