Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 5 > Programmierung MQL5

Programmierung MQL5 Hier gehts rund ums Programmieren in MQL5.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3781
Beiträge: 36751
Benutzer: 5.988
Aktive Benutzer: 486
Links: 80
Wir begrüßen unseren neuesten Benutzer: Geccco
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 4 Stunden
- Geccco
vor 10 Stunden
- forexadven...
vor 10 Stunden
- mikedyke
vor 22 Stunden
- dmaha
vor 3 Tagen
- Take2

Onlineuser
'Wer ist online' anzeigen Benutzer: 3
Gäste: 68
Gesamt: 71
Team: 0
Team:  
Benutzer:  AndrewBa, Domke01, Trader93
Freunde anzeigen

Empfehlungen

Werbung

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 19.06.17
Neues Mitglied
 
Registriert seit: Jun 2017
Ort: Lyss und Berlin
Beiträge: 10
Nefastus befindet sich auf einem aufstrebenden Ast
Standard Was mach ich falsch?

Hallo Community ich finde mein fehler nicht er mach nur Buy Trades und keine Sell´s
Kann mir wer auf die Sprünge helfen?
Danke im vorraus
PHP-Code:
//+--------------------------------------------------------------+
//|                                                             Triple SMA.mq5              |
//|                                                              Marcel David                |
//+-------------------------------------------------------------------+

#include<Trade\Trade.mqh>
CTrade  trade;

// Variablen 
//string Version="Triple SMA 001";
//double Balance=0; // Bruttokontostand
//double Equity=0;  // Nettokontostand
//double Bid=0;     // BidPreis aktuell
//double Ask=0;     // AskPreis aktuell
//double OpenPositionVolume =0; //Positionsvolumen
//int PositionsAnzahl=0; // PositionsAnzahl
//int MaximalePositionsAnzahl=100; //maximale Positionsanzahl

void OnTick()
  {  
   
// Ask Preis holen
   
double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   
   
// Bid Preis holen
   
double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);

   
// 3 Arrays fuer mehrere Preise erstellen
   
double SMA7Array[],SMA50Array[],SMA100Array[];
   
   
// Definition der Eigenschafften fuer den SMA
   
int SMA7Definition iMA (_Symbol,_Period,7,0,MODE_SMA,PRICE_CLOSE);
      
int SMA50Definition iMA (_Symbol,_Period,50,0,MODE_SMA,PRICE_CLOSE);
         
int SMA100Definition iMA (_Symbol,_Period,100,0,MODE_SMA,PRICE_CLOSE);
         
   
// Sortierte Preisarrays von der Aktuellen Kerze abwaerts
   
ArraySetAsSeries(SMA7Array,true);
      
ArraySetAsSeries(SMA50Array,true);
         
ArraySetAsSeries(SMA100Array,true);
         
   
// Definierter EA, eine Lienie, von Kerze 0, 10 Kerzen, in Array speichern
   
CopyBuffer(SMA7Definition,0,0,10,SMA7Array);
      
CopyBuffer(SMA50Definition,0,0,10,SMA50Array);
         
CopyBuffer(SMA100Definition,0,0,10,SMA100Array);
         
   
// Kaufsignal berechnen
   
if (SMA7Array[0]>SMA50Array[0])
      if (
SMA50Array[0]>SMA100Array[0])
      
        {
        
trade.Buy(0.01,NULL,Ask,0,(Ask+10 _Point),NULL);
        }
       
   
// Verkaufsignal berechnen
   
if (SMA7Array[0]<SMA50Array[0])
      if (
SMA50Array[0]<SMA100Array[0])
      
        {
         
trade.Sell(0.01,NULL,Bid,0,(Bid-10 _Point),NULL);
        }

  
  } 
Mit Zitat antworten
  #2 (permalink)  
Alt 19.06.17
Neues Mitglied
 
Registriert seit: Jun 2017
Ort: Lyss und Berlin
Beiträge: 10
Nefastus befindet sich auf einem aufstrebenden Ast
Standard :)

So fehler gefunden^^
man sollte schon im double Bid auch SYMBOL_BID schreiben^^
bis zum nächsten denk fehler
salü euer Nefastus
Mit Zitat antworten
  #3 (permalink)  
Alt 19.06.17
Neues Mitglied
 
Registriert seit: Jun 2017
Ort: Lyss und Berlin
Beiträge: 10
Nefastus befindet sich auf einem aufstrebenden Ast
Standard eine weitere Frage :)

Wie kann ich das so schreiben das er nur EIN Buy und Ein Sell Trade macht und wenn SL/TP ereicht ist wieder ein setzt?

Ich danke für die hilfe muss jetzt Arbeiten gehen bis morgen
euer Nefastus
Mit Zitat antworten
  #4 (permalink)  
Alt 19.06.17
Mitglied
 
Registriert seit: May 2015
Beiträge: 246
next user befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Nefastus Beitrag anzeigen
Wie kann ich das so schreiben das er nur EIN Buy und Ein Sell Trade macht und wenn SL/TP ereicht ist wieder ein setzt?
Dann musst du halt eine Bedingung einfügen, die überprüft, ob es schon einen Trade gibt. Trifft dies zu, so erstellst du keinen
neuen und überprüfst dann, ob der SL/TP vom besagten Trade erreicht wurde.
Ein typischer Schalter.

Code:
bool schalter = false;

...
...

// Kaufsignal berechnen
if(!schalter)
{
   if(SMA7Array[0] > SMA50Array[0])
      if (SMA50Array[0] > SMA100Array[0])
      {
         trade.Buy(0.01,NULL,Ask,0,(Ask+10 * _Point),NULL);
      }
}
else
{
   //Hier dann Order selektieren und abfragen, ob der Stoploss/Takeprofit erreicht wurde...
   //Sollte nicht schwer sein.
}
Mit Zitat antworten
  #5 (permalink)  
Alt 20.06.17
Benutzerbild von Kronenchakra
Mitglied
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 291
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

Nur so ein kleiner Hinweis: das Handle eines Indikators in der OnTick() jedesmal neu zu erzeugen bremst die Performance enorm. Das gehört in die OnInit()!!!!
Code:
   // Definition der Eigenschafften fuer den SMA
   int SMA7Definition = iMA (_Symbol,_Period,7,0,MODE_SMA,PRICE_CLOSE);
      int SMA50Definition = iMA (_Symbol,_Period,50,0,MODE_SMA,PRICE_CLOSE);
         int SMA100Definition = iMA (_Symbol,_Period,100,0,MODE_SMA,PRICE_CLOSE);
Und warum rückst du das ein???

Die Bezeichnung der Variablen für die Handles würde ich auch anders nennen.
zB: int haSMA7, haSMA50, ha SMA100; // global definiert
Aber das ist Geschmackssache.
__________________
Das Gras wächst nicht schneller wenn man daran zieht
Mit Zitat antworten
  #6 (permalink)  
Alt 21.06.17
Neues Mitglied
 
Registriert seit: Jun 2017
Ort: Lyss und Berlin
Beiträge: 10
Nefastus befindet sich auf einem aufstrebenden Ast
Standard

Warum es ist wie es ist?
Ich bin einer der das erst lernen muss / will
ich bin gelehrnter Schlosser und Schweißer
habe Famile und daher kaum Zeit
Irgend wie muss man ja mal anfangen auch wenn die Performance trunter leiden muss
Mit Zitat antworten
  #7 (permalink)  
Alt 21.06.17
Neues Mitglied
 
Registriert seit: Jun 2017
Ort: Lyss und Berlin
Beiträge: 10
Nefastus befindet sich auf einem aufstrebenden Ast
Standard Frage

Zitat:
Zitat von next user Beitrag anzeigen
Dann musst du halt eine Bedingung einfügen, die überprüft, ob es schon einen Trade gibt. Trifft dies zu, so erstellst du keinen
neuen und überprüfst dann, ob der SL/TP vom besagten Trade erreicht wurde.
Ein typischer Schalter.

Code:
bool schalter = false;

...
...

// Kaufsignal berechnen
if(!schalter)
{
   if(SMA7Array[0] > SMA50Array[0])
      if (SMA50Array[0] > SMA100Array[0])
      {
         trade.Buy(0.01,NULL,Ask,0,(Ask+10 * _Point),NULL);
      }
}
else
{
   //Hier dann Order selektieren und abfragen, ob der Stoploss/Takeprofit erreicht wurde...
   //Sollte nicht schwer sein.
}
reicht das wenn ich if (PositionsTotal()<10) über trade.Buy einsetze?
und sollte ich alles eher in ein Skript schreiben oder in einer Bibliothek setzen?

Geändert von Nefastus (21.06.17 um 08:52 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 21.06.17
Mitglied
 
Registriert seit: May 2015
Beiträge: 246
next user befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Nefastus Beitrag anzeigen
Irgend wie muss man ja mal anfangen auch wenn die Performance trunter leiden muss
Schon ok, jedoch würde ich dir am Anfang schon raten, kurz zu schauen wo die Unterschiede von "OnTick", "OnInit" ect. sind.

Zitat:
Zitat von Nefastus Beitrag anzeigen
reicht das wenn ich if (PositionsTotal()<10) über trade.Buy einsetze?
und sollte ich alles eher in ein Skript schreiben oder in einer Bibliothek setzen?
Ich dachte, du willst immer jeweils nur EINE Order setzen, wieso sollen jetzt bis zu 10 gesetzt werden?
Wenn du eine Order setzen willst, solange es noch keine 10 sind, so würde ich es nicht über "trade.Buy" setzen.
Die beiden if-Abfragen über "trade.Buy" brauchen ja nicht ausgewertet werden, wenn bereits 10 Trades aktiv sind, also ersetze lieber
Code:
if(!schalter)
durch
Code:
if(PositionsTotal() < 10)
Zum zweiten Teil, gerade am Anfang und bei eher kleineren Sachen sind Bibliotheken (ich gehe mal davon aus, du meinst eine Header-Datei, mqh) nicht notwendig.
Mit Zitat antworten
  #9 (permalink)  
Alt 21.06.17
Neues Mitglied
 
Registriert seit: Jun 2017
Ort: Lyss und Berlin
Beiträge: 10
Nefastus befindet sich auf einem aufstrebenden Ast
Standard

danke für die info
PS: die 0 ist ein schreibfehler -_-
kann mann auch Zeit angaben einbauen so wie Handel ab 9 - 18 Uhr und wechsel dann in ein anderes Skript?
bis später salü
Mit Zitat antworten
  #10 (permalink)  
Alt 21.06.17
Mitglied
 
Registriert seit: May 2015
Beiträge: 246
next user befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Nefastus Beitrag anzeigen
PS: die 0 ist ein schreibfehler -_-
War das etwa so gemeint?
Code:
if(PositionsTotal() < 1)
Wenn ja, wieso nutzt du nicht einen Schalter, wie ich bereits erwähnt habe?
Zitat:
Zitat von Nefastus Beitrag anzeigen
kann mann auch Zeit angaben einbauen so wie Handel ab 9 - 18 Uhr
Klar. Schau mal in der Dokumentation. Die entsprechenden Zeiten dann verarbeiten ect...
Zitat:
Zitat von Nefastus Beitrag anzeigen
und wechsel dann in ein anderes Skript?
Wie hier bereits gesagt, wieso packst du es nicht in die "OnInit"?
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
keine sell order, mql5, order, programmierung, programmierung metatrader, programmierung mql5, sell order


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 08:59 Uhr.



spam firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2017 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.
-----------------------------------------------------------------------------------------------------------------------------