Bonsoir, j'ai remarqué que vous avez une grande bibliothèque de codes prêts à l'emploi. Peut-être avez-vous un code qui déterminerait le prix d'ouverture de la barre précédente au moment de la création d'une nouvelle barre ? Salutations, Vladimir.
Bonsoir, j'ai remarqué que vous avez une riche bibliothèque de codes prêts à l'emploi. Peut-être avez-vous un code qui déterminerait le prix d'ouverture de la barre précédente au moment de la création d'une nouvelle barre ? Salutations, Vladimir.
Par exemple, le résultat du travail de l'Expert Advisor est le prix d'une barre dans la barre précédente.
Par exemple, à partir de cette fonction - le résultat du conseiller expert est plus mauvais
//+------------------------------------------------------------------+//| Expert new tick handling function |//+------------------------------------------------------------------+voidOnTick(void)
{
staticdatetime limit_time=0; // last trade processing time + timeout//--- don't process if timeoutif(TimeCurrent()>=limit_time)
{
//--- check for dataif(Bars(Symbol(),Period())>2)
{
//--- change limit time by timeout in seconds if processedif(ExtExpert.Processing())
limit_time=TimeCurrent()+ExtTimeOut;
}
}
}
//+------------------------------------------------------------------+
Je ne comprends même pas ce que j'ai raté ici, mais le conseiller expert donne un meilleur résultat en s'appuyant sur le poking.
//+------------------------------------------------------------------+//| Expert new tick handling function |//+------------------------------------------------------------------+voidOnTick(void)
{
staticdatetime limit_time=0,ExtTimeOut=0; // last trade processing time + timeout//--- don't process if timeout
limit_time=iTime(Symbol(),Period(),0);
if(ExtTimeOut==limit_time)
return;
//--- change limit time by timeout in seconds if processedif(ExtExpert.Processing())
ExtTimeOut=limit_time;
}
//+------------------------------------------------------------------+
Bonsoir! Je suis autodidacte et je prends des codes à partir d'exemples et j'accomplis la tâche qui m'est assignée par la méthode du piquetage scientifique.
Par exemple, à partir de cette fonction - le résultat de l'expert est pire
et ici, je ne comprends pas moi-même ce que j'ai triché - mais en poussant, l'expert montre mieux le résultat.
Ici, vous pouvez vérifier la différence - remplacez uniquement l'exemple ci-dessus par le post
- dans cet EA
//+------------------------------------------------------------------+//| EXP MA Back and forth ADX.mq5 |//| Copyright 2021, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2021, MetaQuotes Ltd."#property link" https://www.mql5.com "#property version"1.00"#property description"It is important to make sure that the expert works with a normal"#property description"chart and the user did not make any mistakes setting input"#property description"variables (Lots, TakeProfit, TrailingStop) in our case,"#property description"we check TakeProfit on a chart of more than 2*trend_period bars"#define MACD_MAGIC 7234102//---#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\AccountInfo.mqh>
//---inputdouble InpLots = 0.01 ; // Lotsinputint InpTakeProfit = 500 ; // Take Profit (in pips)inputint InpTrailingStop = 300 ; // Trailing Stop Level (in pips)inputint InpBars = 1 ; // Barsinputint InpMATrendPeriod = 14 ; // MA trend period//+------------------------------------------------------------------+//| MACD Sample expert class |//+------------------------------------------------------------------+class CSampleExpert
{
protected :
double m_adjusted_point; // point value adjusted for 3 or 5 points
CTrade m_trade; // trading object
CSymbolInfo m_symbol; // symbol info object
CPositionInfo m_position; // trade position object
CAccountInfo m_account; // account info wrapper//--- indicatorsint m_handle_macd; // MACD indicator handleint m_handle_ema; // moving average indicator handleint m_handle_emas; // moving average indicator handle//--- indicator buffersdouble m_buff_MACD_main[]; // MACD indicator main bufferdouble m_buff_MACD_signal[]; // MACD indicator signal bufferdouble m_buff_EMA[]; // EMA indicator bufferdouble m_buff_EMAS[]; // EMA indicator buffer//--- indicator data for processingdouble m_macd_current;
double m_signal_current;
double m_ema_current;
double m_ema_previous;
//---double m_traling_stop;
double m_take_profit;
public :
CSampleExpert( void );
~CSampleExpert( void );
bool Init( void );
void Deinit( void );
bool Processing( void );
protected :
bool InitCheckParameters( constint digits_adjust);
bool InitIndicators( void );
bool LongClosed( void );
bool ShortClosed( void );
bool LongModified( void );
bool ShortModified( void );
bool LongOpened( void );
bool ShortOpened( void );
};
//--- global expert
CSampleExpert ExtExpert;
//+------------------------------------------------------------------+//| Constructor |//+------------------------------------------------------------------+
CSampleExpert::CSampleExpert( void ) : m_adjusted_point( 0 ),
m_handle_macd( INVALID_HANDLE ),
m_handle_ema( INVALID_HANDLE ),
m_handle_emas( INVALID_HANDLE ),
m_macd_current( 0 ),
m_signal_current( 0 ),
m_ema_current( 0 ),
m_ema_previous( 0 ),
m_traling_stop( 0 ),
m_take_profit( 0 )
{
ArraySetAsSeries (m_buff_MACD_main, true );
ArraySetAsSeries (m_buff_MACD_signal, true );
ArraySetAsSeries (m_buff_EMA, true );
ArraySetAsSeries (m_buff_EMAS, true );
}
//+------------------------------------------------------------------+//| Destructor |//+------------------------------------------------------------------+
CSampleExpert::~CSampleExpert( void )
{
}
//+------------------------------------------------------------------+//| Initialization and checking for input parameters |//+------------------------------------------------------------------+bool CSampleExpert::Init( void )
{
//--- initialize common information
m_symbol.Name( Symbol ()); // symbol
m_trade.SetExpertMagicNumber(MACD_MAGIC); // magic
m_trade.SetMarginMode();
m_trade.SetTypeFillingBySymbol( Symbol ());
//--- tuning for 3 or 5 digitsint digits_adjust= 1 ;
if (m_symbol. Digits ()== 3 || m_symbol. Digits ()== 5 )
digits_adjust= 10 ;
m_adjusted_point=m_symbol. Point ()*digits_adjust;
//--- set default deviation for trading in adjusted points
m_traling_stop =InpTrailingStop*m_adjusted_point;
m_take_profit =InpTakeProfit*m_adjusted_point;
//--- set default deviation for trading in adjusted points
m_trade.SetDeviationInPoints( 3 *digits_adjust);
//---if (!InitCheckParameters(digits_adjust))
return ( false );
if (!InitIndicators())
return ( false );
//--- succeedreturn ( true );
}
//+------------------------------------------------------------------+//| Checking for input parameters |//+------------------------------------------------------------------+bool CSampleExpert::InitCheckParameters( constint digits_adjust)
{
//--- initial data checksif (InpTakeProfit*digits_adjust<m_symbol.StopsLevel())
{
printf ( "Take Profit must be greater than %d" ,m_symbol.StopsLevel());
return ( false );
}
if (InpTrailingStop*digits_adjust<m_symbol.StopsLevel())
{
printf ( "Trailing Stop must be greater than %d" ,m_symbol.StopsLevel());
return ( false );
}
//--- check for right lots amountif (InpLots<m_symbol.LotsMin() || InpLots>m_symbol.LotsMax())
{
printf ( "Lots amount must be in the range from %f to %f" ,m_symbol.LotsMin(),m_symbol.LotsMax());
return ( false );
}
if ( MathAbs (InpLots/m_symbol.LotsStep()- MathRound (InpLots/m_symbol.LotsStep()))> 1.0 E- 10 )
{
printf ( "Lots amount is not corresponding with lot step %f" ,m_symbol.LotsStep());
return ( false );
}
//--- warningif (InpTakeProfit<=InpTrailingStop)
printf ( "Warning: Trailing Stop must be less than Take Profit" );
//--- succeedreturn ( true );
}
//+------------------------------------------------------------------+//| Initialization of the indicators |//+------------------------------------------------------------------+bool CSampleExpert::InitIndicators( void )
{
//--- create MACD indicatorif (m_handle_macd== INVALID_HANDLE )
if ((m_handle_macd= iADX ( NULL , 0 , 14 ))== INVALID_HANDLE )
{
printf ( "Error creating MACD indicator" );
return ( false );
}
//--- create EMA indicator and add it to collectionif (m_handle_ema== INVALID_HANDLE )
if ((m_handle_ema= iMA ( NULL , 0 ,InpMATrendPeriod, 0 , MODE_LWMA , PRICE_CLOSE ))== INVALID_HANDLE )
{
printf ( "Error creating EMA indicator" );
return ( false );
}
//--- create EMA indicator and add it to collectionif (m_handle_emas== INVALID_HANDLE )
if ((m_handle_emas= iMA ( NULL , 0 ,InpMATrendPeriod, 0 , MODE_SMA , PRICE_OPEN ))== INVALID_HANDLE )
{
printf ( "Error creating EMA indicator" );
return ( false );
}
//--- succeedreturn ( true );
}
//+------------------------------------------------------------------+//| Check for long position closing |//+------------------------------------------------------------------+bool CSampleExpert::LongClosed( void )
{
bool res= false ;
//--- should it be closed?if (m_macd_current<m_signal_current && m_ema_current<m_ema_previous)
{
//--- close positionif (m_trade.PositionClose( Symbol ()))
printf ( "Long position by %s to be closed" , Symbol ());
elseprintf ( "Error closing position by %s : '%s'" , Symbol (),m_trade.ResultComment());
//--- processed and cannot be modified
res= true ;
}
//--- resultreturn (res);
}
//+------------------------------------------------------------------+//| Check for short position closing |//+------------------------------------------------------------------+bool CSampleExpert::ShortClosed( void )
{
bool res= false ;
//--- should it be closed?if (m_macd_current>m_signal_current && m_ema_current>m_ema_previous)
{
//--- close positionif (m_trade.PositionClose( Symbol ()))
printf ( "Short position by %s to be closed" , Symbol ());
elseprintf ( "Error closing position by %s : '%s'" , Symbol (),m_trade.ResultComment());
//--- processed and cannot be modified
res= true ;
}
//--- resultreturn (res);
}
//+------------------------------------------------------------------+//| Check for long position modifying |//+------------------------------------------------------------------+bool CSampleExpert::LongModified( void )
{
bool res= false ;
//--- check for trailing stopif (InpTrailingStop> 0 )
{
if (m_symbol.Bid()-m_position.PriceOpen()>m_adjusted_point*InpTrailingStop)
{
double sl= NormalizeDouble (m_symbol.Bid()-m_traling_stop,m_symbol. Digits ());
double tp=m_position.TakeProfit();
if (m_position.StopLoss()<sl || m_position.StopLoss()== 0.0 )
{
//--- modify positionif (m_trade.PositionModify( Symbol (),sl,tp))
printf ( "Long position by %s to be modified" , Symbol ());
else
{
printf ( "Error modifying position by %s : '%s'" , Symbol (),m_trade.ResultComment());
printf ( "Modify parameters : SL=%f,TP=%f" ,sl,tp);
}
//--- modified and must exit from expert
res= true ;
}
}
}
//--- resultreturn (res);
}
//+------------------------------------------------------------------+//| Check for short position modifying |//+------------------------------------------------------------------+bool CSampleExpert::ShortModified( void )
{
bool res= false ;
//--- check for trailing stopif (InpTrailingStop> 0 )
{
if ((m_position.PriceOpen()-m_symbol.Ask())>(m_adjusted_point*InpTrailingStop))
{
double sl= NormalizeDouble (m_symbol.Ask()+m_traling_stop,m_symbol. Digits ());
double tp=m_position.TakeProfit();
if (m_position.StopLoss()>sl || m_position.StopLoss()== 0.0 )
{
//--- modify positionif (m_trade.PositionModify( Symbol (),sl,tp))
printf ( "Short position by %s to be modified" , Symbol ());
else
{
printf ( "Error modifying position by %s : '%s'" , Symbol (),m_trade.ResultComment());
printf ( "Modify parameters : SL=%f,TP=%f" ,sl,tp);
}
//--- modified and must exit from expert
res= true ;
}
}
}
//--- resultreturn (res);
}
//+------------------------------------------------------------------+//| Check for long position opening |//+------------------------------------------------------------------+bool CSampleExpert::LongOpened( void )
{
bool res= false ;
//--- check for long position (BUY) possibilityif (m_macd_current>m_signal_current && m_ema_current>m_ema_previous)
{
double price=m_symbol.Ask();
double tp =m_symbol.Bid()+m_take_profit;
//--- check for free moneyif (m_account.FreeMarginCheck( Symbol (), ORDER_TYPE_BUY ,InpLots,price)< 0.0 )
printf ( "We have no money. Free Margin = %f" ,m_account.FreeMargin());
else
{
//--- open positionif (m_trade.PositionOpen( Symbol (), ORDER_TYPE_BUY ,InpLots,price, 0.0 ,tp))
printf ( "Position by %s to be opened" , Symbol ());
else
{
printf ( "Error opening BUY position by %s : '%s'" , Symbol (),m_trade.ResultComment());
printf ( "Open parameters : price=%f,TP=%f" ,price,tp);
}
}
//--- in any case we must exit from expert
res= true ;
}
//--- resultreturn (res);
}
//+------------------------------------------------------------------+//| Check for short position opening |//+------------------------------------------------------------------+bool CSampleExpert::ShortOpened( void )
{
bool res= false ;
//--- check for short position (SELL) possibilityif (m_macd_current<m_signal_current && m_ema_current<m_ema_previous)
{
double price=m_symbol.Bid();
double tp =m_symbol.Ask()-m_take_profit;
//--- check for free moneyif (m_account.FreeMarginCheck( Symbol (), ORDER_TYPE_SELL ,InpLots,price)< 0.0 )
printf ( "We have no money. Free Margin = %f" ,m_account.FreeMargin());
else
{
//--- open positionif (m_trade.PositionOpen( Symbol (), ORDER_TYPE_SELL ,InpLots,price, 0.0 ,tp))
printf ( "Position by %s to be opened" , Symbol ());
else
{
printf ( "Error opening SELL position by %s : '%s'" , Symbol (),m_trade.ResultComment());
printf ( "Open parameters : price=%f,TP=%f" ,price,tp);
}
}
//--- in any case we must exit from expert
res= true ;
}
//--- resultreturn (res);
}
//+------------------------------------------------------------------+//| main function returns true if any position processed |//+------------------------------------------------------------------+bool CSampleExpert::Processing( void )
{
//--- refresh ratesif (!m_symbol.RefreshRates())
return ( false );
//--- refresh indicatorsif ( BarsCalculated (m_handle_macd)< 2 || BarsCalculated (m_handle_ema)< 2 || BarsCalculated (m_handle_emas)< 2 )
return ( false );
if ( CopyBuffer (m_handle_macd, 1 ,InpBars, 2 ,m_buff_MACD_main) != 2 ||
CopyBuffer (m_handle_macd, 2 ,InpBars, 2 ,m_buff_MACD_signal)!= 2 ||
CopyBuffer (m_handle_ema, 0 ,InpBars, 2 ,m_buff_EMA) != 2 ||
CopyBuffer (m_handle_emas, 0 ,InpBars, 2 ,m_buff_EMAS) != 2 )
return ( false );
// m_indicators.Refresh();//--- to simplify the coding and speed up access//--- data are put into internal variables
m_macd_current =m_buff_MACD_main[ 0 ];
m_signal_current =m_buff_MACD_signal[ 0 ];
m_ema_current =m_buff_EMA[ 0 ];
m_ema_previous =m_buff_EMAS[ 0 ];
//--- it is important to enter the market correctly,//--- but it is more important to exit it correctly...//--- first check if position exists - try to select itif (m_position.Select( Symbol ()))
{
if (m_position.PositionType()== POSITION_TYPE_BUY )
{
//--- try to close or modify long positionif (LongClosed())
return ( true );
if (LongModified())
return ( true );
}
else
{
//--- try to close or modify short positionif (ShortClosed())
return ( true );
if (ShortModified())
return ( true );
}
}
//--- no opened position identifiedelse
{
//--- check for long position (BUY) possibilityif (LongOpened())
return ( true );
//--- check for short position (SELL) possibilityif (ShortOpened())
return ( true );
}
//--- exit without position processingreturn ( false );
}
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit ( void )
{
//--- create all necessary objectsif (!ExtExpert.Init())
return ( INIT_FAILED );
//--- secceedreturn ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+//| Expert new tick handling function |//+------------------------------------------------------------------+voidOnTick ( void )
{
staticdatetime limit_time= 0 ,ExtTimeOut= 0 ; // last trade processing time + timeout//--- don't process if timeout
limit_time= iTime ( Symbol (), Period (), 0 );
if (ExtTimeOut==limit_time)
return ;
//--- change limit time by timeout in seconds if processedif (ExtExpert.Processing())
ExtTimeOut=limit_time;
}
//+------------------------------------------------------------------+
Tous ont leur propre vision sur l'entrée et la sortie des verrous. conseillers que j'ai rencontré sur le chemin alors travaillé de travers puis soudainement supprimé l'ordre, puis soudainement mis il n'est pas clair sur quel principe.
voudrais écrire moi-même, mais ne peut pas comprendre la programmation . prendre le conseil et a décidé d'ouvrir une branche distincte .
conditions de travail pour le conseiller
1.lui-même ne négocie pas toutes les transactions manuellement (achat et vente)
2.Si la transaction se termine en +, alors l'ordre en attente est supprimé.
dans l'ordre en attente, la prise en min + (possibilité d'ajuster)
3. Lorsque l'ordre en attente se déclenche --- un autre ordre en attente est établi au niveau d'un ordre (c'est-à-dire que le total doit être égal)
4. si le prix revient et forme un verrou --- alors toutes les prises sont supprimées.
La seule différence est dans la forme de la transaction --- il ressemble à l'ouverture d'une position fermée dans le graphique.5 Lors de l'ouverture d'une partie de la serrure, l'attente sur le volume égal à cette partie est ouverte. sur le mouvement après 15 -20 pips (ajuster), c'est-à-dire si je ouvre acheter, l'attente pour acheter et vice versa.
comme tout. serait heureux d'entendre toute suggestion. si un tel miracle apparaît dans la lumière sera affiché pour tous ceux qui sont intéressés par elle avec le code source ouvert. pour mt4.
Bonjour Messieurs les développeurs ! Je suis handicapé 1g, après une attaque. Et il m'est tout simplement impossible d'écrire moi-même un hibou en raison des circonstances. J'ai besoin d'un robot assez simple. Ce qui ouvrirait la pose des niveaux que j'ai créés. Je n'ai pas d'arrêts, seulement des marchés opposés. Algorithme intéressant, merci de m'aider. Le deuxième bot sera la bombe, et les nouvelles seront uniques, toutes purement mon développement .
Cette idée me trottait dans la tête depuis longtemps. J'ai essayé de le faire manuellement, mais je m'y perds. Je suis sûr qu'il n'existe aucun algorithme de ce type dans le commerce (point 3).
1. L'Expert Advisor ouvre des ordres sur chaque décomposition d'une bougie : Haut - Achat, Bas - Vente.
2. Le TP est égal à un ATR sur une période de travail.
3. Après la fermeture de l'ordre sur le TP, le conseiller expert prend l'ordre le moins rentable et 30% du TP de l'ordre fermé (à imprimer dans les variables du conseiller expert).
Traîner le TP de l'ordre perdant dans la zone négative (suivant le principe de prendre d'abord puis de renoncer à un pourcentage de profit).
et conduit ainsi l'ordre déficitaire à sa clôture avec une perte. Ensuite, il retrouve l'ordre le moins rentable et continue à le modifier jusqu'à ce qu'il soit fermé avec une perte.
Dans chacune de ces séries, nous obtiendrons au moins 60% de profit en tenant compte du swap et des commissions.
Ça marche, puis ça ne marche plus... (Il se peut que cela ne fonctionne pas du tout)
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 07.10.2006 |//| Описание : Возвращает номер бара экстремума ЗигЗага по его номеру. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента (NULL или "" - текущий символ) |//| tf - таймфрейм ( 0 - текущий ТФ) |//| ne - номер экстремума ( 0 - последний) |//| dp - ExtDepth |//| dv - ExtDeviation |//| bs - ExtBackstep |//+----------------------------------------------------------------------------+int GetExtremumZZBar(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
if (sy=="" || sy=="0") sy=Symbol();
double zz;
int i, k=iBars(sy, tf), ke=0;
for (i=0; i<k; i++) {
zz=iCustom(sy, tf, "ZigZag", dp, dv, bc, 0, i);
if (zz!=0) {
ke++;
if (ke>ne) return(i);
}
}
Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
return(-1);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 07.10.2006 |//| Описание : Возвращает экстремум ЗигЗага по его номеру. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента (NULL или "" - текущий символ) |//| tf - таймфрейм ( 0 - текущий ТФ) |//| ne - номер экстремума ( 0 - последний) |//| dp - ExtDepth |//| dv - ExtDeviation |//| bs - ExtBackstep |//+----------------------------------------------------------------------------+double GetExtremumZZPrice(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bs=3) {
if (sy=="" || sy=="0") sy=Symbol();
double zz;
int i, k=iBars(sy, tf), ke=0;
for (i=1; i<k; i++) {
zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, i);
if (zz!=0) {
ke++;
if (ke>ne) return(zz);
}
}
Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
return(0);
}
TOTAL : Indicateur "Back and forth ADX" mars avril - pas de succès pour une raison quelconque
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Voici l'indicateur lui-même
Voici un meilleur résultat - filtre ajouté (MA et RSI)
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Avec un lot de 0,10
Voici un meilleur résultat - filtre ajouté (MA et RSI)
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Avec lot 0,10
Bonsoir, j'ai remarqué que vous avez une grande bibliothèque de codes prêts à l'emploi. Peut-être avez-vous un code qui déterminerait le prix d'ouverture de la barre précédente au moment de la création d'une nouvelle barre ? Salutations, Vladimir.
Bonsoir, j'ai remarqué que vous avez une riche bibliothèque de codes prêts à l'emploi. Peut-être avez-vous un code qui déterminerait le prix d'ouverture de la barre précédente au moment de la création d'une nouvelle barre ? Salutations, Vladimir.
Par exemple, le résultat du travail de l'Expert Advisor est le prix d'une barre dans la barre précédente.
Par exemple, à partir de cette fonction - le résultat du conseiller expert est plus mauvais
Je ne comprends même pas ce que j'ai raté ici, mais le conseiller expert donne un meilleur résultat en s'appuyant sur le poking.
Bonsoir! Je suis autodidacte et je prends des codes à partir d'exemples et j'accomplis la tâche qui m'est assignée par la méthode du piquetage scientifique.
Par exemple, à partir de cette fonction - le résultat de l'expert est pire
et ici, je ne comprends pas moi-même ce que j'ai triché - mais en poussant, l'expert montre mieux le résultat.
Ici, vous pouvez vérifier la différence - remplacez uniquement l'exemple ci-dessus par le post
- dans cet EA
Voici un moyen de vérifier la différence - remplacez seulement l'exemple de poste ci-dessus
- dans cet expert.
Merci ! Je vais essayer ! Salutations, Vladimir.
voudrais écrire moi-même, mais ne peut pas comprendre la programmation . prendre le conseil et a décidé d'ouvrir une branche distincte .
conditions de travail pour le conseiller
1.lui-même ne négocie pas toutes les transactions manuellement (achat et vente)
2.Si la transaction se termine en +, alors l'ordre en attente est supprimé.
dans l'ordre en attente, la prise en min + (possibilité d'ajuster)
3. Lorsque l'ordre en attente se déclenche --- un autre ordre en attente est établi au niveau d'un ordre (c'est-à-dire que le total doit être égal)
4. si le prix revient et forme un verrou --- alors toutes les prises sont supprimées.
La seule différence est dans la forme de la transaction --- il ressemble à l'ouverture d'une position fermée dans le graphique.5 Lors de l'ouverture d'une partie de la serrure, l'attente sur le volume égal à cette partie est ouverte. sur le mouvement après 15 -20 pips (ajuster), c'est-à-dire si je ouvre acheter, l'attente pour acheter et vice versa.
comme tout. serait heureux d'entendre toute suggestion. si un tel miracle apparaît dans la lumière sera affiché pour tous ceux qui sont intéressés par elle avec le code source ouvert. pour mt4.
Aide pour trouver le dernier signal ZigZag
Par condition si le dernier up-sell, Dn-buy.
Ça marche puis ça ne marche plus... (Il se peut que cela ne fonctionne pas du tout)
Aide pour trouver le dernier signal ZigZag
Par condition si le dernier up-sell, Dn-buy.
Ça marche, puis ça ne marche plus... (Il se peut que cela ne fonctionne pas du tout)