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: 4483
Beiträge: 40716
Benutzer: 6.866
Aktive Benutzer: 251
Links: 80
Wir begrüßen unseren neuesten Benutzer: hk0163
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- hk0163
vor 2 Tagen
- magnr1
vor 2 Tagen
- boypac007
vor 3 Tagen
- Anja
vor 5 Tagen
- ThaScorp

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 80
Gesamt: 81
Team: 0
Team:  
Benutzer:  traderdoc
Freunde anzeigen

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 2 Wochen
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 950
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)
Mit Zitat antworten
  #2 (permalink)  
Alt vor 2 Wochen
Neues Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 28
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);
Mit Zitat antworten
  #3 (permalink)  
Alt vor 2 Wochen
Neues Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 28
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)
Mit Zitat antworten
Antwort

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 +2. Es ist jetzt 10:42 Uhr.





Die Suchmaschine - Der Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2020 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.
-----------------------------------------------------------------------------------------------------------------------------