Autor Thema: Will EA erstellen, wer hilft mir?  (Gelesen 560 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

  • Buchstabensortierer
  • ***
    • Beiträge: 5
    • Karma: +0/-0
    • Mitglied seit:
      28 Nov 2011

  • Stop
Will EA erstellen, wer hilft mir?
« am: November 29, 2011, 00:30:10 am »
Hallo zusammen,

ich brauche ein wenig Hilfe in der Erstellung eines EAs und hoffe Ihr könnt mir helfen.
Hier mein Grundgerüst:
Ich will den Markt Rastern und zwar.
Soll der EA eine Long Order aufnehmen, wenn er von einem Hochpunkt einer Periode z.B. 100 Punkte entfernt ist. Dieses Long direkt versehen mit einem TP von 100 Punkten. Er soll ferner immer einen neue Buy Order eingehen, wenn zum einen diese Bedingung wieder erfüllt ist aber die andere Order mindestens 100 Punkte entfernt ist.

Ich sammele also immer wieder eine Order ein, wenn der Markt zurück fällt, um Sie nur mit Gewinn zu verkaufen, sie wird nicht ausgestoppt. Ich will damit den Dow handeln und vielleicht auch andere. Wäre auch interessant die Shortseite zu betrachten, aber das kann ich mir dann selber stricken, wenn long schonmal funktioniert.

Bisher habe ich gedacht ich könnte mir den Markt rastern und dem Trade eine Magicnumber zuordnen, die den Bereich angibt. z.B. Wenn der Kurs zum Kauf zwischen 11500 und 11400 liegt, dann Magicnumber =  11500. Aber irgendwas funktionier halt nicht. Es hätte halt jeder Trade eine andere Magicnumber.

Mein Code aus dem EA ist:
if ((PRICE_OPEN>Rastergrundpreis-5*AbstandRaster) && (PRICE_OPEN<Rastergrundpreis-6*AbstandRaster)) MagicNumber=StartMagicNumber+Rastergrundpreis-AbstandRaster;...

in dem oben genannten Fall, wäre Rastergrundpreis 12000 (Dowpunkte)
AbstandRaster = 100
StartMagicNumber= irgendeine x beliebige Zahl um später EA unterscheiden zu können.
Das Raster wird dabei Fortgeführt mit 7*Abstand... 8*Abstand.... usw.


Meine Frage. Mit welcher Funktion kann ich prüfen ob bereits eine Order mit der Magicnumber besteht, um nicht noch eine Order im gleichen Bereich zu öffnen?

Wenn einer einen anderen Gedanken hat das Problem zu lösen, gerne. Ich muss gestehen, bin noch nicht so fit im Programmieren.
Was die Kauforder betrifft, so ist mir der Code bekannt, ich verwende:

bool IsBuy = (PRICE_OPEN<(High[iHighest(NULL,0,MODE_OPEN,Periode1,0)]-AbstandvomHoch));

sobald, der EA fertig ist, kann ich Ihn auch gerne veröffentlichen, wobei jetzt schon klar ist, dass der EA einen höheren Drawdown haben wird. Aber um das berechnen zu können, wäre es wichtig ihn erstmal zum laufen zu bringen.

Viele Grüße

Grobi74
 

 


  • Ist Forum süchtig
  • ****
    • Beiträge: 1567
    • Karma: +431/-289
    • Mitglied seit:
      16 Jun 2009

  • Vintage Carbon Backgammon Spinning Bubbles Air Traffic Chief 4 Wheels Madness
    Cryptraider Skidwrx Formula Fun
  • Stop
Re: Will EA erstellen, wer hilft mir?
« Antwort #1 am: November 29, 2011, 08:55:24 am »
Zitat
Meine Frage. Mit welcher Funktion kann ich prüfen ob bereits eine Order mit der Magicnumber besteht, um nicht noch eine Order im gleichen Bereich zu öffnen?

du filterst einfach die order und dann fragst du mit odermagicnumber() ab
The biggest drawdown is ahead of you. (from Joel R.)

aktueller Tetris Rekordhalter!!!!!!!!!!!!!!!!

warum ist mein karma positiv??????? bitte immer auf ein minus mehr als plus

  • Fingerwundtipper
  • ****
    • Beiträge: 313
    • Karma: +44/-1
    • Mitglied seit:
      09 Nov 2009

  • Stop
Re: Will EA erstellen, wer hilft mir?
« Antwort #2 am: November 29, 2011, 09:09:41 am »
Code: Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen
       ...
       total = OrdersTotal();
       for(cnt=total-1;cnt>=0;cnt--)
       {
          OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

          if(OrderMagicNumber()==mgc && OrderSymbol()==Symbol())
          {
                //your code here
          }
       }
       ...

  • Buchstabensortierer
  • ***
    • Beiträge: 5
    • Karma: +0/-0
    • Mitglied seit:
      28 Nov 2011

  • Stop
Re: Will EA erstellen, wer hilft mir?
« Antwort #3 am: Dezember 03, 2011, 21:35:48 pm »
Danke, erstmal für Eure Hilfe. Ich bin ein gutes Stück weiter gekommen. nun fehlt mir dennoch noch eine Möglichkeit auch zu überwachen wieviel Trades offen sind. Die schwierigkeit, alle Trades haben eine unterschiedliche Magicnumber.

Zur Erklärung: Ich kaufe max. eine Position in einem Raster, wenn eine bestimmte B edingung erfüllt ist. Ich schließe die Position erst wenn sie im Gewinn ist mit einem festen TP. Um zu erkennen um im Raster bereits ein Kauf getätigt wurde habe ich eine Magicnumber je Raster zugeordnet. Das funtkionier auch prima. Nun möchte ich aber schauen ob ich den Drawdown noch etwas gesnkt bekomme indem ich nicht zu viele offene Positionen in eine Richtung ansammele. So darf nicht gekauft werden wenn z.B. die offenen Positonen der long Seite x mal größer als die short Seite. Da ich verschiedende Magicnumber s verwende, stellt sich das ein wenig schwierig dar. Hat einer eine Lösung?


  • Gehört zum Inventar
  • ***
    • Beiträge: 1084
    • Karma: +430/-4
    • Mitglied seit:
      31 Dec 2008
  • Broker: RBS

  • Stop
Re: Will EA erstellen, wer hilft mir?
« Antwort #4 am: Dezember 04, 2011, 00:25:01 am »
Die MagicNumbers haben alle eine konstante Differenz zueinander, die genau "Abstand" beträgt. D.h. mit einer Schleife, die alle Trades nach ihrer MagicNumber abfragt, beginnend mit dem Wert "StartMagicNumber+Rastergrundpreis- x*AbstandRaster" mit x = 1 incrementiert bis x = ? werden dann alle gefundenen Trades sortiert nach OP_BUY und OP_SELL. Aus dem Verhältnis der Anzahl Buy-Orders zu Sell -Orders kanst Du dann entsprechende Aktionen ableiten.
So könnte das aussehen:
Code: Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen
int BuyCount=0, SellCount=0;
int total = OrdersTotal();
for (int cnt=total-1;cnt>=0;cnt--) {
   OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
   for (int x=1;x<=?;x++) {
      int mn = StartMagicNumber + Rastergrundpreis - x*AbstandRaster;
      if (OrderMagicNumber()==mn && OrderSymbol()==Symbol()) {
         if (OrderType() == OP_BUY) BuyCount++;
         if (OrderType() == OP_SELL) SellCount++;
      }   
   }
}

Das ? müßte noch von Dir definiert werden, z.B. über die Ermittlung der niedrigsten MagicNumber und darauffolgendem Zurückrechnen über o.g. Formel mitttel der konstanten Differenzen, um die Zahl x zu ermitteln, die zur Festlegung der kleinsten MN benutzt wurde.

Viel Spaß!

traderdoc
« Letzte Änderung: Dezember 04, 2011, 00:28:07 am von traderdoc »
Pokerregel: "Auch bei dem Anschein eines sicheren Gewinnes, muss man ablassen können."

  • Buchstabensortierer
  • ***
    • Beiträge: 5
    • Karma: +0/-0
    • Mitglied seit:
      28 Nov 2011

  • Stop
Re: Will EA erstellen, wer hilft mir?
« Antwort #5 am: Dezember 09, 2011, 01:26:51 am »
[ Für Gäste keine Dateianhänge sichtbar] Danke Ihr seid echt super. Man kommt weiter, ist allerdings echt mühseelig. Ich verwende für meine Berechnung ob ich einen Trade eingehe, den Vergleich von den Hochpunkten und von Tiefpunkten 2er hintereinanderliegender Perioden. Dafür habe ich einen Costum Indikator erstellt, der leider noch nicht perfekt ist. Weil er zeichnet nur mit, aber kann nicht rückwirkend die Daten zeigen. Kann mir den einer so umprogrammieren, dass er auch die vergangenen Zeiten anzeigt?

Zur Erklärung er zeigt eine grüne Linie, das ist die Differenz von den 2 Hochpunkten.
eine Rote Linie, das ist die Differenz von zwei Tiefpunkten.
und eine gelbe Linie, das ist die Summe beider.

Hier der Programmcode:


//+------------------------------------------------------------------+
//|                                                     TrendVers2.mq4 |
//|                       |
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_color3 Yellow




//---- input parameters
extern int Periode1=14;
extern int Periode2=14;
//---- buffers
double BufferHigh[];
double BufferLow[];
double BufferResult[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,BufferHigh);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,BufferLow); 
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,BufferResult);
   
   
//---- name for DataWindow and indicator subwindow label
   short_name="Periode1("+Periode1+");Periode2("+Periode2+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
//----
   SetIndexDrawBegin(0,Periode1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Trend                                                         |
//+------------------------------------------------------------------+
int start()
  {
   int i,counted_bars=IndicatorCounted();
//----
   if(Bars<=Periode1) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=Periode1;i++) BufferHigh[Bars-i]=0.0; BufferLow[Bars-i]=0.0; BufferResult[Bars-i]=0.0;

//----
   i=Bars-Periode1-1;
   if(counted_bars>=Periode1) i=Bars-counted_bars-1;
   while(i>=0)
     {
      BufferHigh = High[iHighest(NULL, 0, MODE_OPEN, Periode1, 0)]-High[iHighest(NULL, 0, MODE_OPEN, Periode2, Periode1)];
      BufferLow = Low[iLowest(NULL, 0, MODE_OPEN, Periode1, 0)]-Low[iLowest(NULL, 0, MODE_OPEN, Periode2, Periode1)];
      BufferResult = High[iHighest(NULL, 0, MODE_OPEN, Periode1, 0)]-High[iHighest(NULL, 0, MODE_OPEN, Periode2, Periode1)] + Low [iLowest(NULL, 0, MODE_OPEN, Periode1, 0)]- Low[iLowest(NULL, 0, MODE_OPEN, Periode2, Periode1)];
      i--;
     }
     
     
   return(0);
  }
//+------------------------------------------------------------------+

  • Global Moderator
  • Ist Forum süchtig
  • *
  • *
  • *
    • Beiträge: 1718
    • Karma: +422/-6
    • Mitglied seit:
      11 Aug 2009
  • Broker: IGMarkets

  • Mars Defense Car Chaos Get Groovy BallsPC Motorrad-Trauma
    Bloons Tower Defense
  • Stop
Re: Will EA erstellen, wer hilft mir?
« Antwort #6 am: Dezember 09, 2011, 09:08:31 am »
Imho funktioniert der obige Indi doch so wie er dort steht gar nicht, oder? Du kannst doch kein Array ohne Angabe eines Index nutzen ^^?
Chleudere den Purchen zu Poden!

  • Buchstabensortierer
  • ***
    • Beiträge: 5
    • Karma: +0/-0
    • Mitglied seit:
      28 Nov 2011

  • Stop
Re: Will EA erstellen, wer hilft mir?
« Antwort #7 am: Dezember 09, 2011, 09:27:33 am »
ich habe mir den auch nur nach meinen Verständnis zusammengebasstelt. Er funktioniert jeweils in dem Fenster, wo ich Ihn reinpacke. Dort zeichnet er ab da, wo er startet, mit. Und wenn der Markt gerade aus war, startet er von neuem mit der Aufzeichnung.



 

Ähnliche Themen

  Betreff / Begonnen von Antworten Letzter Beitrag
68 Antworten
3905 Aufrufe
Letzter Beitrag September 28, 2010, 20:01:12 pm
von substanz
10 Antworten
706 Aufrufe
Letzter Beitrag Januar 08, 2011, 13:40:48 pm
von PriNova
0 Antworten
824 Aufrufe
Letzter Beitrag Januar 15, 2011, 11:19:45 am
von Rainbowtrader
3 Antworten
603 Aufrufe
Letzter Beitrag Januar 20, 2011, 23:21:43 pm
von Divecall
43 Antworten
1324 Aufrufe
Letzter Beitrag März 07, 2011, 15:52:24 pm
von nightyhawk
10 Antworten
1803 Aufrufe
Letzter Beitrag Juni 15, 2011, 02:30:53 am
von hansg
8 Antworten
463 Aufrufe
Letzter Beitrag Dezember 29, 2011, 21:15:53 pm
von divebubble
10 Antworten
194 Aufrufe
Letzter Beitrag März 19, 2012, 12:52:47 pm
von sven


ChartTec´s World Topsites