Diablo - Seite 12

 

Ich habe einen Expert Advisor erstellt, der Aufträge wie in der Methodik des Autors platziert, aber es gibt Unterschiede. Er platziert die Aufträge nach Levels, die von der ATR abhängen (wenn die Methodik eine Win-Win-Situation ist, dann macht es keinen Unterschied, welche Levels zu platzieren sind). Zu Beginn eines neuen Tages schließt und entfernt alle Aufträge (ich weiß nur nicht, wie sonst zu schließen Aufträge, die keine TP und SL und das wird nicht bringen Gewinn).

Sie können versuchen, die Parameter zu optimieren. Ich bin einfach zu faul, ich glaube nicht an diese Strategie.

Dateien:
 
khorosh:
Wenn die Kritik zu träge ist, um mit ihr zu argumentieren, man aber wirklich etwas sagen möchte, ist es besser zu schweigen, als sich aufzuregen.
Vergessen Sie nicht, in den Spiegel zu schauen.
 

Diablo v09.02.12 (Unsterbliche Version)

Es gibt zwei Arten von Aufträgen, die in einem bestimmten Abstand zum Preis in gleichen Abständen platziert werden: gerade Aufträge (Buy Stop nach oben vom Preis und Sell Stop nach unten vom Preis) und umgekehrte Aufträge (Sell Limit nach oben vom Preis und Buy Limit nach unten vom Preis). Die Orders Buy Stop und Sell Limit werden auf denselben Niveaus (paarweise) platziert, ebenso wie die Orders Sell Stop und Buy Limit.

Alle Aufträge haben das gleiche Volumen und einen Stop Loss, der dem Abstand zwischen den Aufträgen entspricht.

Gerade Aufträge (Buy Stop und Sell Stop) haben keinen Take Profit. Die invertierten Aufträge (Sell Limit und Buy Limit) haben eine arithmetisch ansteigende Gewinnmitnahme: der erste Auftrag (der dem Preis am nächsten ist) hat einen Schritt zwischen den Aufträgen, der zweite Auftrag (etwas weiter entfernt) hat drei Schritte, der dritte Auftrag hat fünf Schritte usw.


Ein Skript zum Aufgeben von Bestellungen:

// Diablo v09.02.12
#property copyright "Jon Katana"
#property show_inputs
extern int Step=0,Spread=0,Levels=0;
extern double Up=0,Vol=0;
int start()
{for(int i=0;i<(Levels);i++)
{OrderSend(Symbol(),OP_BUYSTOP,Vol,Up+(i*Step+Spread)*Point,0,Up+(i-1)*Step*Point,0,0,0);
OrderSend(Symbol(),OP_SELLSTOP,Vol,Up-(i+1)*Step*Point,0,Up-(i*Step-Spread)*Point,0,0,0);
OrderSend(Symbol(),OP_SELLLIMIT,Vol,Up+i*Step*Point,0,Up+((i+1)*Step+Spread)*Point,Up-(Step*(i+1)+Spread)*Point,0,0);
OrderSend(Symbol(),OP_BUYLIMIT,Vol,Up-((i+1)*Step-Spread)*Point,0,Up-(i+2)*Step*Point,Up+i*Step*Point,0,0);}
return(0);}

Das System ist völlig unzerstörbar. Wenn man ihn sich selbst überlässt, schließt er am Ende immer mit einem Gewinn oder mit Null ab.

Sehr gut ist der Trend ohne Rückfall auf die Schrittgröße - der Gewinn steigt schneeballartig an und erlaubt es, eine Kursbewegung mehrfach zu sammeln. In der Wohnung ist der Gewinn mäßig oder geht gegen Null. Die langsamste Variante ist das Muster "Drache", bei dem sich der Kurs in eine Richtung bewegt, aber von jedem Niveau um einen Schritt zurückgeht und dann weitergeht. In diesem Fall dauert es nur ein wenig länger, bis der Gewinn oder die Null erreicht ist.

Berechnen Sie daher den Schritt zwischen den Niveaus für die Auftragserteilung so, dass der Kurs die bereits überschrittenen Niveaus nicht durch Mini-Korrekturen berührt.

Das System kann unüberwacht bleiben, solange der Preis nicht über das Niveau hinausgeht, bei dem die Aufträge erteilt werden. Eine andere Variante ist, dem Diablo zu folgen und ihn zu schließen, wenn ein gewisser Gewinn (z. B. die Größe eines Schritts) erreicht ist, mit anschließender erneuter Umschichtung der Aufträge, oder nur einmalig mit Gewinn zu schließen.

 

Korrektur im Skript: Es gab einen falschen Offset für den Spread bei Sell Limit Orders:

// Diablo v13.02.12
#property copyright "Jon Katana"
#property show_inputs
extern int Step=0,Spread=0,Levels=0;
extern double Up=0,Vol=0;
int start()
{for(int i=0;i<(Levels);i++)
{OrderSend(Symbol(),OP_BUYSTOP,Vol,Up+(i*Step+Spread)*Point,0,Up+(i-1)*Step*Point,0,0,0);
OrderSend(Symbol(),OP_SELLSTOP,Vol,Up-(i+1)*Step*Point,0,Up-(i*Step-Spread)*Point,0,0,0);
OrderSend(Symbol(),OP_SELLLIMIT,Vol,Up+i*Step*Point,0,Up+((i+1)*Step+Spread)*Point,Up-(Step*(i+1)-Spread)*Point,0,0);
OrderSend(Symbol(),OP_BUYLIMIT,Vol,Up-((i+1)*Step-Spread)*Point,0,Up-(i+2)*Step*Point,Up+i*Step*Point,0,0);}
return(0);}
 

extern int Step=0,Spread=0,Levels=0;
extern double Up=0,Vol=0.

Welche Parameter muss ich hier eingeben, damit es funktioniert?

 
Warum nicht die UP-Variable asc zuweisen, so dass die Aufträge vom aktuellen Preis aus erteilt werden....
 
#property copyright "Jon Katana"
#property show_inputs
extern int Step=50,Spread=2,Levels=5;
extern double Up=0,Vol=0.1;
int TotalOrders,i;
int start()
{Up=Ask;
        TotalOrders=OrdersTotal();
        for (i=0; i<=TotalOrders; i++){
                 if (OrderSelect(0,SELECT_BY_POS)==true){
                    if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,5,Red);
                    if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
                    if (OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket(),Green);
                    if (OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket(),Green);
                    if (OrderType()==OP_SELLLIMIT) OrderDelete(OrderTicket(),Green);
                    if (OrderType()==OP_BUYLIMIT) OrderDelete(OrderTicket(),Green);
                 
                 }
        }

for(int i=0;i<(Levels);i++)
{OrderSend(Symbol(),OP_BUYSTOP,Vol,Up+(i*Step+Spread)*Point,0,Up+(i-1)*Step*Point,0,0,0);
OrderSend(Symbol(),OP_SELLSTOP,Vol,Up-(i+1)*Step*Point,0,Up-(i*Step-Spread)*Point,0,0,0);
OrderSend(Symbol(),OP_SELLLIMIT,Vol,Up+i*Step*Point,0,Up+((i+1)*Step+Spread)*Point,Up-(Step*(i+1)-Spread)*Point,0,0);
OrderSend(Symbol(),OP_BUYLIMIT,Vol,Up-((i+1)*Step-Spread)*Point,0,Up-(i+2)*Step*Point,Up+i*Step*Point,0,0);}
return(0);
}
Ich habe dem Skript eine Bereinigung hinzugefügt. D.h. wenn es offene oder schwebende Aufträge gibt, wird zuerst alles gelöscht und dann die schwebenden Aufträge entsprechend den Parametern eingefügt...
 
IronBird:

extern int Step=0,Spread=0,Levels=0;
extern double Up=0,Vol=0

Welche Parameter müssen hier eingegeben werden, damit es funktioniert?

Schritt - Schritt zwischen den Aufträgen in Punkten (z. B. 20 für einen vierstelligen Auftrag oder 200 für einen fünfstelligen);

Spread - Spread in Pips (z.B. 2 für vier Ziffern oder 20 für fünf Ziffern);

Ebenen - die Anzahl der Ebenen, auf denen die Aufträge erteilt werden (z. B. 20);

Up - eine Linie über dem Preis, von der aus die Platzierung von Aufträgen nach oben beginnt (Aufträge werden automatisch mit einem Versatz von Step von dieser Linie platziert);

Vol - Auftragsvolumen (zum Beispiel 0,1).

 
nikelodeon:
Warum weisen wir die Variable UP nicht asc zu, so dass die Bestellungen ab dem aktuellen Preis aufgegeben werden....

Aus zwei Gründen:

1) Aufträge können nicht ab einem bestimmten Niveau (Widerstand, Unterstützung, Fibonacci, Rabbit...) erteilt werden.

2) Es gibt Dutzende von Aufträgen, und sie werden nicht sofort erteilt. Während dieser Zeit kann Ask vom ursprünglichen Wert abweichen, wodurch sich die Orte, an denen die Aufträge platziert werden, sowie deren Take Profit und Stop Loss unvorhersehbar verschieben. Dies ermöglicht es dem Handelszentrum, Aufträge auf Niveaus zu eröffnen, die nicht von einem Paar stammen, aber separate Aufträge zu "ziehen", ohne den zweiten Auftrag des Paares abzufangen, und sie dann zu Verlusten zu treiben, was das gesamte System zerstören würde.

 
JonKatana:

Aus zwei Gründen:

1) Aufträge können nicht ab einem bestimmten Niveau (Widerstand, Unterstützung, Fibonacci, Rabbit...) erteilt werden.

2) Es gibt Dutzende von Aufträgen, und sie werden nicht sofort erteilt. Während dieser Zeit kann Ask vom ursprünglichen Wert abweichen, wodurch sich die Orte, an denen die Aufträge platziert werden, sowie deren Take Profit und Stop Loss unvorhersehbar verschieben. Dies ermöglicht es dem Handelszentrum, Aufträge auf Niveaus zu eröffnen, die nicht von einem Paar stammen, aber separate Aufträge zu "ziehen", ohne den zweiten Auftrag des Paares zu erfassen, und sie dann in Verluste zu treiben, was das ganze System ruiniert.

Sie können die ersten beiden Aufträge mit dem aktuellen Preis festlegen und die Preise der anderen Aufträge relativ zu den Preisen des ersten Auftrags berechnen. Bei den ersten beiden Aufträgen kann es sich um Marktaufträge handeln.
Grund der Beschwerde: