Guten Abend, mir ist aufgefallen, dass Sie eine große Bibliothek mit vorgefertigten Codes haben. Vielleicht haben Sie einen Code, der den Eröffnungskurs des vorherigen Balkens zum Zeitpunkt der Erstellung eines neuen Balkens ermittelt? Mit freundlichen Grüßen, Vladimir.
Guten Abend, mir ist aufgefallen, dass Sie eine umfangreiche Bibliothek mit vorgefertigten Codes haben. Vielleicht haben Sie einen Code, der den Eröffnungskurs des vorherigen Balkens zum Zeitpunkt der Erstellung eines neuen Balkens ermittelt? Mit freundlichen Grüßen, Vladimir.
Das Ergebnis der Arbeit des Expert Advisors ist zum Beispiel der Preis eines Balkens im vorherigen Balken.
Zum Beispiel ist das Ergebnis des Expert Advisors bei dieser Funktion schlechter
//+------------------------------------------------------------------+//| 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;
}
}
}
//+------------------------------------------------------------------+
Ich verstehe nicht einmal, was ich hier verbockt habe, aber der Expert Advisor liefert ein besseres Ergebnis, wenn man sich auf Stochern verlässt.
//+------------------------------------------------------------------+//| 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;
}
//+------------------------------------------------------------------+
Guten Abend! Ich bin Autodidakt und entnehme Codes aus Beispielen und erfülle die mir gestellte Aufgabe mit der Methode des wissenschaftlichen Stocherns.
Zum Beispiel von dieser Funktion - das Ergebnis des Experten ist schlechter
und hier verstehe ich selbst nicht, was ich betrogen habe - aber durch Stochern zeigt der Experte das Ergebnis besser.
Hier können Sie den Unterschied überprüfen - ersetzen Sie nur das obige Beispiel durch den Beitrag
- in diesem 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;
}
//+------------------------------------------------------------------+
Advisors, die ich auf dem Weg gekommen sind, dann arbeitete schief dann plötzlich die Reihenfolge gelöscht, dann plötzlich legte es ist nicht klar, auf welchem Prinzip.
möchte sich selbst zu schreiben, kann aber nicht verstehen, die Programmierung . nehmen Sie den Rat und beschlossen, einen separaten Zweig zu öffnen.
Arbeitsbedingungen für die Berater
1.selbst nicht den Handel alle Transaktionen manuell (Kauf und Verkauf)
in der schwebenden Ordnung gesetzt nehmen in min + (Möglichkeit zur Anpassung)
3. Wenn die schwebende Ordnung auslöst --- eine andere schwebende Ordnung wird auf der Ebene von 1 Ordnung gesetzt (dh insgesamt gleich sein sollte)
4. wenn der Preis zurück und bildet eine Sperre --- dann alle takei entfernt werden.
Der einzige Unterschied ist der Unterschied in der Position der Bestellung --- wenn der Preisin eine Richtung verschoben wirdund die andere in eine andere Richtung verschoben wird. 5 Beim Öffnen eines Teils der Sperre, öffnet sich die anhängige Bestellung auf das Volumen gleich diesem Teil. in 15 -20 Punkte (anpassen), dh wenn ich Kauf öffnen, die anhängige Bestellung für Kauf und umgekehrt.
alles ist bereit. ich würde froh sein, um Anregungen zu bekommen.
Hallo meine Herren Entwickler! Ich bin nach einem Schlaganfall behindert 1g. Und es ist mir aufgrund der Umstände einfach unmöglich, selbst eine Eule zu schreiben. Ich brauche einen relativ einfachen Bot. Was würde die Pose aus den von mir erstellten Ebenen öffnen. Ich habe keine Haltestellen, nur gegenüberliegende Geschäfte. Algorithmus interessant bitte helfen. Der zweite Bot wird die Bombe sein, und die Nachrichten werden einzigartig sein, alles rein meine Entwicklung.
Diese Idee ist mir schon lange im Kopf herumgeschwirrt. Ich habe versucht, es manuell zu machen, aber ich komme durcheinander. Ich bin sicher, dass es einen solchen Algorithmus im Handel nicht gibt (Punkt 3).
1. Der Expert Advisor eröffnet Orders bei jeder Aufschlüsselung einer Kerze Hoch - Kaufen, Tief - Verkaufen.
2. TP ist gleich einem ATR auf einem Arbeitszeitrahmen.
3. Nachdem die Order am TP geschlossen wurde, nimmt der Expert Advisor die unrentabelste Order und 30% des TP der geschlossenen Order (wird in den Variablen des Expert Advisors ausgedruckt)
Den TP des Verlustauftrags in den negativen Bereich verschieben (nach dem Prinzip, erst einen Gewinnanteil mitzunehmen und dann aufzugeben)
und führt so den verlustbringenden Auftrag zu seinem Abschluss mit einem Verlust. Dann findet er den unrentabelsten Auftrag wieder und ändert ihn so lange, bis er mit Verlust abgeschlossen ist.
In jeder dieser Serien werden wir mindestens 60 % Gewinn erzielen, wenn man die Swapkosten und die Provisionen berücksichtigt.
Hilfe bei der Suche nach dem letzten ZigZag-Signal
Unter der Bedingung, dass der letzte Up-Sell, Dn-buy.
Mal funktioniert es, dann wieder nicht... (Es kann sein, dass es gar nicht funktioniert)
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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 : "Back and forth ADX" März April Indikator - aus irgendeinem Grund nicht erfolgreich
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Hier ist der Indikator selbst
Hier ist ein besseres Ergebnis - Filter hinzugefügt (MA und RSI)
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Mit 0,10 Los
Hier ist ein besseres Ergebnis - Filter hinzugefügt (MA und RSI)
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Mit Los 0,10
Guten Abend, mir ist aufgefallen, dass Sie eine große Bibliothek mit vorgefertigten Codes haben. Vielleicht haben Sie einen Code, der den Eröffnungskurs des vorherigen Balkens zum Zeitpunkt der Erstellung eines neuen Balkens ermittelt? Mit freundlichen Grüßen, Vladimir.
Guten Abend, mir ist aufgefallen, dass Sie eine umfangreiche Bibliothek mit vorgefertigten Codes haben. Vielleicht haben Sie einen Code, der den Eröffnungskurs des vorherigen Balkens zum Zeitpunkt der Erstellung eines neuen Balkens ermittelt? Mit freundlichen Grüßen, Vladimir.
Das Ergebnis der Arbeit des Expert Advisors ist zum Beispiel der Preis eines Balkens im vorherigen Balken.
Zum Beispiel ist das Ergebnis des Expert Advisors bei dieser Funktion schlechter
Ich verstehe nicht einmal, was ich hier verbockt habe, aber der Expert Advisor liefert ein besseres Ergebnis, wenn man sich auf Stochern verlässt.
Guten Abend! Ich bin Autodidakt und entnehme Codes aus Beispielen und erfülle die mir gestellte Aufgabe mit der Methode des wissenschaftlichen Stocherns.
Zum Beispiel von dieser Funktion - das Ergebnis des Experten ist schlechter
und hier verstehe ich selbst nicht, was ich betrogen habe - aber durch Stochern zeigt der Experte das Ergebnis besser.
Hier können Sie den Unterschied überprüfen - ersetzen Sie nur das obige Beispiel durch den Beitrag
- in diesem EA
Hier ist eine Möglichkeit, den Unterschied zu überprüfen - ersetzen Sie nur den Beispielbeitrag oben
- in diesem Experten.
Ich danke Ihnen! Ich werde es ausprobieren! Mit freundlichen Grüßen, Vladimir.
möchte sich selbst zu schreiben, kann aber nicht verstehen, die Programmierung . nehmen Sie den Rat und beschlossen, einen separaten Zweig zu öffnen.
Arbeitsbedingungen für die Berater
1.selbst nicht den Handel alle Transaktionen manuell (Kauf und Verkauf)
2.Wenn das Geschäft schließt in + dann die schwebende Ordnung gelöscht wird.
in der schwebenden Ordnung gesetzt nehmen in min + (Möglichkeit zur Anpassung)
3. Wenn die schwebende Ordnung auslöst --- eine andere schwebende Ordnung wird auf der Ebene von 1 Ordnung gesetzt (dh insgesamt gleich sein sollte)
4. wenn der Preis zurück und bildet eine Sperre --- dann alle takei entfernt werden.
Der einzige Unterschied ist der Unterschied in der Position der Bestellung --- wenn der Preisin eine Richtung verschoben wirdund die andere in eine andere Richtung verschoben wird. 5 Beim Öffnen eines Teils der Sperre, öffnet sich die anhängige Bestellung auf das Volumen gleich diesem Teil. in 15 -20 Punkte (anpassen), dh wenn ich Kauf öffnen, die anhängige Bestellung für Kauf und umgekehrt.
alles ist bereit. ich würde froh sein, um Anregungen zu bekommen.
Hilfe bei der Suche nach dem letzten ZigZag-Signal
Unter der Bedingung, dass der letzte Up-Sell, Dn-buy.
Mal funktioniert es, dann wieder nicht... (Es kann sein, dass es gar nicht funktioniert)
Hilfe bei der Suche nach dem letzten ZigZag-Signal
Unter der Bedingung, dass der letzte Up-Sell, Dn-buy.
Mal funktioniert es, dann wieder nicht... (Es kann sein, dass es gar nicht funktioniert)