Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4
Startseite Registrieren Hilfe Community Kalender Heutige Beiträge Suchen

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4978
Beiträge: 43280
Benutzer: 7.223
Aktive Benutzer: 75
Links: 84
Wir begrüßen unseren neuesten Benutzer: Sundaytrader
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 5 Tagen
- Sundaytrad...
vor 6 Tagen
- TS_6
vor einer Woche
- Mane
vor 3 Wochen
- AlbertZiz
vor 3 Wochen
- michak

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 466
Gesamt: 467
Team: 0
Team:  
Benutzer:  traderdoc
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 16.04.17
Gesperrter Benutzer
 
Registriert seit: Mar 2017
Beiträge: 8
Richertn befindet sich auf einem aufstrebenden Ast
Standard 1 Order pro Signal

Hallo Leute, ich brauch mal Hilfe. Ich möchte wenn sich 2 MA Indikatoren kreuzen entweder Sell oder Buy Order geöffnet wird, das klappt auch ganz gut soweit. Nur jetzt hab ich ein Problem, wenn sich der MA gekreuzt hat, wird z.b. ein Sell Order geöffnet jetzt schließt sich der Sell Order mittels ST und weil die MAs noch immer gekreuzt sind öffnet sich gleich ein neuer Order dies möchte ich aber verhindern. Ein Beispiel: Wenn nach 5 Kerzen kein Signal mehr da ist so öffnet sich auch kein weiterer Order. Ich hab versucht es mit Bars zu realisieren aber irgendwie bekomme ich es nicht hin.

Vielen Dank schonmal im Voraus.

PHP-Code:
input double TakeProfit    =500;
input double StopLoses     =400;
input double Lots          =0.01;
double MagicNumber         2331;
double MA_kurz,MA_lang;
int ticket,total;

void OnTick(void)
   {

   
//Indikatoren.
   
MA_kurz=iMA(Symbol(),0,28,0,MODE_LWMA,PRICE_CLOSE,0);
   
MA_lang=iMA(Symbol(),0,144,0,MODE_LWMA,PRICE_CLOSE,0);
   
      
//Buy oder Sell.
   
total=OrdersTotal();
   if(
total<1)
   {
   
//Prüfen ob genug Geld noch da ist.
   
if(AccountFreeMargin()<(1000*Lots))
     {
        Print(
"We have no money. Free Margin = ",AccountFreeMargin());
        return;
     }
   
   
   
   
      

   
   
//Testen ob ein Buy Signal vorliegt.
   
 
   
if(MA_kurz>MA_lang)

      {
         
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoses*Point,Ask+TakeProfit*Point,"macd sample",MagicNumber,0,Green);
         if(
ticket>0)
           {
               if(
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print(
"BUY order opened : ",OrderOpenPrice());

           }
         else
            Print(
"Error opening BUY order : ",GetLastError());
            return;
            }
            
            

            
      
      
   
//Testen ob ein Sell Signal vorliegt.

   
if(MA_kurz<MA_lang)
      {
         
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoses*Point,Bid-TakeProfit*Point,"macd sample",MagicNumber,0,Red);
         if(
ticket>0)
           {
             if(
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
             Print(
"SELL order opened : ",OrderOpenPrice());

           }
         else
           Print(
"Error opening SELL order : ",GetLastError());
     
      
//Exit
      
return;
      }
      
   
   }
   
   } 
  #2 (permalink)  
Alt 17.04.17
Premium Mitglied
 
Registriert seit: Apr 2015
Beiträge: 422
Raul0 befindet sich auf einem aufstrebenden Ast
Standard

Die einfachste Möglichkeit wäre eine Variable mit Orderabgabe zu setzen, welcher erst wieder bei dem Gegensignal rückgesetzt wird. Somit wird die ganze Zeit keine neue Order gesendet.
Das gleiche auch für die andere Richtung.
__________________

Easy Trading Assistant
  #3 (permalink)  
Alt 17.04.17
Gesperrter Benutzer
 
Registriert seit: Mar 2017
Beiträge: 8
Richertn befindet sich auf einem aufstrebenden Ast
Standard

Und wie realisiere ich das am besten? Gibt es ein Code Schnipsel woran ich mich orientieren kann?
  #4 (permalink)  
Alt 17.04.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Richertn Beitrag anzeigen
Hallo Leute, ich brauch mal Hilfe. Ich möchte wenn sich 2 MA Indikatoren kreuzen entweder Sell oder Buy Order geöffnet wird, das klappt auch ganz gut soweit. Nur jetzt hab ich ein Problem, wenn sich der MA gekreuzt hat, wird z.b. ein Sell Order geöffnet jetzt schließt sich der Sell Order mittels ST und weil die MAs noch immer gekreuzt sind öffnet sich gleich ein neuer Order dies möchte ich aber verhindern. Ein Beispiel: Wenn nach 5 Kerzen kein Signal mehr da ist so öffnet sich auch kein weiterer Order. Ich hab versucht es mit Bars zu realisieren aber irgendwie bekomme ich es nicht hin.

Vielen Dank schonmal im Voraus.
So könnte das aussehen.

Code:
input double TakeProfit   = 500;
input double StopLoses    = 400;
input double Lots         = 0.01;
double MagicNumber        = 2331;

double MA_kurz1, MA_kurz2, MA_lang1,  MA_lang2;
int ticket, total;
datetime OldBar;

void OnTick(void) {
   if (OldBar != Time[0]) {
      //Indikatoren.
      MA_kurz1 = iMA(Symbol(), 0, 28,  0, MODE_LWMA,PRICE_CLOSE, 1);
      MA_lang1 = iMA(Symbol(), 0, 144, 0, MODE_LWMA,PRICE_CLOSE, 1);
      MA_kurz2 = iMA(Symbol(), 0, 28,  0, MODE_LWMA,PRICE_CLOSE, 2);
      MA_lang2 = iMA(Symbol(), 0, 144, 0, MODE_LWMA,PRICE_CLOSE, 2); 

      total = OrdersTotal();
      if (total == 0) {
         //Prüfen ob genug Geld noch da ist.
         if (AccountFreeMargin() < 1000*Lots) {
            Print("We have no money. Free Margin = ", AccountFreeMargin());
            OldBar = Time[0];
            return;
         }

         //Buy
         if ( MA_kurz2 < MA_lang2 && MA_kurz1 > MA_lang1) {
            ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, NormalizeDouble(Ask - StopLoses*Point, Digits),
                        NormalizeDouble(Ask + TakeProfit*Point, Digits), "macd sample", MagicNumber, 0, Green);
            if (ticket > 0) {
               if (OrderSelect(ticket, SELECT_BY_TICKET))
                  Print("BUY order opened : ", OrderOpenPrice());
            } else Print("Error opening BUY order : ", GetLastError());
         }
         
         //Sell.
         if (MA_kurz2 > MA_lang2 && MA_kurz1 < MA_lang1) {
            ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, NormalizeDouble(Bid + StopLoses*Point, Digits),
                        NormalizeDouble(Bid - TakeProfit*Point, Digits), "macd sample", MagicNumber, 0, Red);
            if (ticket > 0) {
               if (OrderSelect(ticket, SELECT_BY_TICKET))
                  Print("SELL order opened : ", OrderOpenPrice());
            } else Print("Error opening SELL order : ", GetLastError());
         } 
      }
      OldBar = Time[0];
   } 
}
Nun denn, es wird nur eine Buy- oder SellOrder geöffnet, wenn:
1. die freie Margin ausreicht und
2. betrachtet direkt nach einem Kerzenwechsel gerade eine MA-Kreuzung stattfand.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #5 (permalink)  
Alt 17.04.17
Gesperrter Benutzer
 
Registriert seit: Mar 2017
Beiträge: 8
Richertn befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank Traderdoc so funktioniert es Perfekt. Echt ein tolles Forum.
Thema geschlossen

Lesezeichen

Stichworte
bar, bars, eine order, ma kreuzen, moving average, mql4, programmierung, programmierung metatrader, programmierung mql4, signal


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 16:55 Uhr.





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