Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools  
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4046
Beiträge: 38424
Benutzer: 6.349
Aktive Benutzer: 271
Links: 80
Wir begrüßen unseren neuesten Benutzer: kalixa77
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 20 Stunden
- kalixa77
vor einem Tag
- Revilo
vor 6 Tagen
- Evelyn
vor einer Woche
- sanjay_flo...
vor einer Woche
- ekman

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 48
Gesamt: 50
Team: 0
Team:  
Benutzer:  FatSpiderman, Leopold
Freunde anzeigen

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 26.06.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.087
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Evtl. solltestst Du doch mal andere Buffer benutzen, z.B. 0 und 1.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #12 (permalink)  
Alt 26.06.18
Neues Mitglied
 
Registriert seit: Mar 2018
Beiträge: 12
FX4Life befindet sich auf einem aufstrebenden Ast
Standard

Leider geht es auch nicht mit der 0&1



Gesendet von iPhone mit Tapatalk
Mit Zitat antworten
  #13 (permalink)  
Alt 26.06.18
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 683
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Kann er damit eigentlich was anfangen?

"Heiken_Ashi_Smoothed"

Soviel ich weiß, darf nur der korrekte Name des HA eingetragen werden.


Edit:Gibts eigentlich Fehlermeldungen oder Warnungen?
Mit Zitat antworten
  #14 (permalink)  
Alt 26.06.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.087
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Das geht mit Sicherheit:

Code:
double val0, val1;
int HA1_Kerze = 0;

val0 = NormalizeDouble(iCustom(Symbol(), 0, "Heiken_Ashi_Smoothed", HA_MaMethod, HA_MaPeriod, HA_MaMethod2, HA_MaPeriod2, 0, 1), Digits);
val1 = NormalizeDouble(iCustom(Symbol(), 0, "Heiken_Ashi_Smoothed", HA_MaMethod, HA_MaPeriod, HA_MaMethod2, HA_MaPeriod2, 1, 1), Digits);
   
if (val0 < val1) {
   HA1_Kerze = 1;       //blauer HA
} else {
   HA1_Kerze = -1;      //roter HA
}
Ansonsten liegt es wo anders in Deinem Code.

traderdoc

PS: "Kann er damit eigentlich was anfangen?

"Heiken_Ashi_Smoothed"

Soviel ich weiß, darf nur der korrekte Name des HA eingetragen werden."

Das ist der korrekte Name!!
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #15 (permalink)  
Alt 29.06.18
Neues Mitglied
 
Registriert seit: Mar 2018
Beiträge: 12
FX4Life befindet sich auf einem aufstrebenden Ast
Standard

Hi,

ich habe es mit allem möglichen probiert und es will einfach nicht laufen.

1. Es passt nicht zu meinem Indikator-Bild (Heiken_Ashi_Smoothed). Ich habe den Indikator in den Tester (als template) eingebaut, aber das was ich sehe und was der EA macht, das sind zwei verschiedene Welten.

2. Es werden nur buy orders ausgelöst.

Hier einmal der gesamt Code

Code:
//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property version   "1.00"
#property strict

double total,ticket;
double Lots=1.0;
int sl =80;
int tp = 200;
double TrailingStop=150;

double val0,val1;
int HA1_Kerze=0;
int  Digits();
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

   val0 = iCustom(Symbol(), 0, "Heiken_Ashi_Smoothed", 2,4,2,1,0,1);
   val1 = iCustom(Symbol(), 0, "Heiken_Ashi_Smoothed", 2,4,2,1,1,1);

   if(val0<val1)
     {
      HA1_Kerze=1;       //blauer HA
        } else {
      HA1_Kerze=-1;      //roter HA
     }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
//| Prüfen der Anzahl der Orders
//+------------------------------------------------------------------+
   total=OrdersTotal();
   if(total==0)
      //| Buy
      //+------------------------------------------------------------------+
     {
      if(HA1_Kerze==1)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-sl*Point,Ask+tp*Point,NULL,0,0,clrGreen);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES));
            Print("BUY order opend : ",OrderOpenPrice());
           }
         else Print("Error opening BUY Order : ",GetLastError());
        }

      //| Sell
      //+------------------------------------------------------------------+
      if(total==0)
         if(HA1_Kerze==-1)
           {
            ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+sl*Point,Bid-tp*Point,NULL,0,0,clrRed);
            if(ticket>0)
              {
               if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES));
               Print("Sell order opend : ",OrderOpenPrice());
              }
            else Print("Error opening Sell Order : ",GetLastError());

           }
     }
//+------------------------------------------------------------------+
//---Zähler & Close Bedingungen
//+------------------------------------------------------------------+
for(int cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY)
           {
            //Check for Trailling Stop
            //+------------------------------------------------------------------+
            if(TrailingStop>=0)
              {
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Green);
                     return;
                    }
                 }
              }
           }
         else // got to short Position
           {
            //Check for TrailingStop
            //+------------------------------------------------------------------+
            if(TrailingStop>0)
              {
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if(OrderStopLoss()>(Ask+Point*TrailingStop))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                     return;
                    }
                 }
              }
           }
         //+------------------------------------------------------------------+
        } // "else" Close
      //+------------------------------------------------------------------+
     } //"for" Close
//+------------------------------------------------------------------+
  } //"void" Close
//+------------------------------------------------------------------+
Ich bin für jede weitere Unterstützung dankbar!
Mit Zitat antworten
  #16 (permalink)  
Alt 29.06.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.087
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Die Indikatorabfrage gehört auf jeden Fall in die Funktion OnTick(), egal ob direkt per Code oder aufgerufen über eine externe Funktion, z.B. CheckIndicator(). Steht das alles nur! In OnInit(), dann wird die Indikatorabfrage auch nur einmal! durchlaufen.
Diese Funktion braucht auch nur dann aufgerufen zu werden, wenn eine neue Kerze gebildet wird, z.B. per

if (OldTime != Time[0]) {
CheckIndicator();
OldTime = Time[0];
}

Das zweite if (total == 0) ist überflüssig und irgendwas ist auch an der {} Setzung nicht korrekt.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #17 (permalink)  
Alt 30.06.18
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 683
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

double total,ticket;

Muss das nicht int sein?

Lad vielleicht mal hoch.
Mit Zitat antworten
  #18 (permalink)  
Alt 30.06.18
Neues Mitglied
 
Registriert seit: Mar 2018
Beiträge: 12
FX4Life befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
double total,ticket;

Muss das nicht int sein?

Lad vielleicht mal hoch.


Danke MA-EA,

hast recht. Die Wert sind ganze Zahlen.

Und ebenfalls vielen Dank an Traderdoc, denn jetzt läuft die EA
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
heiken_ashi_ma_smoothed


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +2. Es ist jetzt 14:24 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2018 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------