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: 43254
Benutzer: 7.220
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: JosephTK
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 9 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 436
Gesamt: 436
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 18.06.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard Werte auf Anfangs-Werte zurück setzen

Hallo.

Der EA im Anhang erhöht beim Schließen einer erfolgreichen Order die Lots. Allerdings soll er das (vorläufig) nur ein mal machen. Welche Wege gibts, den globalen Anfangswert nach 1 oder 2 Erhöhungen sozusagen auf seinen Anfangswert zurück zu setzen?

Anfangswerte sind ganz oben. Wenn die jeweilige Buy / Sell - Order mit Gewinn geschlossen wird, wird ihr jeweiliger Lot-Einsatz mit LotsPlus addiert. Das soll aber (vorläufig) nur ein mal gemacht werden. Bei der nächsten Order sollen wieder die jeweiligen Anfangswerte (0.01) benutzt werden.
Code:
extern double LotsBuy=0.01;
extern double LotsSel=0.01;

extern string esLPOCP1="Lots Buy/Lots Sell";
extern string esLPOCP2="+ LotsPlus";
extern string esLPOCP3="if Order close";
extern string esLPOCP4="with Profit";

extern double LotsPlus=0.01; //
Code:
for(int j=OrdersTotal()-1;j>=0;j--){
  if(OrderSelect(j,SELECT_BY_POS)){
    if(OrderSymbol()==Symbol()){

//////////////////////////////////////////////////////////////////////////////////////////////////////////////

    
    if(OrderMagicNumber()==MN_Sel){


//         Ask - Dist                          Ask + Dist
      if( (CLsel_Lo_D >= OrderOpenPrice()) || (CLsel_Pr_D < OrderOpenPrice()) ){


//          Ask + Dist
        if( CLsel_Pr_D < OrderOpenPrice() )LotsSel = OrderLots() + LotsPlus;


        if(IsTradeAllowed()==true)OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
        if(IsTradeContextBusy()==true)Sleep(Sl_MS);}}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////

    
    if(OrderMagicNumber()==MN_Buy){


//         Bid + Dist                          Bid - Dist
      if( (CLbuy_Lo_D <= OrderOpenPrice()) || (CLbuy_Pr_D > OrderOpenPrice()) ){


//          Bid - Dist
        if( CLbuy_Pr_D > OrderOpenPrice() )LotsBuy = OrderLots() + LotsPlus;


        if(IsTradeAllowed()==true)OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Red);
        if(IsTradeContextBusy()==true)Sleep(Sl_MS);}}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////


} } }
Angehängte Dateien
Dateityp: mq4 LoSh_Dist_v4.mq4 (23,9 KB, 2x aufgerufen)
  #2 (permalink)  
Alt 18.06.20
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Code:
// ( Ask - Dist_Loss ) >= OrderOpenPrice()
   double CLsel_Lo_D = NormalizeDouble(Ask - Dist_Lo *_Point,_Digits);


// ( Ask + Dist_Profit ) < OrderOpenPrice()
   double CLsel_Pr_D = NormalizeDouble(Ask + Dist_Pr *_Point,_Digits);



// ( Bid - Dist_Profit ) > OrderOpenPrice()
   double CLbuy_Pr_D = NormalizeDouble(Bid - Dist_Pr *_Point,_Digits);


// ( Bid + Dist_Loss ) <= OrderOpenPrice()
   double CLbuy_Lo_D = NormalizeDouble(Bid + Dist_Lo *_Point,_Digits);
Dein SL und TP ist für Buy leider verkehrt, so wäre es richtig:
TP: NormalizeDouble((Bid + Dist_Pr *_Point,_Digits);
SL: NormalizeDouble(Bid - Dist_Lo *_Point,_Digits);
  #3 (permalink)  
Alt 18.06.20
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Welche Wege gibts, den globalen Anfangswert nach 1 oder 2 Erhöhungen sozusagen auf seinen Anfangswert zurück zu setzen?
Nun aber zu deiner Frage. Das Einfachste wäre es eine Variable zu nehmen, welches die Initial-Lotgröße beinhaltet. Du könntest anstatt diene Lotgröße immer um den Minimale Lot-Anzahl ja auch über eine Beliebige Lotgröße Erhöhen und die Anzahl der Erhöhungen einfach in einer Integer-Variable speichern.

So zum Beispiel:
Lot = InitalLot + (AnzahlErhöhungen*LotStep);

Auf diese Weise würdest du dann z. B. die Variable AnzahlErhöhungen=0 setzen, wenn du einen Verlust eingefahren hast. Alternativ könntest du auch die Anzahl der Erhöhungen jeweils um 1 reduzieren oder um 1 erhöhen, wenn du einen Verlust, bzw. einen Gewinn hattest.
Ich kann dir davon aber eigentlich nur abraten. Trade lieber jeden Trade mit einem kontant gleichbleibenden Risiko, welcher du auf deine Accoutgröße beziehst (z.B. 1% Risiko pro Trade)
Thema geschlossen

Lesezeichen

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 07:49 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.
-----------------------------------------------------------------------------------------------------------------------------