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

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Indikator Werte (http://www.expert-advisor.com/forum/showthread.php?t=6617)

WD2 25.03.20 10:21

Indikator Werte
 
Hallo zusammen,

ich habe einen Indikator(ex4) der mir anzeigt wann ein Trend da ist. Entweder ist das Signal Rot oder Grün. Jetzt möchte ich gerne wenn das Signal 2 Bars lang rot ist ein Short Signal gesetzt wird und wenn das Signal 2 Bars grün ist ein Long Signal. Dabei soll er aber nur ein Signal pro richtung setzten und keine 1000 Eröffnen. Das soll ja mit einer Abfrage bool gehen aber richtig funktinoieren tut es bei mir nicht. Mein Code

Code:

//---
 HMAUP = iCustom(NULL,0,"HMA Dynamic Color",HMALine,false,false,false,1);
 HMADOWN = iCustom(NULL,0,"HMA Dynamic Color",HMALine,false,false,false,2);

  total=OrdersTotal();
  if(total<1)
    {
     
      if(AccountFreeMargin()<(1000*Lots))
        {
        Print("We have no money. Free Margin = ",AccountFreeMargin());
        return;
        }
     
      if(HMAUP == HMAUP && result == true && HMAUP==Open[3])
        {
        ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"macd sample",16384,0,Green);
        result = false;
        if(ticket>0)
          {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
              Print("BUY order opened : ",OrderOpenPrice());
          }
        else
            Print("Error opening BUY order : ",GetLastError());
        return;
        }
     
      if(HMADOWN == HMADOWN && result == false)
        {
        ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
        result = true;
        if(ticket>0)
          {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
              Print("SELL order opened : ",OrderOpenPrice());
          }
        else
            Print("Error opening SELL order : ",GetLastError());
        }


MA-EA 25.03.20 10:51

Was für ein Indikator?

Edit:Hast Du den Quellcode von dem Indi?

traderdoc 25.03.20 11:20

Er hat doch geschrieben, dass es eine ex4-Datei ist!!!!

traderdoc

RetepM 25.03.20 13:13

Zitat:

Zitat von MA-EA (Beitrag 43436)
Was für ein Indikator?

Edit:Hast Du den Quellcode von dem Indi?

Schade! Jetzt müssen wir auf die Source-Code-Analyse von MA-EA verzichten...
Bedaure ich sehr...

@WD2 wenn es kein Problem macht, poste die ex4-Datei. Ich denke, Dir kann geholfen werden!

WD2 25.03.20 15:32

Liste der Anhänge anzeigen (Anzahl: 1)
Hallo RetepM, anbei die ex4 datei. Ein bisschen habe ich schon probiert aber leider läuft es nicht so wie ich es mir vorstelle.

traderdoc 25.03.20 17:16

In den beiden Zeilen ist keine Kerze angesprochen:

HMAUP = iCustom(NULL,0,"HMA Dynamic Color",HMALine,false,false,false,1);
HMADOWN = iCustom(NULL,0,"HMA Dynamic Color",HMALine,false,false,false,2);

Die 1 und 2 sollten demnach die beiden Buffer sein und dahinter muss nun der Kerzenindex gestellt werden. Wenn auf zwei Bars dieselbe Farbe kommen muss, dann brauchst Du schon mal 2 Variablen für jedes Signal:

HMAUP1 = iCustom(NULL,0,"HMA Dynamic Color",HMALine,false,false,false,1,1);
HMAUP2 = iCustom(NULL,0,"HMA Dynamic Color",HMALine,false,false,false,1,2);

HMADOWN1 = iCustom(NULL,0,"HMA Dynamic Color",HMALine,false,false,false,2,1);
HMADOWN2 = iCustom(NULL,0,"HMA Dynamic Color",HMALine,false,false,false,2,2);

Was soll das
if(HMAUP == HMAUP
und
if(HMADOWN == HMADOWN
ergeben, außer ein permanentes true?

Da müssten dann stehen:

if (HMAUP1 == HMAUP2 ...

nachdem aber oben die beiden Variablen HMAUP1 und HMAUP2 auch wirklich dasselbe UP-Signal haben. Hätten sie beide kein!! Signal würde auch hier ein true folgen.

Das mal als erster Ansatz, auf den Rest kommst Du evtl. alleine oder andere.

traderdoc

RetepM 26.03.20 10:54

Zitat:

Zitat von WD2 (Beitrag 43439)
Hallo RetepM, anbei die ex4 datei. Ein bisschen habe ich schon probiert aber leider läuft es nicht so wie ich es mir vorstelle.

Hi, die gepostete ex4 läuft nicht. Wenn ich mir das im Original anschaue, dann gibt es dort einen Installer, dem ich nicht traue. Deshalb kann ich Dir im Moment nicht weiterhelfen, leider. Wenn ich mehr Zeit gucke ich aber nochmal.
Grüße

WD2 26.03.20 12:09

Liste der Anhänge anzeigen (Anzahl: 1)
Also ich bin etwas weiter gekommen aber jetzt hängt es bei einem Thema. Wenn die 2 sich kreuzen ist das Signal falsch. Also ganz einfach es soll grün sein für ein UP Trend und der HMA Indikator soll denn MA von unten nach oben kreuzen und es sollen höchstens 3 Kerzen davor über dem MA indikator sein bevor der HMA denn MA kreuzt. Übriegens habe ich einen anderen HMA Indikator gefunden der öffentlich ist. Euch beiden aber schonmal danke. @traderdoc @RetepM

Code:

      HMAUP0 = iCustom(NULL,0,"HMA_withAlerts",HMAPeriod,HMAMethod,HMAPrice,false,false,"HMA Color Change",0,0);
      HMAUP1 = iCustom(NULL,0,"HMA_withAlerts",HMAPeriod,HMAMethod,HMAPrice,false,false,"HMA Color Change",0,1);
      HMAUP2 = iCustom(NULL,0,"HMA_withAlerts",HMAPeriod,HMAMethod,HMAPrice,false,false,"HMA Color Change",0,2);

      HMADOWN1 = iCustom(NULL,0,"HMA_withAlerts",HMAPeriod,HMAMethod,HMAPrice,false,false,"HMA Color Change",1,1);
      HMADOWN2 = iCustom(NULL,0,"HMA_withAlerts",HMAPeriod,HMAMethod,HMAPrice,false,false,"HMA Color Change",1,2);
     
      MA1    = iMA(NULL,0,MAPeriod,0,MODE_EMA,PRICE_CLOSE,1);
      MA2    = iMA(NULL,0,MAPeriod,0,MODE_EMA,PRICE_CLOSE,2);

      double HMA    = (HMAUP1 == HMAUP2);
      double MA    = (HMAUP0 > MA1);
     
      if(HMAUP1 == HMAUP2 && HMAUP0 > MA1)
      {Comment("HMAUP is up");}



Alle Zeitangaben in WEZ +2. Es ist jetzt 19:45 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