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: 4973
Beiträge: 43249
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 667
Gesamt: 667
Team: 0
Team:  
Benutzer:  
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.733
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

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 +1. Es ist jetzt 20:17 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.
-----------------------------------------------------------------------------------------------------------------------------