Probleme beim Schließen, bitte helfen - Seite 4

 
Ais wrote >>

Es ist OK, ohne SL und TP zu arbeiten.
Aber wir brauchen immer noch die Bedingung, die Order im Falle eines Gewinns zu schließen.
Bitte schauen Sie sich die erneuerte Funktion "iSignalClose" an,
https://www.mql5.com/en/forum/124521/page2.
Jetzt ist es natürlich die Bedingung des virtuellen SL.
Aber wir brauchen immer noch die Bedingung des virtuellen TP.
Wir warten auf Ihre Antwort.
:)


Hallo Ais
Wow, das ist großartige Arbeit. Ich danke dir.
Tut mir leid, dass ich gehen musste. Es war Sonntag, und Familienzeit am See und dann Abendessen.
Ich habe das Programm erst vor ein paar Minuten geöffnet, um all die Arbeit zu sehen, die Sie geleistet haben.
Wie kann ich Ihnen nur danken? Ich werde wohl ein wenig Zeit brauchen, um das zu verarbeiten.
Der Gedanke, dass das TP nicht besprochen wurde, war, dass ich eine Aussage oder Funktion nach der anderen zusammenstelle.
eine Anweisung oder Funktion nach der anderen. Ich verstehe nur langsam, wie man ein Programm aufbaut.
Ihre Herangehensweise an dieses Thema verkürzt das Programm und ist professionell. Danke, dass Sie das mit uns teilen.
Die TP und SL werden etwas komplizierter sein. Wie ich schon sagte, lerne ich das langsam.
Ich bin mir nicht sicher, welche Funktion als nächstes gemacht werden soll. Wenn ich darf, werde ich Sie über das Gesamtbild informieren.

1. Mit diesem Programm wollte ich weitere Positionen hinzufügen. Zum Beispiel die Ausgangsposition.
Diejenige, die bereits im Programm enthalten ist, und dann die Positionen 2, 3, 4 und 5.
Hinweis: Ich habe keine Backtests mit mehr als 5 Positionen durchgeführt.

2. Bei neuen Positionen muss der SL mit jeder Position angepasst werden. Wenn der SL erreicht ist, werden alle Positionen
aufgelöst.

3. Jede weitere Position wird um 1/2 ATR von der vorherigen Position abweichen. Ein Kauf wird 1/2 ATR höher sein,
während ein Verkauf um 1/2 ATR niedriger ist.

4. Der SL wird um 1/2 ATR angepasst, und zwar im Gleichschritt mit jeder zusätzlichen Position.
Hinweis: Es kommt der Zeitpunkt, an dem Sie sich in einem anständigen Trend befinden und der Preis über die 1/2 ATR hinausgeht.
Und keine weiteren Positionen mehr wünschen. Es gibt einen Zeitpunkt innerhalb dieses Trends, an dem der Kurs auch einen Punkt erreicht, an dem das niedrigste Tief der letzten zehn Balken höher ist als der letzte SL. In diesem Fall wird der SL um das niedrigste Tief der letzten 10 Balken angepasst. Und wird entsprechend angepasst, nachdem ein Tief aus dem Chart verschoben wurde. Wie Sie sehen können, ist der SL kein Trailing-Stop. Er wird um ATR*2 und dann um das niedrigste Tief der letzten zehn Tage angepasst. (Die erwähnte Situation war eine Kaufbedingung. Eine Verkaufsbedingung ist genau das Gegenteil).

Dies ist das System, das ich von Hand rückgetestet habe.
Ich hatte nicht den Luxus, Backtests mit Codes oder mit einem TP durchzuführen. Vielleicht kann ich in naher Zukunft einen Blick auf die
Preismuster. Aber im Moment habe ich die Gewinne laufen lassen und viele kleine Verluste in Kauf genommen.

Man hat mir gesagt, ich solle nicht versuchen, zu kompliziert zu sein. Dass ich in kleinen Programmen lernen sollte
und auf ihnen aufbauen. Und genau das versuche ich jetzt zu tun. Ich nehme an, der nächste Schritt wäre, zu lernen
zu lernen, wie man an zusätzlichen Positionen dreht. Dann lernen, wie man den SL anpasst.

Das Geldmanagement könnte bis zum Schluss aufgeschoben werden. Aber es ist so wichtig. Wenn Sie denken, dass ich in die falsche Richtung gehe, bin ich dankbar für
jede Anregung.

Ich hoffe, dass die bereits geleistete Arbeit nicht durch zusätzliche Schritte behindert wird.
Ich wusste nur nicht, welcher Schritt zuerst getan werden sollte, oder was danach kommen sollte.

Vielen Dank für alles.
Ich bewundere Ihre Verbesserungen. Ich werde sicher wiederkommen, auch mit weiteren Fragen. Es gibt viel zu lernen mit dem, was Sie gegeben haben.
Prost
 

Hallo Huckleberry,

Der beste Dank:
"
Hallo Ais
Wow, das ist eine tolle Arbeit. Danke.
"
Wirklich und wahrhaftig.

Jetzt werde ich die Berechnungen verbessern.
Genau, ich möchte die ATR nur bei einem neuen Balken berechnen.
So kann ich schneller testen und optimieren.

Und, das wichtigste, meine Absicht war, dass Sie in der Lage sein werden, das Programm leicht zu ändern.
Auch wenn Sie das Programm erweitern und neue Funktionen hinzufügen wollen.
Die Struktur wurde vor allem gemacht, um die Komplexität zu reduzieren.
Ich werde die gleiche Struktur in naher Zukunft für große Programme verwenden.

Was die Handelsstrategie betrifft, so habe ich sie nur flüchtig studiert.
Ich bin mir sicher, dass eine Vielzahl von Strategien funktionieren kann und muss.

Ich würde Ihnen gerne helfen, die Struktur zum besseren Verständnis zu studieren.

Beste Grüße und bis bald

P.S. In Zukunft werde ich nur noch mit virtuellen Takes und Stops arbeiten.

 
////////////////////////////////////////////////////////////////////<         1>
// < Program : Property >                                         //<          >
//   #define   1    " "                                           //<          >
//   #define   2    " "                                           //<          >
// </Program : Property >                                         //<          >
//                                                                //<          >
// < Program : Content >                                          //<          >
//                                                                //<          >
// < Structure             16 elements  in      4 domains       > //<          >
// < 1. Data                7 elements  in      2 domains      /> //<          >
// < 2. Code                9 elements  in      2 domains      /> //<          >
// </Structure             16 elements  in      4 domains       > //<          >
//                                                                //<          >
// < 1. Data                7 =       4 i       3 d       - s   > //<          >
// < 1.1. Input             7 =       4 i       3 d       - s  /> //<          >
// < 1.2. Buffer            - =       - i       - d       - s  /> //<          >
// </1. Data                7 =       4 i       3 d       - s   > //<          >
//                                                                //<          >
// < 2. Code                9 /       - i      82 l       4 o   > //<          >
// < 2.1. Interface         6 /       - i      71 l       4 o  /> //<          >
// < 2.2. Special           3 /       - i      11 l       - o  /> //<          >
// </2. Code                9 /       - i      82 l       4 o   > //<          >
//                                                                //<          >
// </Program : Content >                                          //<          >
     

////////////////////////////////////////////////////////////////////<         2>
// < 1.1. Data : Input >                                          //<          >
//                                                                //<          >
// < 1.1. Input             7 =       4 i       3 d       - s   > //<          >
// <      1. Strategy       4 =       2 i       2 d       - s  /> //<          >
// <      2. Trading        3 =       2 i       1 d       - s  /> //<          >
// </1.1. Input             7 =       4 i       3 d       - s   > //<          >
//                                                                //<          >
// <      1. Strategy 4 >=========================================//<          >
                    int       iBaseLag          = 20            ; //<          >
                    int       iBaseBar          = 1             ; //<          >
                    double    dFactorTP         = 2.0           ; //<          >
                    double    dFactorSL         = 2.0           ; //<          >
// </     1. Strategy 4 >=========================================//<          >
//                                                                //<          >
// <      2. Trading 3 >==========================================//<          >
                    int       iSlippage         = 1             ; //<          >
                    int       iMagic            = 1             ; //<          >
                    double    dLots             = 0.1           ; //<          >
// </     2. Trading 3 >==========================================//<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
// </1.1. Data : Input >                                          //<          >
     
 
////////////////////////////////////////////////////////////////////<         3>
// < 1.2. Data : Buffer >                                         //<          >
//                                                                //<          >
// < 1.2. Buffer            - =       - i       - d       - s   > //<          >
// </1.2. Buffer            - =       - i       - d       - s   > //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
// </1.2. Data : Buffer >                                         //<          >
     

////////////////////////////////////////////////////////////////////<         4>
// < 2.1. Code : Interface >                                      //<          >
//                                                                //<          >
// < 2.1. Interface         6 /       - i      71 l       4 o   > //<          >
// <      1. iNewBar                  - i       4 l       1 o  /> //<          >
// <      2. iSignalOpen              - i      15 l       1 o  /> //<          >
// <      3. iSignalClose             - i      15 l       1 o  /> //<          >
// <      4. iGetTicket               - i       7 l       1 o  /> //<          >
// <      5. iTryOpen                 - i      15 l       - o  /> //<          >
// <      6. iTryClose                - i      15 l       - o  /> //<          >
// </2.1. Interface         6 /       - i      71 l       4 o   > //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
// </2.1. Code : Interface >                                      //<          >
     
 
////////////////////////////////////////////////////////////////////<         5>
// < 2.1.1. Code : Interface : iNewBar >                          //<          >
int       iNewBar ()         //       - i       4 l       1 o     //<          >
{                                                                 //<          >
static    int       iTime_0 = 0                                 ; //<          >
//                                                                //<          >
if      ( iTime_0 < iTime   ( 0 , 0 , 0 ) )                       //<          >
        { iTime_0 = iTime   ( 0 , 0 , 0 ) ;  return ( TRUE  ) ; } //<          >
else    {                                    return ( EMPTY ) ; } //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
}                                                                 //<          >
// </2.1.1. Code : Interface : iNewBar >                          //<          >
     

////////////////////////////////////////////////////////////////////<         6>
// < 2.1.2. Code : Interface : iSignalOpen >                      //<          >
int       iSignalOpen ()     //       - i      15 l       1 o     //<          >
{                                                                 //<          >
static    int                           iFirstRun   = 1         ; //<          >
if    ( ( iNewBar () == TRUE )   ||   ( iFirstRun  == 1 ) )       //<          >
        {                               iFirstRun   = 0         ; //<          >
          int iIndexH = iHighest      ( 0 , 0    , MODE_HIGH  ,   //<          >
                                        iBaseLag , iBaseBar   ) ; //<          >
          int iIndexL = iLowest       ( 0 , 0    , MODE_LOW   ,   //<          >
                                        iBaseLag , iBaseBar   ) ; //<          >
          static double dHigh ; dHigh = High     [ iIndexH    ] ; //<          >
          static double dLow  ; dLow  = Low      [ iIndexL    ] ; //<          >
        } // if                                                   //<          >
//                                                                //<          >
double    dAsk    = MarketInfo        ( Symbol () , MODE_ASK  ) ; //<          >
if      ( dAsk    > dHigh )             return    ( OP_BUY    ) ; //<          >
//                                                                //<          >
double    dBid    = MarketInfo        ( Symbol () , MODE_BID  ) ; //<          >
if      ( dBid    < dLow  )             return    ( OP_SELL   ) ; //<          >
//                                                                //<          >
                                        return    ( EMPTY     ) ; //<          >
}                                                                 //<          >
// </2.1.2. Code : Interface : iSignalOpen >                      //<          >
     
 
////////////////////////////////////////////////////////////////////<         7>
// < 2.1.3. Code : Interface : iSignalClose >                     //<          >
int       iSignalClose ()    //       - i      15 l       1 o     //<          >
{                                                                 //<          >
static    int                           iFirstRun   = 1         ; //<          >
if    ( ( iNewBar () == TRUE )   ||   ( iFirstRun  == 1 ) )       //<          >
        {                               iFirstRun   = 0         ; //<          >
          static double dATR          , dProfit  , dLoss        ; //<          >
          dATR        = iATR ( 0 , 0  , iBaseLag , iBaseBar   ) ; //<          >
        } // if                                                   //<          >
//                                                                //<          >
double    dDelta  = OrderOpenPrice () - OrderClosePrice ()      ; //<          >
//                                                                //<          >
if      ( OrderType ()     == OP_BUY  )                           //<          >
        { dProfit = -dDelta ; dLoss  =  dDelta                ; } //<          >
else if ( OrderType ()     == OP_SELL )                           //<          >
        { dProfit =  dDelta ; dLoss  = -dDelta                ; } //<          >
else                                    return    ( EMPTY     ) ; //<          >
//                                                                //<          >
if      ( dProfit > dATR * dFactorTP )  return    ( TRUE      ) ; //<          >
if      ( dLoss   > dATR * dFactorSL )  return    ( TRUE      ) ; //<          >
                                        return    ( EMPTY     ) ; //<          >
}                                                                 //<          >
// </2.1.3. Code : Interface : iSignalClose >                     //<          >
     

////////////////////////////////////////////////////////////////////<         8>
// < 2.1.4. Code : Interface : iGetTicket >                       //<          >
int       iGetTicket ()      //       - i       7 l       1 o     //<          >
{                                                                 //<          >
for     ( int i   = OrdersTotal () - 1 ; i >= 0 ; i -- )          //<          >
        {                                                         //<          >
          if      ( OrderSelect ( i , SELECT_BY_POS ) == TRUE   ) //<          >
          if      ( OrderMagicNumber ()               == iMagic ) //<          >
                                      return ( OrderTicket () ) ; //<          >
        } // for                                                  //<          >
                                      return ( EMPTY          ) ; //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
}                                                                 //<          >
// </2.1.4. Code : Interface : iGetTicket >                       //<          >
     
 
////////////////////////////////////////////////////////////////////<         9>
// < 2.1.5. Code : Interface : iTryOpen >                         //<          >
int       iTryOpen ()        //       - i      15 l       - o     //<          >
{                                                                 //<          >
int       iCommand          = iSignalOpen ()                    ; //<          >
if      ( iCommand         == EMPTY  )                return    ; //<          >
if      ( iCommand         == OP_BUY )                            //<          >
        { string    sType   = "Buy"  ;  int  iColor = Blue    ; } //<          >
else    {           sType   = "Sell" ;       iColor = Red     ; } //<          >
//                                                                //<          >
if      ( iCommand         == OP_BUY )  int  iMode  = MODE_ASK  ; //<          >
                                        else iMode  = MODE_BID  ; //<          >
double    dPrice  = MarketInfo ( Symbol () , iMode            ) ; //<          >
//                                                                //<          >
OrderSend  ( Symbol ()       , iCommand             , dLots   ,   //<          >
             NormalizeDouble ( dPrice , Digits )              ,   //<          >
             iSlippage  , 0  , 0 , "" , iMagic , 0  , iColor  ) ; //<          >
//                                                                //<          >
int       iTrap   = GetLastError ()                             ; //<          >
if      ( iTrap  == 0 )                                           //<          >
          Alert   ( sType , " Was a Big Success"              ) ; //<          >
else      Alert   ( sType , " open exception "      , iTrap   ) ; //<          >
}                                                                 //<          >
// </2.1.5. Code : Interface : iTryOpen >                         //<          >
     

////////////////////////////////////////////////////////////////////<        10>
// < 2.1.6. Code : Interface : iTryClose >                        //<          >
int       iTryClose ()       //       - i      15 l       - o     //<          >
{                                                                 //<          >
int       iCommand          = iSignalClose ()                   ; //<          >
if      ( iCommand         == EMPTY  )                return    ; //<          >
if      ( OrderType ()     == OP_BUY )                            //<          >
        { string    sType   = "Buy"  ;  int  iColor = Red     ; } //<          >
else    {           sType   = "Sell" ;       iColor = Blue    ; } //<          >
//                                                                //<          >
if      ( OrderProfit ()    > 0      )  string sAct = "Take"    ; //<          >
                                        else   sAct = "Stop"    ; //<          >
double    dPrice  = OrderClosePrice ()                          ; //<          >
//                                                                //<          >
OrderClose ( OrderTicket ()  , OrderLots ()                   ,   //<          >
             NormalizeDouble ( dPrice , Digits )              ,   //<          >
             iSlippage                              , iColor  ) ; //<          >
//                                                                //<          >
int       iTrap   = GetLastError ()                             ; //<          >
if      ( iTrap  == 0 )                                           //<          >
          Alert   ( sType , " closed with Hard "    , sAct    ) ; //<          >
else      Alert   ( sType , " close exception "     , iTrap   ) ; //<          >
}                                                                 //<          >
// </2.1.6. Code : Interface : iTryClose >                        //<          >
     
 
////////////////////////////////////////////////////////////////////<        11>
// < 2.2. Code : Special >                                        //<          >
//                                                                //<          >
// < 2.2. Special           3 /       - i      11 l       - o   > //<          >
// <      1. init                     - i       1 l       - o  /> //<          >
// <      2. deinit                   - i       1 l       - o  /> //<          >
// <      3. start                    - i       9 l       - o  /> //<          >
// </2.2. Special           3 /       - i      11 l       - o   > //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
// </2.2. Code : Special >                                        //<          >
     

////////////////////////////////////////////////////////////////////<        12>
// < 2.2.1. Code : Special : Init >                               //<          >
int       init    ()         //       - i       1 l       - o     //<          >
{                                                                 //<          >
Alert   ( ""               , "Start " , UninitializeReason () ) ; //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
}                                                                 //<          >
// </2.2.1. Code : Special : Init >                               //<          >
     
 
////////////////////////////////////////////////////////////////////<        13>
// < 2.2.2. Code : Special : Deinit >                             //<          >
int       deinit  ()         //       - i       1 l       - o     //<          >
{                                                                 //<          >
Alert   ( ""               , "Stop "  , UninitializeReason () ) ; //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
//                                                                //<          >
}                                                                 //<          >
// </2.2.2. Code : Special : Deinit >                             //<          >
     

////////////////////////////////////////////////////////////////////<        14>
// < 2.2.3. Code : Special : Start >                              //<          >
int       start   ()         //       - i       9 l       - o     //<          >
{                                                                 //<          >
// < 2.2.3.1. History data inspection 4 >`````````````````````````//<          >
static    int       iTrigger   = 0       ; if ( iTrigger == 0 ) { //<          >
  if  ( ( iTime ( 0 , 0 , 0 ) == 0                          )     //<          >
  ||    ( iBars ( 0 , 0     )  < iBaseLag     + iBaseBar    ) )   //<          >
          return                         ; else iTrigger  = 1 ; } //<          >
// </2.2.3.1. History data inspection 4 >`````````````````````````//<          >
//                                                                //<          >
// < 2.2.3.2. Main routine 3 >````````````````````````````````````//<          >
int       iTicket           = iGetTicket ()                     ; //<          >
//                                                                //<          >
if      ( iTicket < 0 )       iTryOpen   ()                     ; //<          >
else                          iTryClose  ()                     ; //<          >
// </2.2.3.2. Main routine 3 >````````````````````````````````````//<          >
//                                                                //<          >
// < 2.2.3.3. Exception handler 2 >```````````````````````````````//<          >
int       iTrap   =           GetLastError ()                   ; //<          >
if      ( iTrap   > 0 )       Alert  ( "Exception " , iTrap   ) ; //<          >
// </2.2.3.3. Exception handler 2 >```````````````````````````````//<          >
}                                                                 //<          >
// </2.2.3. Code : Special : Start >                              //<          >
////////////////////////////////////////////////////////////////////<         0>
     
 
Adjust MetaEditor window to see 25 lines x 80 columns.
Use <Page Up> and <Page Down> to scroll the content.

Last edit: 2010.03.16 18:44
State: Ready
     

Dateien:
1_24.mq4  27 kb