Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Expert-Advisors (http://www.expert-advisor.com/forum/forumdisplay.php?f=25)
-   -   EA für Haikin Ashi trading (http://www.expert-advisor.com/forum/showthread.php?t=6827)

berlin 08.11.20 11:57

EA für Haikin Ashi trading
 
hallo ea experten,

ich such einen vieleicht einfachen ea.

er soll folgende kriterien abdecken:
1. timeframe = 1min
2. festgelegte posigrösse
3. beim start des ea´s öffnet er in sekunde 55 einen trade in richtung der kerzenfarbe
4. automatischer SL 1,5 fache der atr
5. schliesst den trade (wenn nötig auch schon in der nächsten min) wenn sich die folgenden kerzen farbe zur 55zigsten sekunde geändert hat.
6. der nächste trade wird dann in der folgenden minute zur 55zigsten sekunde eröffnet > trade richtung ergibt sich immer aus der kerzen farbe
usw.

sonnige grüsse, berlin

berlin 12.11.20 13:40

erste gehversuche
 
moin ea community,

ich mache meine ersten versuche und scheitere gerade am ersten step. folgenden code hab ich nach anleitung nachgebaut.
finde aber nicht die lösung warum er an den //kommentar posi meckert.

vielleicht kann mir jemand den finalen tip geben woran es liegt.

lieben gruss,
berlin

void OnTick(){

static datetime timestamp;
datetime time = Time(0);
if(timestamp != time){ //wird als fehler angezeigt
timestamp = time;

double lowHigh = iCustom(_Symbol,_Period,"Heiken Ashi.ex4",0,1);
double highLow = iCustom(_Symbol,_Period,"Heiken Ashi.ex4",1,1);
double high = MathMax(lowHigh,highLow);
double low = MathMax(lowHigh,highLow);
double open = iCustom(_Symbol,_Period,"Heiken Ashi.ex4",2,1);
double close = iCustom(_Symbol,_Period,"Heiken Ashi.ex4",3,1);

if(close > open){
Print("Kaufen");

OrderSend(_Symbol,OP_BUY,1.0,Ask,100000,0,0);

}else if(close < open){
Print("Verkaufen");

OrderSend(_Symbol,OP_SELL,1.0,Bid,100000,0,0);

}

Comment("\n High: ",DoubleToString(high,_Digits),
"\n Low: ",DoubleToString(low,_Digits),
"\n Open: ",DoubleToString(open,_Digits),
"\n Close: ",DoubleToString(close,_Digits));

}//wird als fehler angezeigt

Indikator-Trading 12.11.20 16:14

Benutze mal TimeCurrent() anstatt Time(0)

Indikator-Trading 12.11.20 17:22

Ok ich muss mich korrigieren, hatte deinen Code vorher nur kurz am Handy angeschaut.. Nein, da sind leider mehr Fehler drin als ein 5 jähriges Kind zählen könnte...

Hier ohne die Fehler:

Code:

void OnTick()
  {

  static datetime timestamp;
  datetime time = TimeCurrent();
  if(timestamp != time)  //wird als fehler angezeigt
    {
      timestamp = time;

      double lowHigh = iCustom(_Symbol,_Period,"Heiken Ashi.ex4",0,1);
      double highLow = iCustom(_Symbol,_Period,"Heiken Ashi.ex4",1,1);
      double high = MathMax(lowHigh,highLow);
      double low = MathMax(lowHigh,highLow);
      double open = iCustom(_Symbol,_Period,"Heiken Ashi.ex4",2,1);
      double close = iCustom(_Symbol,_Period,"Heiken Ashi.ex4",3,1);

      if(close > open)
        {
        Print("Kaufen");

        OrderSend(_Symbol,OP_BUY,1.0,Ask,100000,0,0);

        }
      else
        if(close < open)
          {
            Print("Verkaufen");

            OrderSend(_Symbol,OP_SELL,1.0,Bid,100000,0,0);

          }

      Comment("\n High: ",DoubleToString(high,_Digits),
              "\n Low: ",DoubleToString(low,_Digits),
              "\n Open: ",DoubleToString(open,_Digits),
              "\n Close: ",DoubleToString(close,_Digits));

Das macht jetzt keine direkten Compilerfehler, ich bin mir aber nicht sicher ob jetzt wirklich Trades ausgelöst werden. Die Slippage kommt mir doch etwas hoch vor, das kann auch zu Fehlern bei der Orderauslösung führen. Du kannst dir natürlich auch professionellere Hilfe holen, als hier bei 0 anzufangen um deinen EA zusammen zu bekommen...

traderdoc 12.11.20 18:15

Aus meiner Sicht ist
if(timestamp != time)
überflüssig, weil diese Abfrage mit jedem neuen Tick true ergibt.

double low = MathMax(lowHigh,highLow);
soll sicherlich double low = MathMin (lowHigh,highLow);
sein

Hier würde ich fast sagen, dass "Heiken Ashi.ex4" nicht als Name erkannt wird, sondern nur "Heiken Ashi".

Ja, Slippage muss definitiv kleiner sein!

Ob die Indikator-Buffer den Variablen richtig zugeordnet wurden, kann ich aus Unkenntnis des Indikator-Codes nicht abschließend beurteilen.

traderdoc

berlin 12.11.20 19:22

vielen dank für die antworten! habs angepasst..dennoch tauchen die selben feheler auf
1. hier > ausschnitt:
void OnTick(){ unbalanced parentheses

static datetime timestamp;
datetime time = TimeCurrent();
if(timestamp != time) //wird als fehler angezeigt
{
timestamp = time;

2. hier > ausschnitt:
Comment("\n High: ",DoubleToString(high,_Digits),
"\n Low: ",DoubleToString(low,_Digits),
"\n Open: ",DoubleToString(open,_Digits),
"\n Close: ",DoubleToString(close,_Digits));

} unexpected end of Programm

hab schon versucht die klammer einfach wegzunehmen..mhh

berlin 12.11.20 19:24

Zitat:

Zitat von Indikator-Trading (Beitrag 44669)
Ok ich muss mich korrigieren, hatte deinen Code vorher nur kurz am Handy angeschaut.. Nein, da sind leider mehr Fehler drin als ein 5 jähriges Kind zählen könnte...

Hier ohne die Fehler:

Code:

void OnTick()
  {

  static datetime timestamp;
  datetime time = TimeCurrent();
  if(timestamp != time)  //wird als fehler angezeigt
    {
      timestamp = time;

      double lowHigh = iCustom(_Symbol,_Period,"Heiken Ashi.ex4",0,1);
      double highLow = iCustom(_Symbol,_Period,"Heiken Ashi.ex4",1,1);
      double high = MathMax(lowHigh,highLow);
      double low = MathMax(lowHigh,highLow);
      double open = iCustom(_Symbol,_Period,"Heiken Ashi.ex4",2,1);
      double close = iCustom(_Symbol,_Period,"Heiken Ashi.ex4",3,1);

      if(close > open)
        {
        Print("Kaufen");

        OrderSend(_Symbol,OP_BUY,1.0,Ask,100000,0,0);

        }
      else
        if(close < open)
          {
            Print("Verkaufen");

            OrderSend(_Symbol,OP_SELL,1.0,Bid,100000,0,0);

          }

      Comment("\n High: ",DoubleToString(high,_Digits),
              "\n Low: ",DoubleToString(low,_Digits),
              "\n Open: ",DoubleToString(open,_Digits),
              "\n Close: ",DoubleToString(close,_Digits));

Das macht jetzt keine direkten Compilerfehler, ich bin mir aber nicht sicher ob jetzt wirklich Trades ausgelöst werden. Die Slippage kommt mir doch etwas hoch vor, das kann auch zu Fehlern bei der Orderauslösung führen. Du kannst dir natürlich auch professionellere Hilfe holen, als hier bei 0 anzufangen um deinen EA zusammen zu bekommen...

es wird auf professionelle hilfe hinauslaufen. möchte gerne zuerst nen ersten eindruck von dem ganzen bekommen.

traderdoc 12.11.20 20:07

Zitat:

Zitat von berlin (Beitrag 44671)
vielen dank für die antworten! habs angepasst..dennoch tauchen die selben feheler auf
1. hier > ausschnitt:
void OnTick(){ unbalanced parentheses

static datetime timestamp;
datetime time = TimeCurrent();
if(timestamp != time) //wird als fehler angezeigt
{
timestamp = time;

2. hier > ausschnitt:
Comment("\n High: ",DoubleToString(high,_Digits),
"\n Low: ",DoubleToString(low,_Digits),
"\n Open: ",DoubleToString(open,_Digits),
"\n Close: ",DoubleToString(close,_Digits));

} unexpected end of Programm

hab schon versucht die klammer einfach wegzunehmen..mhh

Das kommt daher, wenn Code nicht ordentlich strukturiert geschrieben wird.

Da muss einfach eine } unter die letzte Zeile gesetzt werden.
Eigentlich ist das immer ganz einfach: 2 { wurden gesetzt, dann müssen auch 2 } gesetzt werden.

Im Code des vorherigen Posts fehlen sogar 2 }.

traderdoc

RetepM 13.11.20 09:51

Hi,
ich glaube deine Anforderungen sind banal. Du brauchst dafür keine „professionelle“ Hilfe. Bitte beachte, wenn du alle 55 Sekunden den Status einer Kerze checken willst, macht es sicher Sinn, OnTimer() zu verwenden OnTick ist dafür nicht unbedingt geeignet.

Ich habe mal ein ähnliches Tool erstellt, allerdings mit einem Framework. In diesem Kreis möchte ich nicht über Sinn und Zweck eines Frameworks diskutieren, wenn du den Code haben willst, schick mir bitte eine PM.

Grundsätzlich: So wie du dir das vorstellst funktioniert es nicht. Gib dafür bloß kein Geld aus!
Grüße


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:21 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum