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: 4731
Beiträge: 42204
Benutzer: 7.087
Aktive Benutzer: 152
Links: 83
Wir begrüßen unseren neuesten Benutzer: lukasbin
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 21:38).
Neue Benutzer:
vor 2 Tagen
- lukasbin
vor 2 Tagen
- Luthergam
vor 3 Tagen
- banaguitar
vor einer Woche
- Denn
vor einer Woche
- Overoll

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 32
Gesamt: 32
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.106
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
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 242
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
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 242
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 02:40 Uhr.





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