[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 388

 
KostelloArtua:
2011.05.16 09:06:08 Experte Gleitender Durchschnitt Neu-Svecha EURUSD,M30: erfolgreich geladen
2011.05.16 09:04:21 Experte Gleitender Durchschnitt Neu-Svecha EURUSD,M30: erfolgreich geladen
2011.05.16 08:14:25 '81415': DataCenter-Verbindung fehlgeschlagen [6]


Wenn Sie das Terminal und dann den EA ausführen, erscheint nichts anderes im Protokoll und der EA zeigt die Arbeit...


Wenn die Ticks laufen, das Icon von EA "lächelt", EA sollte Geschäfte machen (d.h. die Bedingungen dafür erscheinen), aber er macht sie nicht, dann ist es notwendig, zu debuggen.

Ordnen Sie den Befehl price() im Code des EA, insbesondere an den Stellen, an denen verglichen wird, und sehen Sie nach, was genau verglichen wird. Vielleicht haben Sie einen Vergleich über die Gleichheit von Variablen mit dem Typ double und das Ergebnis ist immer falsch, während Sie davon ausgehen, dass die Variablen gleich sind.

 

Guten Tag zusammen.

Ich beschäftige mich seit etwa einem Monat mit MQL4. Ich habe einen einfachen Expert Advisor geschrieben, der bei MACD-Balkenwechseln kauft oder verkauft (ich kann den Code abends schicken, wenn ich ihn brauche). Es kompiliert ohne Probleme und mein Demokonto hat einen Smiley in der oberen rechten Ecke(ich habe meinen EA in den Einstellungenfür den Handel aktiviert ). Der Strategietester zeigt Ergebnisse für die Strategie an (wenn auch negative, aber dies ist ein Schritt zur weiteren Verfeinerung). Aber auf einem Demokonto in MT4 eröffnet der Expert Advisor überhaupt keine Trades. Es scheint mir, dass das Problem nicht beim Programm liegt (warum würde der Tester sonst Ergebnisse anzeigen?), sondern irgendwo in den Einstellungen.

Können Sie mir sagen, was das sein könnte?

 
Sersad:.

Können Sie mir sagen, woran das liegen könnte?


Wie viel Geld haben Sie auf Ihrem Konto und welchen Betrag geben Sie ein?
 
Roger:

Wie viel Geld haben Sie auf Ihrem Konto und welchen Betrag geben Sie ein?

Bei einem Demokonto von 10.000 USD gehe ich mit 0,1 Lot (Mini-Lot) ein.

Wenn Sie Geldmanagement meinen, glaube ich nicht, dass das der Fall ist...

 
Sersad:

Guten Tag zusammen.

Ich beschäftige mich seit etwa einem Monat mit MQL4. Ich habe einen einfachen Expert Advisor geschrieben, der bei MACD-Balkenwechseln kauft oder verkauft (ich kann den Code abends schicken, wenn ich ihn brauche). Es kompiliert ohne Probleme und mein Demokonto hat einen Smiley in der oberen rechten Ecke (ich habe meinen EA in den Einstellungen für den Handel aktiviert). Der Strategietester zeigt Ergebnisse für die Strategie an (wenn auch negative, aber das ist ein Schritt zur weiteren Verfeinerung). Aber auf einem Demokonto in MT4 eröffnet der Expert Advisor überhaupt keine Trades. Es scheint mir, dass das Problem nicht beim Programm liegt (warum würde der Tester sonst Ergebnisse anzeigen?), sondern irgendwo in den Einstellungen.

Können Sie mir sagen, was das Problem sein könnte?


Ohne den Code ist es schwer zu sagen. Es ist möglich, dass der EA für vierstellige Bet räge und das Demokonto für fünfstellige Beträge geschrieben ist. Wenn wir z. B. einen Stop-Loss von 10 Punkten für den Auftrag setzen, ist das der gleiche Abstand zum fünfstelligen EA wie 1 Pip beim vierstelligen. Wenn wir den Mindestabstand für das Setzen von Stop-Aufträgen auf z.B. 3 Punkte festlegen, dann wären das bei einem fünfstelligen Markt dreißig Punkte statt drei. Der Server wird verständlicherweise den Befehl ablehnen, einen Auftrag mit einem Stopp von 10 Punkten auf die fünf Ziffern zu setzen.

Aber der Grund könnte ein anderer sein. Sehen Sie, Sie haben Leute gefragt, warum ihr Auto nicht anspringt. Man kann den Grund nicht sagen, ohne die Motorhaube zu öffnen und zu hören, wie das Auto auf Startversuche reagiert...

 


Es tut mir leid, ich habe hier einigen Unsinn geschrieben, wenn Sie mir zeigen könnten, wo ich völlig ahnungslos bin.

Die Posen scheinen sich überhaupt nicht zu öffnen, es passiert nichts.

Ich habe die Division durch Null entfernt - immer noch, und kein Fehler wird ins Protokoll geschrieben.

//+------------------------------------------------------------------+
//| für avalanche.mq4 |
//| Copyright © 2011, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern double stoploss=0; extern double takeprofit=20; extern int otstup=20; extern datetime expiration=0;

//+------------------------------------------------------------------+
//| Experten-Initialisierungsfunktion |
//+------------------------------------------------------------------+
int init()
{
//----

//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Expertenstartfunktion |
//+------------------------------------------------------------------+
int tiket,tikett;double volume=0.1;int i=0,R1=0,R2=0,A=1 ;double price=PRICE_OPEN;
// R1=((PRICE_OPEN- stoploss*Point)*stoploss)/stoploss;R2=((PRICE_OPEN+ stoploss*Point)*stoploss)/stoploss;


int start()
{
//----

OrderSelect()tiket,SELECT_BY_TICKET, MODE_TRADES );
if(OrderSymbol()==Symbol()){
if(OrderMagicNumber( )==1000||OrderMagicNumber( )==2000 ){i=OrdersTotal() ;
wenn (i<2){
tiket= OrderSend( Symbol(), OP_BUYSTOP, volume*A, price+otstup*Point, Point*3, R1, PRICE_OPEN+takeprofit*Point+otstup, "OP_BUYSTOP", 1000, expiration, Red);
Alert ("OP_BUYSTOP", GetLastError( );
tikett= OrderSend( Symbol(), OP_SELLSTOP, volume*A, price -otstup*Point, Point* 3,R2, PRICE_OPEN-takeprofit*Point-otstup, "OP_SELLSTOP", 2000, expiration,C'0,128,255' );
Alert ("OP_SELLSTOP", GetLastError( );
i=Auftragssumme() ; } } }

//----
zurück(0);
}
//+------------------------------------------------------------------+

D.h., es werden zwei Pending Orders eröffnet, eine oberhalb des Preises mit einem Abstand otstup=20, die andere unterhalb, ohne Stop, und vor der Eröffnung wird geprüft, ob es keine Orders dieses EA gibt und nicht mehr als zwei.

 
alexr7:
Vielen Dank für die schnelle Antwort!!!!!!!!!!!!!! Das Kriterium ist ein Standard-Bollinger-Band-Indikator mit den Parametern: Periode 20, Verschiebung 0, Abweichung 2, gewichteter Schlusskurs(HLCC/4)!!!!!!!

Das sind nicht die Kriterien, nach denen ich Sie gefragt habe. Dies sind die Bollinger-Parameter. Sie können unterschiedlich sein und werden in den Einstellungen festgelegt...

Ich habe Sie gefragt, wie Sie feststellen, ob die Position auf der Bollinger-Mittellinie liegt.

 
alexr7:
Vielen Dank für die schnelle Antwort!!!!!!!!!!!!!! Das Kriterium ist ein Standard-Bollinger-Band-Indikator mit den Parametern: Periode 20, Verschiebung 0, Abweichung 2, gewichteter Schlusskurs(HLCC/4)!!!!!!!

Die Bollinger-Durchschnittslinie ist iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_WEIGHTED, 1);
 
Dimka-novitsek:


Es tut mir leid, ich habe hier einigen Unsinn geschrieben, wenn Sie mir zeigen könnten, wo ich völlig verlegen bin.

Die Posen scheinen sich überhaupt nicht zu öffnen, es passiert nichts.

Ich habe die Division durch Null entfernt - immer noch, und kein Fehler wird nicht ins Protokoll geschrieben.

//+------------------------------------------------------------------+
//| für avalanche.mq4 |
//| Copyright © 2011, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern double stoploss=0; extern double takeprofit=20; extern int otstup=20; extern datetime expiration=0;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int tiket,tikett;double volume=0.1;int i=0,R1=0,R2=0,A=1 ;double price=PRICE_OPEN;
// R1=((PRICE_OPEN- stoploss*Point)*stoploss)/stoploss;R2=((PRICE_OPEN+ stoploss*Point)*stoploss)/stoploss;


int start()
{
//----

OrderSelect( tiket,SELECT_BY_TICKET, MODE_TRADES );
if(OrderSymbol()==Symbol()){
if (OrderMagicNumber( )==1000||OrderMagicNumber( )==2000 ){i=OrdersTotal() ;
if (i<2){
tiket= OrderSend(), OP_BUYSTOP, volume*A, price+otstup*Point, Point* 3, R1, PRICE_OPEN+takeprofit*Point+otstup, "OP_BUYSTOP", 1000, expiration, Red);
Alert ("OP_BUYSTOP", GetLastError( );
tikett= OrderSend( Symbol(), OP_SELLSTOP, volume*A, price -otstup*Point, Point* 3,R2, PRICE_OPEN-takeprofit*Point-otstup, "OP_SELLSTOP", 2000, expiration,C'0,128,255' );
Alert ("OP_SELLSTOP", GetLastError( ));
i=OrdersTotal( ) ; } }

//----
return(0);
}
//+------------------------------------------------------------------+

Dh, öffnen wie zwei schwebende Aufträge, eine über den Preis in einem Abstand otstup=20, die andere unten, kein Anschlag, und vor dem Öffnen zu überprüfen, ob die Reihenfolge dieser EA und nicht mehr als zwei.

1) SRC verwenden

2) Ihr erster Befehl ist OrderSelect. Wen werden Sie auswählen, bevor Sie Aufträge erteilen?

 

Wenn der EA nichts startet, ist es nur zur Kontrolle, damit sich nicht bei jedem Tick danach neue Reiter öffnen

1) Verwenden Sie SRC A, es ist eine Wurzel, danke!

D.h. wenn es keine oder weniger als 2 Bestellungen gibt, werden sie sofort geöffnet!

Grund der Beschwerde: