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.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43254
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: 244
Gesamt: 244
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 19.06.17
Mitglied
 
Registriert seit: Jun 2017
Ort: Lyss und Berlin
Beiträge: 31
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);
        }

  
  } 
  #2 (permalink)  
Alt 19.06.17
Mitglied
 
Registriert seit: Jun 2017
Ort: Lyss und Berlin
Beiträge: 31
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
  #3 (permalink)  
Alt 19.06.17
Mitglied
 
Registriert seit: Jun 2017
Ort: Lyss und Berlin
Beiträge: 31
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
  #4 (permalink)  
Alt 19.06.17
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
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.
}
  #5 (permalink)  
Alt 20.06.17
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
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.
  #6 (permalink)  
Alt 21.06.17
Mitglied
 
Registriert seit: Jun 2017
Ort: Lyss und Berlin
Beiträge: 31
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
  #7 (permalink)  
Alt 21.06.17
Mitglied
 
Registriert seit: Jun 2017
Ort: Lyss und Berlin
Beiträge: 31
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)
  #8 (permalink)  
Alt 21.06.17
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
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.
  #9 (permalink)  
Alt 21.06.17
Mitglied
 
Registriert seit: Jun 2017
Ort: Lyss und Berlin
Beiträge: 31
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ü
  #10 (permalink)  
Alt 21.06.17
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
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"?
Thema geschlossen

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 +1. 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.
-----------------------------------------------------------------------------------------------------------------------------